Use this page to find where each route an agent calls lives. The Agent Platform account routes are listed here; content work links to the Content API reference. Terms such as workspace, classroom, and Content key are defined in Terms.
Where each route lives
| Work | API | Base URL | Reference |
|---|---|---|---|
| Courses, modules, tests, slides, videos, games, simulations, evaluations, the learner model, webhooks | Content API | https://api.tutorflow.io/v1/content | Content API Reference |
| Registration, account, balance, top-ups, discovery, health, LTI | Agent Platform | https://api.tutorflow.io/v1/platform | This page |
Content work goes to the Content API, under /v1/content/classrooms/{classroomId}, with a tf_content_ key. {classroomId} is the defaultClassroomId your account returns. The Content API reference lists every route with its scope and success answer, and links its OpenAPI 3.1 description.
The content routes under /v1/platform were removed on 2026-10-16. See Removed content routes.
Authentication
Send a key as Authorization: Bearer <key>. The account routes take a live Content key (tf_content_) with full access, like the one registration and the dashboard issue. A test key gets 403 platform_content_key_too_narrow. A legacy key (tf_platform_) also works on the account routes, and on nothing else. See Authentication.
Agent Platform routes
Paths are under /v1/platform.
Discovery
| Method | Route | Auth | Description |
|---|---|---|---|
GET | /.well-known/agent.json | None | Discovery manifest, pointing at the Content API |
GET | /pricing-catalog | None | Prices per category, in credits and USD, one entry per priced Content API call; see Pricing and Billing. |
Agent self-service
See Agent Self-Service API for bodies and answers.
| Method | Route | Auth | Description |
|---|---|---|---|
POST | /agent/register | None | Create an agent account; returns a tf_content_ key and defaultClassroomId. 5 attempts per IP per rolling hour |
GET | /agent/account | Key | Account, balance, defaultClassroomId, sandboxClassroomId, Content API URLs |
GET | /agent/verify-email | None | Verify the account email. Takes token |
POST | /agent/verify-email/resend | Key | Resend the verification email |
GET | /agent/billing/status | Key | Payment method and balance |
POST | /agent/billing/session | Key | Checkout link for a person. Needs a verified email |
POST | /agent/billing/x402/deposit | Key | USDC deposit address. Needs a verified email |
POST | /agent/billing/x402 | Key | Credit a paid USDC deposit from the x-payment header |
GET | /agent/checkout | None | Validate a checkout token. Used by the checkout page |
POST | /agent/checkout | None | Create the Stripe session. Used by the checkout page |
LTI 1.3
| Method | Route | Auth | Description |
|---|---|---|---|
POST | /lti/registrations | Key | Create an LTI registration |
GET | /lti/registrations | Key | List LTI registrations |
GET | /lti/registrations/:id | Key | Read an LTI registration |
PUT | /lti/registrations/:id | Key | Update an LTI registration |
DELETE | /lti/registrations/:id | Key | Deactivate an LTI registration |
GET, POST | /lti/login/{registrationId} | None | OIDC login initiation for one registration, called by the LMS. Use this one once the registration exists |
GET, POST | /lti/login | None | OIDC login initiation matched by issuer and client_id; refuses a match to more than one registration |
POST | /lti/launch | None | Launch callback, called by the LMS |
GET | /lti/.well-known/jwks.json | None | Public JWKS |
See LTI Registrations, LTI Launch Flow, and LTI Grade Sync.
Health
| Method | Route | Auth | Description |
|---|---|---|---|
GET | /health | Key | Health check that also validates the key. Without a key: 401 platform_invalid_api_key |
MCP
| Transport | URL |
|---|---|
| Streamable HTTP | https://mcp.tutorflow.io/api/mcp |
See MCP Integration.
Dashboard and internal routes
The Agent Platform dashboard uses its own routes, signed in with a TutorFlow session, to manage workspaces, keys, members, usage, and billing. They do not take API keys and are not part of the public API.
Errors
Agent Platform routes answer errors as:
{
"error": {
"code": "platform_invalid_api_key",
"message": "Invalid or missing Platform API key",
"error": "Unauthorized",
"statusCode": 401,
"status": 401
}
}Read code and status. error and statusCode repeat the HTTP status in another form.
Content API routes use content_* codes and add requestId. See Error Handling.
Three answers an agent must handle on every route it calls:
| Status | error.code | Meaning |
|---|---|---|
402 | content_payment_required | Not enough credits for a priced Content API call. Nothing was charged. The error carries billingSessionUrl, emailVerification, and, where USDC payment is enabled, x402. See When credits run out. |
410 | platform_route_removed | A removed /v1/platform content route. See Removed content routes. |
429 | content_rate_limit_exceeded, platform_rate_limit_exceeded | Over the rate limit. Wait Retry-After seconds. See Rate Limiting. |
Removed content routes
These Agent Platform routes were removed on 2026-10-16, together with their edit-token and share-token routes and the token editors. Every method on them answers 410, with any key or none:
{
"error": {
"code": "platform_route_removed",
"message": "This Agent Platform content route was removed. Use the Content API with a tf_content_ key: https://tutorflow.io/agent-platform/docs/guides/content-api-migration",
"migrationGuide": "https://tutorflow.io/agent-platform/docs/guides/content-api-migration",
"status": 410
}
}Do not retry. Call the Content API instead, with a tf_content_ key:
| Removed prefix | Content API replacement |
|---|---|
/v1/platform/courses | /v1/content/classrooms/{classroomId}/courses, /courses/generate |
/v1/platform/modules | /v1/content/classrooms/{classroomId}/modules, /modules/generate |
/v1/platform/tests | /v1/content/classrooms/{classroomId}/tests, /tests/generate |
/v1/platform/slides | /v1/content/classrooms/{classroomId}/slides, /slides/generate |
/v1/platform/videos | /v1/content/classrooms/{classroomId}/videos |
/v1/platform/games | /v1/content/classrooms/{classroomId}/games |
/v1/platform/evaluations | /v1/content/classrooms/{classroomId}/evaluations |
/v1/platform/learners | /v1/content/classrooms/{classroomId}/mastery/{learner}, /concepts |
/v1/platform/webhooks | /v1/content/webhooks |
Every route, one by one, is in Migrating to the Content API.