Zinstruct API

Read your school's contacts, products, offers, enrollments and engagement data from your own tools, and get events pushed to you with webhooks.

API access needs the Advanced or Professional plan. Keys can't be created on other plans, and keys made earlier stop working if the workspace moves off them. Compare plans.

Base URL

Every request goes to:

https://app.zinstruct.com

The endpoints sit in 2 families:

Get an API key

  1. Sign in at app.zinstruct.com as the workspace owner.
  2. Open Settings → API keys, name the key after the tool it's for, and click Create key.
  3. Copy the key straight away — it is shown once. Keys are read-only and reach only your own school.

Read your school's data from your own tools.

Authenticating

Every request carries an API key as a bearer token:

Authorization: Bearer YOUR_API_KEY

Create a key at Settings → API keys. The full key is shown once, when you create it. Keys are read-only, reach only your own school, and stop working the moment you revoke them.

Start with GET /api/reporting/v1/health — it proves the key and the header are right before you touch any data.

Conventions

  • Field names are snake_case; timestamps are ISO-8601 in UTC; money is always integer cents, never a decimal.
  • List endpoints return { data, total, page, page_size }. total counts every matching row, not just the page.
  • Paginate with ?page= and ?page_size=. page_size is clamped to 1–100, and defaults to 50.
  • Errors return { "error": { "code", "message" } } with a matching HTTP status. Branch on code — it is stable; message may be reworded.

Rate limits

Requests are limited per key: 600 requests per 60 seconds. Over the limit you get 429 with code rate_limited. Give each integration its own key so one busy tool cannot exhaust another's budget.

Error codes

Branch on error.code. These are every code the API returns:

Versioning

The version is part of every path (/api/public/v1, /api/reporting/v1), so a request names the version it was written against. Webhook payloads carry their own api_version, currently 2026-05-24.

Next