Agent discovery resources are available at /.well-known/api-catalog and /openapi.json.
Student Offers API Docs
Public discovery and content endpoints for Student Offers. These routes are intended for agents, integrations, and machine-readable access to public offer data and documentation. Everything is read-only — no API keys, no authentication.
Public APIs
GET /api/offers
Returns the public offers directory as JSON. Supports Accept: text/markdown for a compact markdown export, and ?full=1 for rows that include alternate links, discount codes, and FAQs.
GET /api/v1/offers
The versioned entrypoint — currently a 307 redirect to /api/offers with query parameters preserved. Build integrations against this URL: breaking changes will surface as /api/v2/, and the old version will answer with Deprecation and Sunset headers for at least six months before removal.
GET /api/offers/{id} and /api/offers/by-slug/{slug}
Fetch a single offer by numeric id or URL slug, including the heavy per-offer fields.
<any page>.md or Accept: text/markdown
Every core page and offer has a markdown twin: append .md to the path or send Accept: text/markdown. The list of markdown-enabled paths is in /llms.txt.
GET or POST /mcp
MCP-style JSON-RPC endpoint exposing search_docs and get_page tools for Student Offers documentation and guides. Plain JSON-RPC 2.0 over HTTP — any HTTP client can call it; no MCP session handshake required.
Error model
Documented endpoints return errors as typed JSON, so agents can branch on a stable code instead of parsing prose:
{
"error": {
"code": "not_found",
"message": "No offer exists with that slug.",
"hint": "List all offers via /api/offers to find valid slugs."
}
}Codes: invalid_id, invalid_slug, invalid_json, not_found, payload_too_large, rate_limited, internal_error. The full schema is in /openapi.json.
Rate limits
Public read endpoints allow 60 requests per minute per IP. Every rate-limited response carries RateLimit-Limit, RateLimit-Remaining, and RateLimit-Reset headers (RFC 9331); 429 responses additionally include Retry-After. Self-throttle using these headers — there is no burst allowance.
Discovery Documents
- /.well-known/api-catalog : RFC 9727 API catalog in Linkset JSON format.
- /.well-known/mcp/server-card.json : discovery card for the JSON-RPC agent endpoint.
- /.well-known/agent-skills/index.json : Agent Skills discovery index for Student Offers skill artifacts.
- /skill.md : Product-specific operating guidance for agents.