Learning game
A short, polished learning game designed around your material, as a self-contained, sandboxed web page.
- Price4 credits (40p) per app
- Typical time2 min to 7 min
- Scope
media:write - Runs asA background job
Run learning game 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
Aurora designs the game from what the material asks a learner to be able to do (sorting, building, predicting, deciding), then builds it as plain HTML, CSS and JavaScript that passed EduMark's sandbox checks. A round takes three to six minutes, works with keyboard and touch, and respects reduced motion. game.zip holds index.html and manifest.json; serve it in <iframe sandbox="allow-scripts">. At the end of each round the game posts {type: 'edumark-app', event: 'score', data: {score, total}} to the parent page. Send material, or a topic on its own (checked before anything is built).
Requires media:write. Costs 4 credits per app. 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.
Learning game
POST/v1/games
Scope media: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 |
|---|---|
topic | string, optionalA topic to build the game about, when you send no material.Up to 160 characters |
topic_details | string, optionalMore about the topic: level, what to practise.Up to 600 characters |
course_title | string, optionalUp to 160 characters |
title | string, optionalThe material's title.Up to 160 characters |
focus | string, optionalThe concepts the game should practise.Up to 200 characters |
learning_outcomes | array of stringUp to 12 items |
source_text | string, optionalThe material the game teaches (up to 10,000 words).Up to 60,000 characters |
document | FileReference or DocumentInput, optionalThe material as a PDF, DOCX or TXT. |
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 |
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. |