The TutorFlow Content API connects an external content system, such as a CMS, a curriculum database, or your own app, to the content educators build in TutorFlow. It serves two jobs:
- Expand your source JSON. Send existing structured content, such as a category, a level, and its lessons, and TutorFlow creates an interactive module, a summary video plan, and an expanded quiz from it. See Source JSON Expansion.
- Control TutorFlow content. Create, read, update, delete, and sync modules, courses, videos, slides, tests, games, and simulations in a classroom, whether your system or an educator created them. See Resources.
What's new: request ids on every response, updatedSince on every list, key editing and expiry warnings, and an opt-in learners:read scope. See the Changelog.
How it fits together
| Concept | What it is |
|---|---|
| Base URL | https://api.tutorflow.io. Every route is under /v1/content. |
| Content API key | A bearer token that starts with tf_content_, scoped to one organization. Create it in TutorFlow under Settings > Content API. See Keys and Authentication. |
| Scopes | content:read, content:write, content:generate (anything that spends AI Credits), and webhooks:manage. |
| Classroom | Every resource lives in a classroom. Find ids with GET /v1/content/classrooms. A key can be limited to some classrooms. |
| AI Credits | Reads and writes with content you supply are free. Expansions are free. Game and simulation generation and video rendering spend the organization's AI Credits. See Pricing. |
| Webhooks | Signed events for finished jobs, resource changes, builds, and renders. See Webhooks. |
What the API reaches
| Content type | Collection path under /v1/content/classrooms/{classroomId} | Expansion output | Priced generation |
|---|---|---|---|
| Module: one interactive lesson that educators build and assign | /modules | interactive_module | Through expansion |
| Course: chapters and lessons | /courses | None | None |
| Video: an editable scene plan, rendered to mp4 on request | /videos | summary_video | Rendering |
| Slides: a presentation deck | /slides | None | None |
| Test: an assessment with items and scoring | /tests | expanded_quiz | Through expansion |
| Game: a playable web page built from a practice objective | /games | None | Brief, build, revise |
| Simulation: an interactive model learners explore with controls | /simulations | None | Brief, build, revise |
Every route, with its scope and response, is listed once in the API Reference.
Recommended flow
- Create a test key in Settings > Content API with only the scopes you need. See the Quickstart.
- Call
GET /v1/content/creditsto confirm the key works and to read the balance. - Find the target classroom with
GET /v1/content/classrooms. - Create one resource, or submit one small expansion job, with an
Idempotency-Key. - Poll the job or run until it finishes, then store the returned TutorFlow ids and the result manifest next to your own ids.
- Read and update resources by id if your system must stay in sync.
- Register a webhook once polling works, and move to events for completion and change notifications.
Not the Agent Platform
The Content API is for content that people create, review, and manage in TutorFlow classrooms. It uses /v1/content/** and tf_content_ keys, and its resources are scoped to classrooms. The Agent Platform (/v1/platform/**) is a separate API for autonomous AI agent workflows, with its own credentials, workspace-scoped resources, and credit balance. Do not mix the two: a Content API integration never needs a platform key, a workspace id, or a platform URL.
To surface TutorFlow content inside an LMS rather than another content system, see LMS Integration (LTI).
Next steps
- Quickstart: a first successful call in about 5 minutes.
- Keys and Authentication
- API Reference
- Examples: every task in curl, Node.js, and Python.