LMS data API: auth and pagination
Read and change learners, courses, enrolments and results inside your centre.
Who a data key acts as
A data key works inside one centre. A personal key acts as the person who owns it: each endpoint needs the key’s scope and that person’s live EduMark permission, and changes are recorded in the centre’s activity as made by the key, on behalf of that person. An organisation key needs only the scope, acts with a centre administrator’s permissions in its own centre, and its changes are recorded as made by the organisation key. See personal and organisation keys.
The data API never exposes AI proposals as results. GET /v1/results returns only marks a person approved and released.
Pagination
List endpoints take limit (1 to 100) and cursor, and return {"data": [...], "next_cursor": "…", "has_more": true}. Pass next_cursor back as cursor until has_more is false. Many lists also accept updated_since for incremental sync.
let cursor;
do {
const url = new URL('https://api.edumark.ai/v1/learners');
url.searchParams.set('limit', '100');
if (cursor) url.searchParams.set('cursor', cursor);
const page = await (await fetch(url, { headers })).json();
for (const learner of page.data) await upsert(learner);
cursor = page.has_more ? page.next_cursor : undefined;
} while (cursor);Writes
- Creates need an
Idempotency-Key, like AI jobs. PATCHchanges only the fields you send.- Deletes archive or withdraw where EduMark allows it; history is kept.
- Ids are strings and times are ISO-8601 in UTC.