Resources
Content API Pricing

Content API Pricing

What each Content API call costs in AI Credits, when the charge happens, and how to check the balance first.

On this page

This page is the single source for Content API prices. Other pages link here instead of repeating the numbers.

Content API calls spend the TutorFlow organization's normal AI Credit balance, the same balance shown in TutorFlow Billing and spent by the TutorFlow editor. The prices are the same as in the editor. Agent Platform credits (/v1/platform/**) are a separate balance and are never used as a fallback.

Price list

CallCreditsScope
Every read (GET), including GET /v1/content/credits0content:read
Create, update, and delete of modules, courses, chapters, lessons, videos, scenes, slides, tests, games, and simulations, with content you supply0content:write
Module copy into a course0content:write
Game or simulation version restore0content:write
Expansion job, any outputs (editable drafts; no model is called)0content:generate
Game brief1content:generate
Game build40content:generate
Game revision40content:generate
Simulation brief1content:generate
Simulation build or revision, 2D plan (representation: "2d-canvas")20content:generate
Simulation build or revision, 3D plan (representation: "3d-three")30content:generate
Video render to mp45content:generate
Video render cancel0content:generate

Expansion jobs are free: they turn your source JSON into editable drafts (a module with your text, an empty video, a test with your topic) without calling a model. Before 2026-09-30 each output was priced at 3, 1, and 3 credits. A game's metadata.dimension does not change its price; a simulation's price follows the representation its brief settled, so read it after the brief and before the build.

When the charge happens

CallBalance checkCharge
Game or simulation brief, build, reviseChecked before the stream opens, or before the 202 in async mode. Not enough returns 402.Charged once, after the new version is stored. A run that fails, or a stream you hang up on, costs nothing.
Video renderChecked when the render starts. Not enough returns 402.Charged when the render starts. A render that later fails is not refunded. A video with a scene that has no narration audio is refused with 400 before any charge.

Retrying with the same Idempotency-Key never charges twice: async generation and render requests replay their first response, and expansions return the existing job. See Idempotency.

Check the balance

bash
curl "$TUTORFLOW_API_BASE_URL/v1/content/credits" \
  -H "Authorization: Bearer $TUTORFLOW_CONTENT_API_KEY"
JSON
{
  "credit": 500,
  "overdraftCredit": 0,
  "overdraftLimit": 100,
  "availableCredit": 500,
  "isPaymentFailed": false
}
FieldMeaning
creditThe organization's credit balance.
overdraftCredit, overdraftLimitOverdraft used and allowed. Overdraft applies only to postpaid plans that are not canceled.
availableCreditWhat a priced call can spend now, after payment status and any overdraft allowance. Compare this with the price before a batch.
isPaymentFailedtrue when the organization has a failed payment. Priced calls then return 402 content_payment_failed until it is resolved in TutorFlow Billing.

Payment errors

Statuserror.codeWhat to do
402content_payment_requiredAdd credits in TutorFlow Billing, then retry with the same Idempotency-Key.
402content_payment_failedResolve the failed payment in TutorFlow Billing, then retry.

Retrying a 402 without changing the balance returns 402 again. See Errors.

Was this page helpful?