Developers & APIs

Build on the same rails schools operate every day.

Versioned HTTP APIs, webhooks, and interoperability patterns—documented where your deployment exposes them.

Four calls to get oriented

Sample requests with sample names and amounts. The school on your token is the tenant.

Authenticate

  1. Use the API token issued for the school.
  2. Send it as Authorization: Bearer on each request.
  3. GET /api/v1/me/schools confirms which schools that token can see.
GET/api/v1/me/schools
GET /api/v1/me/schools HTTP/1.1
Authorization: Bearer <token>
Accept: application/json

Create a student

  1. POST a student to the people API.
  2. The school on the token is the tenant. Do not pass another school's id.
POST/api/v1/people/students/
POST /api/v1/people/students/ HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
Content-Type: application/json

{"first_name": "Amina", "last_name": "Ngo"}

Record a payment

  1. POST a payment against an invoice the school already issued.
  2. The body is JSON. Money fields are decimal strings.
POST/api/v1/finance/payments/
POST /api/v1/finance/payments/ HTTP/1.1
Authorization: Bearer <token>
Accept: application/json
Content-Type: application/json

{"invoice": "<invoice-id>", "amount": "1000.00"}

Subscribe to a webhook

  1. Register a subscription in Migration Cloud.
  2. Verify the signature with the webhook verifier. Python and JavaScript sources exist; ask us for them, because the PyPI and npm releases are not published yet.
  3. Do not copy a one-off signing snippet from this page.

The offline contract, as the server serves it

  1. This document describes the write queue. It is not a live school queue. Open the live contract
GET/platform/offline-first/contract.json