Course outlines
A course outline (modules, lessons, quizzes and outcomes) drafted from a brief, your text or a document.
- Price5 credits (50p) per draft
- Typical time15 s to 2 min
- Scope
authoring:write - Runs asA background job
Run course outlines 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.
- Queued202 and a job id, straight away
- ProcessingPoll, stream or wait for a webhook
- SucceededResult and files on the job
Send one of prompt, text or document. The result is portable JSON: a title, summary, learning outcomes and modules, each with lessons of kind lesson (with a first draft of the lesson text), quiz or assignment. Set save_to_lms to also create an unpublished draft course in EduMark as the person who created the key (the key needs courses:write); the result then includes lms_draft.course_id. Outlines are drafts for a person to review.
Requires authoring:write. Costs 5 credits per draft. 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 outlines
POST/v1/authoring/course-outlines
Scope authoring:write
Headers
| Field | Details |
|---|---|
Idempotency-Key | stringRequiredA unique key per new operation; reuse it with the identical body when retrying. |
EduMark-Version | enumAPI version. Defaults to the latest.One of 2026-10-21 |
Request body
| Field | Details |
|---|---|
prompt | string, optionalA brief for the course, for example "A six-week introduction to first aid for warehouse staff".Up to 4,000 characters |
text | string, optionalYour own course material (at most 10,000 words). The outline follows it.Up to 120,000 characters |
document | FileReference or DocumentInput, optionalA PDF, DOCX or TXT to outline: {"file_id"} from POST /v1/files, or inline base64. |
file_iddocument.file_id | stringRequiredThe id returned by POST /v1/files, after POST /v1/files/{id}/complete reported ready.When sending FileReferencePattern ^file_[a-f0-9]{32}$ |
filenamedocument.filename | stringRequiredWhen sending DocumentInputUp to 200 characters |
base64document.base64 | stringRequiredWhen sending DocumentInputUp to 27,962,028 characters |
mime_typedocument.mime_type | string, optionalWhen sending DocumentInputUp to 150 characters |
title | string, optionalThe course title. Suggested from your brief when left out.Up to 200 characters |
audience | string, optionalWho the course is for, for example "New care workers".Up to 500 characters |
goal | string, optionalWhat a learner should be able to do after the course.Up to 2,000 characters |
save_to_lms | booleanAlso create an unpublished draft course in EduMark (needs the courses:write permission) and return its id.Default false |
Responses
| Status | Meaning |
|---|---|
| 202 | Successful Response |
| 400 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 401 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 402 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 403 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 404 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 409 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 410 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 413 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 415 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 422 | Validation Error |
| 429 | Request rejected. Inspect error.code and request_id; failed work is not billed. |
| 503 | Request rejected. Inspect error.code and request_id; failed work is not billed. |