Introduction
Version 1.0 of the public DreamClass API.
The API gives you programmatic access to your school’s data — admissions, students, curriculum, calendar, attendance, grading and finance — over a single HTTPS endpoint. A companion set of webhooks lets your own systems react to changes in DreamClass as they happen, without polling.
Base URL
Every request goes to the same host:
Getting access
API access is enabled per account. Contact support@dreamclass.io to request activation for your school.
Once it is enabled, an administrator creates API keys in the DreamClass app under Settings > Integrations. Your school code is shown there too.
- Name each key after the integration that uses it, for example “Zapier” or “SIS sync”.
- The full key is shown only once, when it is created. Copy it then and store it securely. DreamClass keeps only a hash of it and cannot show it again. After that, the list shows a masked form (
••••••••••••a1b2) with the date it was created and roughly when it was last used. - If you lose a key, create a new one and revoke the old one.
- New keys start with
dc_live_. Keys issued earlier keep working unchanged.
A key belongs to the school it was created in and only works with that school’s schoolCode.
Rotating a key
A school can have up to 5 active keys at once, so you can rotate without downtime:
- Create a new key.
- Switch your integration to it.
- Revoke the old key. Requests using it are rejected immediately.
Authentication
Every request must carry three values, all sent as HTTP headers:
All three are required on every request, including any that the API reference shows as optional.
Your tenant code is your DreamClass subdomain. If you sign in at https://myaccount.dreamclass.io, your tenant code is myaccount. If your account uses a white-labelled domain, the tenant code is that whole domain — for https://portal.mywebsite.com it is portal.mywebsite.com.
A complete request looks like this:
Errors
Authentication is checked before any endpoint runs. Any missing or incorrect credential returns 401 Unauthorized with the message Invalid API credentials. That covers a missing header, an unknown school code, and a wrong or revoked key. The response deliberately doesn’t say which one, so check all three headers.
Conventions
- Dates are ISO 8601 (
2026-01-31) and timestamps are UTC. - Ids are numeric unless stated otherwise.
- Monetary amounts are decimal values, in the currency configured for your school.
PATCHendpoints update only the fields you send; anything you omit is left unchanged.- Where an endpoint needs a value from elsewhere in the API, its description names the call that returns it.
Where to start
Almost everything in DreamClass is scoped to a School Period — a school year or term. GET /dreamclassapi/v1/curriculum/schoolperiods/list is therefore usually the first call you make: it returns the period ids that the rest of the API expects.
From there, Curriculum gives you the classes and class courses of a period, Students the people enrolled in it, and Fees and Invoices the money owed and collected.
Webhooks
Rather than polling for changes, you can have DreamClass POST to a URL of your choosing whenever data changes. Configure this under Settings > Integrations. See the Webhooks section for the payload format, HMAC signature validation and retry behaviour.
Note that webhooks are requests DreamClass sends to you — the URL shown on each webhook page is a placeholder for your own endpoint, not an address you call.
Using the Postman collection
The collection ships with variables for the three values above. Open its Variables tab, replace YOUR_API_KEY and YOUR_SCHOOL_CODE with your own, and set tenant to your subdomain. server is already set to https://api.dreamclass.io.
