Overview

View as Markdown

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:

https://api.dreamclass.io

Getting access

API access is enabled per account. Contact support@dreamclass.io to request activation for your school.

Once the DreamClass team has enabled it, your API key and school code are available in the DreamClass app under Settings > Integrations:

Authentication

Every request must carry three values, all sent as HTTP headers:

HeaderValueWhere to find it
dreamclass-secret-keyYour API keySettings > Integrations
schoolCodeYour school codeSettings > Integrations
tenantYour tenant codeSee below

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:

curl https://api.dreamclass.io/dreamclassapi/v1/curriculum/schoolperiods/list \
-H "dreamclass-secret-key: YOUR_API_KEY" \
-H "schoolCode: YOUR_SCHOOL_CODE" \
-H "tenant: myaccount"

Errors

Authentication is checked before any endpoint runs, so a missing or incorrect credential fails the same way everywhere: 401 Unauthorized, with one of these messages.

MessageCause
No API key specified!The dreamclass-secret-key header is absent.
Not valid header!The tenant or schoolCode header is absent.
No API key created!No API key has been generated for that school code yet.
API key is not valid!The key does not match the one issued for that school code.

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.
  • PATCH endpoints 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.