ELRM developer Bac à sable

Démarrer#

De la clé au premier appel en cinq minutes, puis le chemin vers la production.

1. Obtenir une clé de bac à sable#

Les clés sont émises par ELRM. Demandez une clé bac à sable à votre interlocuteur (ou à support@elrm.app) : vous recevez un lien à usage unique qui affiche le jeton une seule fois. Copiez-le dans un coffre à secrets, il ne peut pas être récupéré ensuite, seulement remplacé.

Une clé de bac à sable commence par pk_test_, une clé de production par pk_live_. Le jeton complet a la forme :

pk_test_3f9a1c2b7d4e.Wq8dL0zj0m3kV1cZ5nQ7Yx2pB4tR6sA9uH8gF1eD0iK
└──────┬──────┘ └──────────────────┬──────────────────┘
  identifiant                    secret

2. Premier appel#

curl "https://developer.elrm.app/sandbox/v1/formations/sessions?available_only=true&limit=5" \
  -H "Authorization: Bearer pk_test_…"
import httpx

client = httpx.Client(
    base_url="https://developer.elrm.app/sandbox/v1",
    headers={"Authorization": "Bearer pk_test_…"},
)
sessions = client.get("/formations/sessions", params={"available_only": True, "limit": 5}).json()
for s in sessions["items"]:
    print(s["numero"], s["date_debut"], s["available_slots"])
const BASE = "https://developer.elrm.app/sandbox/v1";
const headers = { Authorization: "Bearer pk_test_…" };

const res = await fetch(`${BASE}/formations/sessions?available_only=true&limit=5`, { headers });
const { items } = await res.json();
for (const s of items) console.log(s.numero, s.date_debut, s.available_slots);
<?php
$ch = curl_init("https://developer.elrm.app/sandbox/v1/formations/sessions?available_only=true&limit=5");
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => true,
    CURLOPT_HTTPHEADER => ["Authorization: Bearer pk_test_…"],
]);
$sessions = json_decode(curl_exec($ch), true);
foreach ($sessions["items"] as $s) {
    echo $s["numero"], " ", $s["date_debut"], " ", $s["available_slots"], PHP_EOL;
}

Réponse (extrait) :

{
  "items": [
    {
      "numero": "S-2026-0412",
      "formation_label": "CACES® R482, Engins de chantier",
      "date_debut": "2026-09-14",
      "date_fin": "2026-09-18",
      "horaires": "8h30 – 17h00",
      "centre_label": "Centre de Gennevilliers",
      "is_caces": true,
      "caces_recommendation": "R482",
      "caces_categories": ["A", "C1"],
      "statut": "planifiee",
      "capacite_max": 8,
      "available_slots": 5
    }
  ],
  "total": 27,
  "limit": 5,
  "offset": 0
}

Chaque réponse porte un en-tête X-Trace-Id. Si quelque chose ne va pas, c'est la valeur à nous transmettre.

3. Vérifier sa clé#

Une clé est rattachée à un client : le vôtre. Tout ce qui est nominatif (dossiers, apprenants, documents, analyses) porte implicitement sur lui, sans identifiant à passer dans les URLs. Pour vérifier que la clé configurée est la bonne :

curl https://developer.elrm.app/sandbox/v1/me -H "Authorization: Bearer pk_test_…"
{ "id": "5b3c2f4e-…", "nom": "CERTALIS", "siret": "…" }

Sur le bac à sable, c'est un client fictif créé pour vous, avec la même remise que votre client réel.

4. Construire l'intégration#

Suivez les guides dans l'ordre :

  1. Consulter le catalogue, formations, offres aux prix remisés, sessions ouvertes.
  2. De l'analyse du besoin au dossier, le cœur du parcours.
  3. Inscrire et répartir les apprenants.
  4. Suivre un dossier, événements, documents.

Avant d'écrire la moindre requête POST, lisez Idempotence et concurrence : dix lignes qui évitent les doublons de dossiers après un timeout.

5. Passer en production#

Quand votre intégration est validée sur le bac à sable :

  1. Demandez une clé production (pk_live_…) à ELRM, avec les mêmes portées.
  2. Remplacez l'URL de base : https://developer.elrm.app/sandbox/v1 → https://prod.elrm.app/api/v1/partner. Les chemins sont identiques.
  3. Vérifiez avec GET /me : en production, c'est votre vrai client.

Une clé pk_test_ refusée en production répond 401 comme n'importe quelle clé inconnue. C'est voulu : l'API ne donne pas d'indice sur la raison d'un refus. Si vous voyez des 401 juste après une mise en production, vérifiez d'abord le préfixe de votre clé.