main branch and lands here as a PR titled docs(api): refresh openapi spec from mahara@<sha>. Browse the API Reference for current endpoint shapes.
How to read this page
- Breaking entries change request or response shapes in ways that require client updates
- Added entries introduce new endpoints, fields, or behaviors
- Changed entries adjust behavior or wording without breaking existing clients
- Fixed entries are bug fixes that align actual behavior with documented behavior
Versioning
The current API version isv1 (path prefix /api/v1/). Breaking changes will introduce /api/v2/ and the old version will remain operational for at least 12 months.
History
Entries below are added at each notable backend release. The team will append to this page over time.2026-07
Breaking
is_unlimitedandmetered_billing_enabledremoved fromGET /api/v1/billing. Every account is now always metered; there is no unlimited plan and no enforcement flag. Thequota_secondsblock gainsover_quota(boolean):truewhen remaining seconds are at or below the start floor, at which point new course launches and preset creation return429 quota_exceededuntil the quota is raised. Clients reading the removed keys should switch toover_quotaandpercent_consumed.
Added
- English questionnaire. The preset questionnaire and course brief are now fully available in English at parity with French: pass
?language=en(defaultfr) on thequestions/*andbrief/*endpoints. Question prompts, help text, answer option labels, and structured field labels all localize.
2026-06 (v2 launch)
Added
-
Preset terminology. Courses are now created under a
preset(one per client company or visual theme). The preset holds the brand, slide style, voice style, and the company sales-profile questionnaire. Two preset types are supported:company(default, full profile) andtheme(branding only, no questionnaire). -
Seconds-based billing quota.
GET /api/v1/billingreturns aquota_secondsblock withquota_seconds,consumed_seconds,remaining_seconds,percent_consumed(0-100),is_unlimited, andmetered_billing_enabled. There is no free tier; all generation consumes from the seconds bucket. See Billing. -
Review checkpoints. The generation pipeline now exposes fine-grained review gates:
source_review,outline_review,slide_review,audio_review,quiz_review,module_video_review,preset_source_review,brand_review. Each can be set to auto-approve (skip) or left as a manual gate at account level (PUT /api/v1/account/review-settings) or per course (GET /api/v1/courses/{id}/review-settings). See Review Checkpoints. -
Sandbox mode.
sk_test_keys enable a no-cost integration environment that returns pre-built demo data without running real generation. Sandbox courses never consume quota. See Sandbox. -
external_refidempotency. Providing the sameexternal_refon a second course-create returns the existing course rather than creating a duplicate. -
Brief question skip. Optional (non-blocking) brief questions can be skipped by setting
"skip": truein the answers payload.
Changed
-
Preset
brand/generateis synchronous. Unlikeslide-style/generateandvoice-style/generate(which return202and require polling),brand/generatereturns the artifact directly in the response. Do not pollsetup-statusafter callingbrand/generate. -
slide-styleandvoice-styleare optional. A preset reachesreadyon brand alone (plus questionnaire forcompanypresets). Slide and voice style generation are refinements, not blockers.
Note
GET /api/v1/courses/{id}/quiz/final and POST /api/v1/courses/{id}/quiz/grade-final exist in the API but are not part of the v1 contract. Their behavior may change before the contract is finalized.