Install our app for a better experience!

Student Provisioning API — Overview

Student Provisioning API — Overview

The Student Provisioning API lets an external system automatically create a student account and enrol them into your organization's courses the moment something happens on your side — a payment on your WordPress/WooCommerce site, a membership activation, a CRM event, and so on.

It is provider-agnostic: the same endpoint works identically with Pabbly Connect, Zapier, Make.com, or any tool/script that can send an HTTP request. One endpoint, one API key per organization.

What one call does

When you POST a student's email, name, and the course type(s) they bought, the platform — in a single automatic step:

  1. Creates the user account (or reuses it if the email already exists).
  2. Adds them to your organization as a member.
  3. Enrols them into a course for each requested course type (IELTS, PTE, GMAT, GRE, …) for the duration you specify — creating that course for your organization automatically if it doesn't exist yet — with your organization's configured initial access and starter practice tests.
  4. Emails the student a "set your password" link so they can log in.

There are no manual steps on the platform side — you don't pre-create courses, and repeat calls never double-enrol. See the API Reference page for the exact behaviour in every scenario (new vs existing student, course exists or not, already enrolled, lapsed, suspended, duration).

How it fits together

Your WordPress / WooCommerce / membership plugin
           (trigger: payment completed, member activated, )
        
  Pabbly Connect  /  Zapier  /  Make.com         the "glue"; all just send an HTTP POST
        
           POST https://<your-platform-host>/api/v1/provision/student/
           Header:  X-API-Key: <your org key>
           Body:    { email, first_name, last_name, courses, tenure_months, external_ref }
        
  Platform: creates user  adds to your org  enrols in course(s)  emails set-password link

The API key identifies your organization, so a key can only ever provision students into your org — you never send an organization id, and one customer can never touch another's data.

Get an API key

Every request is authenticated with a per-organization API key. There are two ways to get one.

If you are an admin of your organization, you can self-serve a key in under a minute:

  1. Sign in and open your Organization dashboard.
  2. Click More Actions → API Keys & Integrations (super-admins: Actions → API Keys & Integrations).
  3. Enter a name for the key (e.g. Pabbly – production) and click Create key.
  4. The raw key is shown oncecopy it immediately and paste it into your automation tool. Only a hashed form is stored; it can never be shown again. If you lose it, revoke it and create a new one.
  5. Revoke a key at any time from the same page.

One key per organization is all you need. The key you create here works for both this Student Provisioning API and the Assessment API.

Option 2 — Ask your platform administrator

If you don't have an admin login, your platform contact can issue a key for your organization and send it to you securely.

Treat the key like a password. Use a separate key per automation tool so you can revoke one without affecting the others.

Quick start — verify your key in 2 minutes

Once you have a key, run this from any terminal:

# 1. Confirm the key works — returns your organization name
curl -s https://<your-platform-host>/api/v1/ping/ -H "X-API-Key: <your-key>"
# → {"status":"ok","organization":"Acme Prep","organization_slug":"acme-prep"}

# 2. Provision a test student into IELTS for 3 months (no email sent)
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":"test.student@example.com","first_name":"Test","last_name":"Student",
       "courses":["ielts"],"tenure_months":3,"send_welcome_email":false}'
# → {"status":"success","created_user":true,
#    "enrollments":[{"course_type":"ielts","status":"active", ...}], ...}

A "status": "success" with an enrollments array means the student is in. Run the second command again and you'll get "already_provisioned" — the API is safe to retry. See API Reference for the full payload and Automation Setup to wire it into Pabbly / Zapier / Make.

Where to see what happened

The API response is your source of truth: a 201/200 whose status is success or already_provisioned (with an enrollments array) confirms the student came through. Every call — success, failure, or an invalid/revoked-key attempt — is also written to a server-side audit log (email, courses, result, source, IP, time) that your platform administrator can review if you ever need to debug a failing setup.

Next steps

  • API Reference — endpoints, payload, responses, error codes, idempotency, course types.
  • Automation Setup — step-by-step Pabbly / Zapier / Make recipes + a curl test.
  • Troubleshooting & Security — common errors and key hygiene.