Student Provisioning API — Overview
The Student Provisioning API lets your own systems onboard students automatically. When something happens on your side (a payment on your WordPress or WooCommerce site, a membership activation, a CRM event), one HTTP call creates the student's account, gives them the right course for the right length of time, and emails them a link to sign in.
It works the same from Pabbly Connect, Zapier, Make.com, or any script that can send an HTTP request.
What one call does
- Creates the account, or reuses it if the email already has one.
- Adds the person to your organization.
- Grants the course(s) you name, for the duration you choose:
- by course type (
"courses": ["ielts"]) into your organization's default course for that type, which is created automatically the first time; or - by course id (
"course_ids": [371]) into a specific course or batch you run. - Places starter practice tests in the student's dashboard, if your organization has them switched on.
- Emails the student: a link to set their own password, or the username and password when you choose
password_modeofsetorgenerate. Students who already sign in get a summary of their access.
Repeating a call is always safe: the same email never becomes a second account, and a course that is still running is never granted twice.
How it fits together
Your WordPress / WooCommerce / membership plugin
│ (payment completed, member activated, …)
▼
Pabbly Connect / Zapier / Make.com ← the glue; each just sends an HTTP POST
│
│ POST https://<your-platform-host>/api/v1/provision/student/
│ Header: X-API-Key: <your organization's key>
│ Body: { email, first_name, courses or course_ids, tenure_months, external_ref }
▼
Platform: account → organization → course(s) with an access window → starter tests → email
The words used in these pages
| Term | Meaning |
|---|---|
| API key | A secret that identifies your organization. Every call acts on that organization only. |
| Course type | The exam a course prepares for, such as ielts, pte_academic or gmat. GET /courses/ lists them. |
| Default course | One ongoing course per course type in your organization. Created automatically the first time you grant that type. |
| Course | Any course in your organization, including batches you created yourself. Each has an id. |
| Enrolment | One student in one course, with its own access window. |
| Access window | start_date to end_date, followed by a grace period up to grace_period_end. |
external_ref |
Your own reference (such as an order id). Used for tracing and to make extensions safe to retry. |
Endpoints
| Method & path | What it's for |
|---|---|
GET /api/v1/ping/ |
Check your key. |
GET /api/v1/organization/ |
Your organization and its onboarding defaults (duration, grace, starter tests). |
GET /api/v1/courses/ |
Course types with your default course for each, plus all your courses and their ids. |
POST /api/v1/provision/student/ |
Onboard, renew, extend, add a course, or resend the email. |
GET /api/v1/students/?email= |
One student's courses, dates and whether they have access now. |
POST /api/v1/roster/import/ |
Sync a whole roster file on a schedule. |
Quick start — two minutes
# 1. Check the key: returns your organization
curl -s https://<your-platform-host>/api/v1/ping/ -H "X-API-Key: <your-key>"
# 2. Onboard yourself as a test student into IELTS for 1 month
curl -s -X POST https://<your-platform-host>/api/v1/provision/student/ \
-H "X-API-Key: <your-key>" -H "Content-Type: application/json" \
-d '{"email":"you@yourcompany.com","first_name":"Test","courses":["ielts"],"tenure_months":1}'
# 3. Check what was granted
curl -s "https://<your-platform-host>/api/v1/students/?email=you@yourcompany.com" -H "X-API-Key: <your-key>"
Use an inbox you can read for the test student, so you also see the welcome email the student receives.
Where to go next
- Complete Onboarding Walkthrough — every step in order, with real responses.
- Access Duration, Renewals & Expiry — how long access lasts and how to renew or extend it.
- API Endpoints & Payloads — every field, response, status and error.
- Connect Pabbly, Zapier, or Make — no‑code recipes.
- Troubleshooting & Security — common problems and key handling.
