Use the Content Integration API when an external system needs to send existing source content into TutorFlow or retrieve content authored in the TutorFlow UI.
Authentication
Expansion endpoints use a TutorFlow workspace API key.
Authorization: Bearer workspace_api_key
Content-Type: application/json
Idempotency-Key: floco-glossary-a1-2026-07-02Admin export endpoints use the signed-in TutorFlow admin session.
Create expansion
POST /v1/content/integrations/expansions{
"sourceType": "floco",
"requestedOutputs": [
"interactive_module",
"summary_video",
"expanded_quiz"
],
"payload": {
"category": "Vocabulary",
"level": {
"id": "glossary-a1",
"title": "A1 glossary",
"lessons": [
{
"id": "lesson-1",
"type": "term",
"title": "Greetings",
"terms": [
{
"term": "hello",
"meaning": "a greeting",
"example": "Hello, Min."
}
]
}
]
}
}
}The response returns a job with status queued.
Get status
GET /v1/content/integrations/expansions/{jobId}Use this endpoint while the job is queued or processing.
Get result
GET /v1/content/integrations/expansions/{jobId}/resultThe result includes one manifest per output.
{
"job": {
"id": "job-id",
"sourceType": "floco",
"status": "completed"
},
"outputs": [
{
"outputType": "interactive_module",
"resourceType": "module",
"resourceId": "module-id",
"manifest": {
"title": "A1 glossary module",
"urls": {
"publicUrl": "https://tutorflow.io/share/module/share-token"
}
}
}
]
}Export UI-authored content
POST /v1/content/classrooms/{classroomId}/integrations/exports{
"lessonId": "standalone-lesson-id",
"idempotencyKey": "standalone-lesson:standalone-lesson-id"
}This creates a completed Content Integration result for content already authored in the TutorFlow UI.
Webhooks
Subscribe to these events after the polling flow is verified:
content.completedcontent.failed
Webhook payloads include job id, status, source type, requested outputs, and completion time.
Rate limits and billing
- Rate limits follow the workspace API key settings.
- Interactive module, summary video, and expanded quiz generation use the existing TutorFlow billing meters for those content types.
- MP4 rendering is not triggered by Content Integration. Trigger rendering after reviewing generated video scenes.