Skip to main content
The public API lets an integration read authorised public profiles and submit leads with a key issued to an authorised account. The client needs neither the Firebase SDK nor a user browser session for each request; the key owner still needs an account and must respect its scopes/country.
Published profile fields remain subject to the key’s country and scope checks. Private data and unpublished contact details are excluded. Use this server entry point with revocable keys and usage tracking; do not assume anonymous or direct Firestore access.

Getting a key

1

Create a developer account

Sign up at saas.ardoiseeduc.com with the Developer role.
2

Generate a key

From the Developer Space, API keys section: tick the scopes you need, then generate a test key (sk_test_...) or a production key (sk_live_...).
3

Authenticate your requests

Send the key in the Authorization header of every request:
A school that wants to display its own profile or its own job adverts on its site does not need a developer account: the founder generates a dedicated key from API Integrations on their dashboard - see School API key below.

Scopes

A production key requires identity verification, technical certification and partner approval through the developer journey. A sandbox test key does not authorise production access. See Developer Academy and certification. An invalid or revoked key, or one lacking the required scope, receives 401/403 with a message explaining which.

Available countries

The country parameter accepts the code or exact French name. Developer keys are restricted to the country authorised server-side. Omitting the parameter retains that scope; requesting another country or supplying an out-of-scope profile identifier is refused. The list below is technical reference, not evidence that every offering/payment is available there. Ardoise School is not offered in Austria.
This list is also available through the API (see GET /api/public/countries below), which is handy for building a country selector without copying it by hand.

Endpoints

Base URL: https://api.ardoiseeduc.com

GET /api/public/countries

Returns the list of the 18 countries above ({ "data": [{ "code": "BEN", "name": "Bénin" }, ...] }). No key required - this is static reference data, not marketplace data.

GET /api/public/schools

Lists the schools registered on the marketplace. Scope required: marketplace:read

GET /api/public/schools/:schoolId

A public institution profile within the marketplace:read key’s authorised country, or the specific institution of a school:profile key. The requested identifier still undergoes country checks; institutes also use public profiles without becoming School tenants.

GET /api/public/teachers

Lists the marketplace’s independent tutors. Same country/limit parameters as /schools.
This route exposes authorised public fields, not private contact details, contracts or financial records. Contact and booking use authorised journeys; Marketplace fees and payments cannot be inferred from this public result.

GET /api/public/jobs

Lists open job adverts, filterable by country and/or schoolId. Scope required: marketplace:read

GET /api/public/partners

Lists approved certified partners, filterable by country. Scope required: marketplace:read

POST /api/public/leads

Submits a lead (an interested school or a teacher candidate) into the Ardoise sales pipeline, so that a member of the team can follow up. Scope required: leads:write
type is either school_prospect or candidate. name is required, along with contactEmail or contactPhone (at least one of the two).

Support access (support:access scope)

Reserved for certified partners to whom a founder has explicitly granted access - see that page for how a founder grants and revokes that access from their dashboard. These routes proxy to the school’s own Django installation (never to data stored on the Platform side) and answer 403 if no active grant covers the school or the scope requested. Scope required: support:access

GET /api/support/schools/:schoolId/health

GET /api/support/schools/:schoolId/backupStatus

POST /api/support/schools/:schoolId/backupTrigger

Triggers an immediate backup. Response { "success": true, "message": "..." } or { "success": false, "error": "..." }.
These three routes are strictly limited to server and backup status - never to grades, accounting or pupil records, and they open no system access to the machine (no SSH, no console).

School API key (scope school:profile)

From API Integrations on the founder dashboard, a school can generate its own key, limited to its own profile (GET /api/public/schools/:itsOwnId) and its own job adverts. That key can read nothing about another school, and gives access to no grade, finance or pupil data - only the same information already public on the marketplace.
The public API does not and will not expose a school’s grades, accounting or pupil records without a consent framework far broader than these keys - this is not a temporary omission, it is a deliberate limit.

Current limitations

  • No strict rate limiting (no dedicated infrastructure yet) - abusive use is monitored through the request counter shown in the Developer Space, and a key can be revoked at any time.
  • Webhooks (real-time notifications) are configurable from the Developer Space but do not yet fire automatically on real events - only manual testing works today.

See also

MCP server

Use the same public functions with a Model Context Protocol client.

Certified partners

Become a certified partner, or grant support access to a partner from your school.