API reference

The endpoints that actually serve in this build — nothing else.

Authentication

A short-lived bearer token in the Authorization header. Every request is re-evaluated: identity, tenant, scope, permission, visibility, and version state.

A verified token carries: id, identity type, exactly one tenant, and scopes — a missing claim is a full refusal.

GET /v1/me — The caller's identity, roles, and permissions in the current tenant.

Scopes

A scope is a ceiling in the token. A service client gets the intersection of its token scopes and the scopes granted to its account.

Scopes available to service clients
ScopeMeaning
curriculum:readReading curricula, frameworks, grade levels.
outcome:readReading outcomes, skills, standards.
association:readReading graph relations.
alignment:readReading alignments and mapping sets.
evidence:readReading evidence statements and guidance.
webhook:manageManaging your own client's webhook subscription.

Note

A service client may hold five read scopes and webhook:manage — its own webhook subscriptions, granted explicitly, never by default. Any other scope is refused by a database constraint.

Endpoints

Every path below is actually served. The v1 in the path is the contract version, not the knowledge version.

Served read endpoints
MethodPathScopeMeaning
GET/v1/academic-levelscurriculum:readReference data: every country in the world, curricula, subjects, education systems and their grades, and academic levels — for sync.
GET/v1/alignmentsalignment:readCross-curriculum mapping sets and their approved alignments.
GET/v1/associationsassociation:readThe version's internal graph relations.
GET/v1/countriescurriculum:readReference data: every country in the world, curricula, subjects, education systems and their grades, and academic levels — for sync.
GET/v1/curriculacurriculum:readListing curricula and details with each one's latest published version.
GET/v1/curricula/{id}curriculum:readListing curricula and details with each one's latest published version.
GET/v1/curriculum-typescurriculum:readReference data: every country in the world, curricula, subjects, education systems and their grades, and academic levels — for sync.
GET/v1/education-systemscurriculum:readReference data: every country in the world, curricula, subjects, education systems and their grades, and academic levels — for sync.
GET/v1/education-systems/{id}/grade-levelscurriculum:readReference data: every country in the world, curricula, subjects, education systems and their grades, and academic levels — for sync.
GET/v1/evidenceevidence:readAn outcome's evidence bundle: statements, indicators, guidance.
GET/v1/framework-domainscurriculum:readTaxonomy: macro areas, domains, strands, standards.
GET/v1/framework-macroscurriculum:readTaxonomy: macro areas, domains, strands, standards.
GET/v1/framework-outcomesoutcome:readFramework outcomes and details at a release.
GET/v1/framework-outcomes/{id}outcome:readFramework outcomes and details at a release.
GET/v1/framework-standardscurriculum:readTaxonomy: macro areas, domains, strands, standards.
GET/v1/framework-standards/{id}curriculum:readTaxonomy: macro areas, domains, strands, standards.
GET/v1/framework-strandscurriculum:readTaxonomy: macro areas, domains, strands, standards.
GET/v1/framework-versionscurriculum:readFramework releases (MAJOR.MINOR.PATCH).
GET/v1/frameworkscurriculum:readFrameworks, read by id or stable code.
GET/v1/frameworks/applicablecurriculum:readThe frameworks valid per subject and grade for an education system or a country, by the binding rule: custom for the system, then for the country, then general.
GET/v1/frameworks/{id}curriculum:readFrameworks, read by id or stable code.
GET/v1/grade-levelscurriculum:readThe curriculum's reference grade levels (unversioned).
GET/v1/mapping-setsalignment:readCross-curriculum mapping sets and their approved alignments.
GET/v1/mapping-sets/{id}alignment:readCross-curriculum mapping sets and their approved alignments.
GET/v1/outcomesoutcome:readListing outcomes and details, with version pinning and path expansion.
GET/v1/outcomes/{id}outcome:readListing outcomes and details, with version pinning and path expansion.
GET/v1/sourcessource:read:metadataSource metadata only — no reference-only content.
GET/v1/sources/{id}source:read:metadataSource metadata only — no reference-only content.
GET/v1/subject-areascurriculum:readReference data: every country in the world, curricula, subjects, education systems and their grades, and academic levels — for sync.
GET/v1/versionscurriculum:readOne curriculum's versions and their states.
GET/v1/webhookswebhook:manageThis client's own subscriptions — never another client's, never a secret.
POST/v1/webhookswebhook:manageSubscribe an https URL to events; the signing secret is in this answer only.
DELETE/v1/webhooks/{id}webhook:manageDelete a subscription; nothing more is sent to it.
GET/v1/webhooks/{id}webhook:manageThis client's own subscriptions — never another client's, never a secret.
POST/v1/webhooks/{id}/rotate-secretwebhook:manageA new signing secret, in this answer only; the old one stops at once.

Reserved in contract, unserved

These paths are named in the contract but have no route in this build. Do not call them — they will fail.

  • /v1/subjects
  • /v1/skills
  • /v1/standards
  • /v1/search
  • /v1/exports
  • /v1/diffs
  • /v1/overlays
  • /v1/translations
  • /v1/audit-events
  • /v1/tenants

Version pinning

Pass version on every knowledge read, or leave resolution to latest_published — the response always returns the full resolved number.

Pagination

Lists are paginated with limit/cursor markers. Most lists allow up to 100 per page; the reference lists and /v1/frameworks allow up to 200. No numeric page numbers.

Errors · Limits