資料
Content Integration FAQ

Content Integration FAQ

Common questions about Content API keys, source JSON, polling, webhooks, and resource control.

Where do I get the bearer token?

Sign in as a TutorFlow admin, call GET /v1/content/organizations, choose the returned organization id, then create a Content API key with POST /v1/content/organizations/{organizationId}/api-keys. The returned apiKey starts with tf_content_. Use it as Authorization: Bearer tf_content_....

How do I know my organization ID?

Call GET /v1/content/organizations with the admin session cookie. The response lists the organizations your admin account can manage for Content Integration. Use the id field from the selected organization.

Why is the key only shown once?

TutorFlow stores only a hash of the key. If the full key is lost, rotate or create a new key.

Can I use the same key for test and production?

Use separate keys. This makes rate limits, revocation, and incident response cleaner.

What payload size should I start with?

Start with one category and one level, or one similarly small content group. Expand after the result manifest and review flow are stable.

What happens if I retry the same idempotency key?

TutorFlow returns the existing job when the key is retried with the same classroom, requested outputs, source type, and payload. If any request content changes, TutorFlow returns 409. Use a new idempotency key for each new source version.

Why is video output not an MP4 immediately?

Content Integration first returns an editable video resource. Trigger MP4 rendering from TutorFlow after review.

Which credits does Content Integration use?

AI-powered expansion uses the TutorFlow organization's normal AI Credits shown in Billing. It does not use Agent Platform credits. An interactive module costs 3 credits, a summary video structure costs 1 credit, and an expanded quiz costs 3 credits. A request for all three costs 7 credits.

Standard /v1/content resource CRUD does not consume AI Credits when the caller supplies the content. Check the balance for a tf_content_ key with GET /v1/content/credits.

Why does /v1/platform/agent/account show a different balance?

/v1/platform/** belongs to the separate Agent Platform. Its creditBalance is not the TutorFlow organization AI Credit balance. Content integrations should use /v1/content/credits and continue calling /v1/content/** endpoints with the tf_content_ key.

How do I export content authored in TutorFlow UI?

Use /v1/content/classrooms/{classroomId}/modules, /v1/content/classrooms/{classroomId}/courses, /v1/content/classrooms/{classroomId}/videos, /v1/content/classrooms/{classroomId}/slides, and /v1/content/classrooms/{classroomId}/tests with the tf_content_ bearer key. The classroom export endpoint is only for legacy standalone lessons that are still addressed through a classroom.

When should I use webhooks instead of polling?

Use polling for the first pilot. Add webhooks after you can create jobs, poll results, and store manifests reliably.

What should I send to support?

Send job id, key prefix, endpoint path, timestamp, idempotency key, final response body, and source JSON only if it can be shared. Never send the full tf_content_ key.