Analytics report

A period's analytics as the Analytics page PDF, or every measure as CSV or Excel.

  • PriceFree
  • Typical time5 s to 2 min
  • Scopereports:read
  • Runs asA background job
Try it

Run analytics report 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.

pdf: the Analytics page report. csv or xlsx: one row per measure.
PDF title.
  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.

PDF: the Analytics page report (marking turnaround, throughput, first-time pass rate, AI agreement). CSV or Excel: one row per measure, with the period before and exactly what each counts. Uses the key creator's analytics access. Free. Download the file from GET /jobs/{job_id}/files/analytics.pdf (or .csv / .xlsx).

Requires reports:read. Free. 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.

Analytics report

POST/v1/reports/analytics

Scope reports:read

Headers

Analytics report: 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

Analytics report: request body
FieldDetails
start_datestring (date)Required
end_datestring (date)Required
formatenumpdf: the Analytics page report. csv or xlsx: one row per measure.One of xlsx, csv, pdfDefault "pdf"
titlestringPDF title.Up to 160 charactersDefault "Analytics report"
partsarray of enumPDF sections: marking turnaround, throughput, first-time pass rate, AI agreement.1 to 4 items
metricsarray of string, optionalCSV/Excel: measures from GET /v1/analytics/metrics. Default: a progress and marking set.1 to 30 items
course_idstring, optionalUp to 200 charactersPattern ^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$
cohortstring, optionalUp to 200 charactersPattern ^[A-Za-z0-9][A-Za-z0-9._:-]{0,199}$

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.