Skip to main content
By default the generation pipeline pauses at up to three checkpoints for human approval. Each checkpoint lets you inspect the generated artifact, optionally edit or leave a revision note, and approve before the pipeline continues.

The three checkpoints

CheckpointWhen it firesWhat to review
sourcesAfter ingestion, before scene extractionScraped page text, uploaded PDF content, image kits
outlineAfter scene extractionModule structure, scene descriptions, narration plans
slides / audioPer module, after generationGenerated slide images and TTS audio samples
When a checkpoint is active, the course status becomes paused_for_review and current_review indicates which artifact is pending.

How to skip all checkpoints

For unattended, fully automated runs, set every checkpoint to auto-approve once. This is an account-level setting:
curl -X POST "https://api.myustadia.com/api/v1/account/review-settings/all-auto" \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"auto_approve": true}'
This applies to all future courses on the account. You can revert per-checkpoint with PUT /api/v1/account/review-settings.

How to toggle one checkpoint

curl -X PUT "https://api.myustadia.com/api/v1/account/review-settings" \
  -H "Authorization: Bearer sk_test_..." \
  -H "Content-Type: application/json" \
  -d '{"point": "outline", "auto_approve": false}'
Valid point values: sources, outline, slides, audio.

Reviewing the outline

When the course is paused for outline review, fetch the outline:
curl "https://api.myustadia.com/api/v1/courses/$COURSE_ID/outline" \
  -H "Authorization: Bearer sk_test_..."
You have three ways to act:

Approve as-is

curl -X POST "https://api.myustadia.com/api/v1/courses/$COURSE_ID/outline/approve" \
  -H "Authorization: Bearer sk_test_..."

Apply structured edits

Field-level patches applied immediately (no AI regeneration). Use dotted paths.
{
  "edits": [
    { "path": "modules.2.title", "value": "Closing techniques" },
    { "path": "modules.4", "op": "delete" }
  ]
}
Supported paths: course_title, course_description, modules.<n>.title, modules.<n>.description, modules.<n>.scenes.<k>.description, modules.<n>.scenes.<k>.planned_narration_summary.

Leave freeform notes for AI regeneration

{
  "notes": [
    { "note": "Make the tone more direct and add a closing technique to module 3", "scope": "global" }
  ]
}
Notes trigger AI regeneration of the outline. The regenerated artifact returns to paused_for_review for a second look.

Reviewing slides and audio

Each module’s slides and audio go through the same approve/edit/note cycle. Use the per-module endpoints (/slides/approve, /audio/approve) or approve all artifacts for one module in one call (/modules/{n}/approve).

Approving everything at once

When you have multiple pending artifacts across modules, approve them all in one transaction:
curl -X POST "https://api.myustadia.com/api/v1/courses/$COURSE_ID/approve-remaining" \
  -H "Authorization: Bearer sk_test_..."
Optional body: {"artifact_type": "slide"} to limit to one artifact type.

Regen caps

To prevent runaway costs, accounts have a per-course artifact regen cap. When exhausted, posting a note returns 429 regen_cap_reached. The note is still recorded; only the regeneration job is withheld.
Use caseSetting
Quickstart, sandbox testingall-auto: true
Internal courses with no client involvementall-auto: true
Branded courses for paying clientsoutline: false, slides: true, audio: true (manual outline review only)
White-glove engagementsAll checkpoints manual