Resources
Content Integration API

Content Integration API

Create, poll, and retrieve Content Integration jobs for external content systems.

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-02

Admin 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}/result

The 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.completed
  • content.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.