Aller au contenu
Commencer gratuitement

Développeurs

L’application web de Checkpoint n’est qu’une fine couche au-dessus d’une API HTTP, et cette même API vous est ouverte. Il n’y a pas d’inscription développeur distincte ni de clé d’API : vous vous authentifiez avec un compte Checkpoint ordinaire.

Environnement URL de base
Production https://api.checkpointrun.com
Test https://dev.api.checkpointrun.com

Développez sur l’environnement de test. Il fait tourner le même code, un peu en avance sur la production, et ses données sont jetables : elles peuvent être effacées sans préavis, ce qui est exactement ce qu’il vous faut pour expérimenter.

Chaque environnement sert sa propre description OpenAPI, et un navigateur pour la lire :

  • /swagger — chaque endpoint, ses paramètres et ses réponses, avec un bouton « try it out »
  • /swagger/v1/swagger.json — le document OpenAPI brut, que la plupart des générateurs de clients acceptent tel quel

La documentation est publique ; les opérations qu’elle décrit ne le sont pas : chacune applique toujours exactement les mêmes permissions que l’application. Pouvoir lire la description d’un endpoint ne veut donc pas dire pouvoir l’appeler.

Envoyez votre e-mail et votre mot de passe Checkpoint, et vous recevez un jeton bearer :

Terminal window
curl -X POST https://api.checkpointrun.com/login \
-H 'content-type: application/json' \
-d '{"email":"you@example.com","password":"your-password"}'
{ "tokenType": "Bearer", "accessToken": "", "expiresIn": 3600, "refreshToken": "" }

Transmettez-le à chaque appel suivant :

Terminal window
curl https://api.checkpointrun.com/api/me/alerts \
-H "Authorization: Bearer $ACCESS_TOKEN"

Le jeton d’accès dure une heure. Pour en obtenir une nouvelle paire sans redemander le mot de passe, envoyez le jeton de rafraîchissement à /refresh :

Terminal window
curl -X POST https://api.checkpointrun.com/refresh \
-H 'content-type: application/json' \
-d '{"refreshToken":"…"}'

L’application web se connecte par le même endpoint avec ?useCookies=true et reçoit un cookie de session à la place. Cette voie est faite pour les navigateurs sur les domaines de Checkpoint ; en tant que client d’API, prenez le jeton.

Le contenu public ne demande aucun jeton : la liste des événements, les circuits, clubs et cartes publics, et les classements. Tout ce qui est privé, tout ce qui vous concerne et toute écriture en demandent un.

100 requêtes par minute — comptées par compte une fois authentifié, et par adresse IP avant cela. Au-delà, vous recevez 429 ; la fenêtre est fixe, attendre qu’elle se renouvelle suffit donc.

  • Les énumérations sont des chaînes, pas des nombres. Le statut d’un événement revient en "Finalized", celui d’une inscription en "Waitlisted". Le comparer à un nombre ne correspond jamais, silencieusement — une erreur que nous avons faite nous-mêmes.
  • Les horodatages sont en ISO-8601 avec décalage, en UTC, par exemple 2026-08-14T20:28:26.335649+00:00.
  • L’API n’est pas encore versionnée et le contrat peut changer. C’est la même API que celle de l’application : elle bouge quand l’application bouge. Relisez le document OpenAPI après une mise à jour plutôt que de vous figer sur ce que vous avez vu une fois.
  • Les applications web hébergées ailleurs ne peuvent pas l’appeler. CORS n’autorise que les front-ends de Checkpoint : appelez l’API depuis un serveur, un script ou une application native, pas depuis la page web de quelqu’un d’autre.

Les événements, circuits, clubs, cartes et résultats publiés ont aussi des liens courts publics sur https://go.checkpointrun.com, qui affichent une carte d’aperçu quand on les colle dans une conversation et redirigent un vrai navigateur vers Checkpoint.

S’il vous manque un endpoint, ou une garantie que nous n’offrons pas encore, dites-le sur l’espace de suggestions : c’est là que vont les autres demandes, et il est lu.