Course builds

A complete course, with every lesson and quiz written, from your brief and teaching material.

  • Price20 credits (£2.00) per course
  • Typical time60 s to 7 min
  • Scopeauthoring:write
  • Runs asA background job
Try it

Run course builds in the sandbox

No key and nothing to pay. The sandbox returns a realistic example in a couple of seconds; no AI runs and no data is kept.

  1. Queued202 and a job id, straight away
  2. ProcessingPoll, stream or wait for a webhook
  3. SucceededResult and files on the job
Every AI request runs as a background job, so nothing times out.

Aurora plans the course (2 to 6 modules, at most 20 lessons and quizzes), then writes every lesson as varied editor blocks (pages, key terms, tips, tables, worked steps and quick checks) and every quiz as multiple-choice questions. Lessons teach in Aurora's own words from your sources; with only a brief, Aurora uses accurate, mainstream knowledge. The result is portable JSON. Set save_to_lms to also save it as an unpublished draft course in EduMark (the key needs courses:write), ready to review in Course Studio.

Requires authoring:write. Costs 20 credits per course. Send a unique Idempotency-Key; reuse it with the identical body when retrying. Returns 202 with a job: poll GET /jobs/{job_id}, stream GET /jobs/{job_id}/events, or use a signed webhook.

Course builds

POST/v1/authoring/course-builds

Scope authoring:write

Headers

Course builds: headers
FieldDetails
Idempotency-KeystringRequiredA unique key per new operation; reuse it with the identical body when retrying.
EduMark-VersionenumAPI version. Defaults to the latest.One of 2026-10-21

Request body

Course builds: request body
FieldDetails
briefstringWhat the course is, who it is for and anything it must cover, for example "GCSE Biology: photosynthesis, four short lessons with a quiz after each module".Up to 6,000 charactersDefault ""
sourcesarray of BuildSourceUp to 10 sources to teach from. Lessons are written in Aurora's own words and cite the parts they use.Up to 10 items
titlesources[].titlestring, optionalA short name for this source.Up to 200 characters
textsources[].textstring, optionalTeaching text (at most 10,000 words).Up to 120,000 characters
documentsources[].documentFileReference or DocumentInput, optionalA PDF, DOCX or TXT: {"file_id"} from POST /v1/files, or inline base64.
file_idsources[].document.file_idstringRequiredThe id returned by POST /v1/files, after POST /v1/files/{id}/complete reported ready.When sending FileReferencePattern ^file_[a-f0-9]{32}$
filenamesources[].document.filenamestringRequiredWhen sending DocumentInputUp to 200 characters
base64sources[].document.base64stringRequiredWhen sending DocumentInputUp to 27,962,028 characters
mime_typesources[].document.mime_typestring, optionalWhen sending DocumentInputUp to 150 characters
titlestring, optionalThe course title. Aurora suggests one when left out.Up to 200 characters
save_to_lmsbooleanAlso save the course as an unpublished draft in EduMark (needs the courses:write permission) and return its id.Default false

Responses

StatusMeaning
202Successful Response
400Request rejected. Inspect error.code and request_id; failed work is not billed.
401Request rejected. Inspect error.code and request_id; failed work is not billed.
402Request rejected. Inspect error.code and request_id; failed work is not billed.
403Request rejected. Inspect error.code and request_id; failed work is not billed.
404Request rejected. Inspect error.code and request_id; failed work is not billed.
409Request rejected. Inspect error.code and request_id; failed work is not billed.
410Request rejected. Inspect error.code and request_id; failed work is not billed.
413Request rejected. Inspect error.code and request_id; failed work is not billed.
415Request rejected. Inspect error.code and request_id; failed work is not billed.
422Validation Error
429Request rejected. Inspect error.code and request_id; failed work is not billed.
503Request rejected. Inspect error.code and request_id; failed work is not billed.