Skip to main content
The API is organized around two creation paths. Both end at the same place: a generated multi-module video course delivered via signed asset URLs. Create a preset once per client company. Reuse it for every course you build for that company.
Steps 1 to 15 are the one-time preset setup. Steps 16 to 22 are the per-course flow. Once a preset exists, every new course for that company is six API calls (16 to 21) plus delivery fetches.

Preset types

Presets are created with a preset_type field: A theme preset is useful when you need consistent branding across courses but do not need a per-company sales profile.

What gates preset readiness

A preset reaches ready status when:
  • company preset: brand artifact approved and profile questionnaire approved.
  • theme preset: brand artifact approved.
slide-style and voice-style are optional refinements. Approving them improves generation quality but is not required for the preset to reach ready.

Option B: No-preset flow (quick start)

For one-off courses or low-volume use, skip the preset entirely. The brand is auto-derived from the source material.
Use this for the quickstart.

When to use which

You can mix and match: nothing prevents creating no-preset courses on an account that also has presets.

Brief vs preset questions

Two questionnaires exist in the API, do not confuse them:
  • Preset questions (Option A only) capture the company’s sales profile: industry, target buyer persona, pricing model, sales motion. Asked once per preset.
  • Brief questions (both options) capture this course’s intent: target audience, learning objectives, tone. Asked once per course.
Both use the same next + answers loop pattern.

Review checkpoints

By default the pipeline pauses for human approval at up to three checkpoints during generation. See Review Checkpoints for the full model.

Async setup operations

Slide style and voice style generation are queued operations. They return 202 Accepted immediately. Poll GET /api/v1/presets/{id}/setup-status until each artifact reaches ready status before proceeding. Brand generation is synchronous. POST /api/v1/presets/{id}/brand/generate returns the artifact directly in the response body. There is no need to poll setup-status after brand/generate.
Possible statuses: queued, running, ready, failed.