
Développeurs et chronométreurs
La liste de départ se lit par l'API, dans le format de votre logiciel, et chaque changement vous arrive signé dans la minute. Documentée, testable, décrite en OpenAPI.
L'API
Une clé par course et par destinataire, dans l'en-tête Authorization. Lecture seule.
curl -H "Authorization: Bearer wr_xxxxxxxx_…" \ https://register.wetiming.fr/api/v1/courses/<course>/inscrits # seulement ce qui a changé, annulations comprises curl -H "Authorization: Bearer wr_xxxxxxxx_…" \ "https://register.wetiming.fr/api/v1/courses/<course>/inscrits?depuis=2026-10-17T18:00:00Z" # un fichier prêt à importer curl -H "Authorization: Bearer wr_xxxxxxxx_…" \ "https://register.wetiming.fr/api/v1/courses/<course>/inscrits?format=raceresult"
Les formats
Le paramètre format rend un fichier prêt à importer. Chaque ligne porte l'identifiant d'inscription, la catégorie FFA, la vague et son heure, la puce, l'équipe et le relais.
- 01
Standard, colonnes en français · format=standard
Wiclax, GmCAP, Chronelec, Logica, tableur. Point-virgule, UTF-8. Une valeur par colonne : ces logiciels font correspondre les colonnes à l'import.
- 02
RaceResult · format=raceresult
race result 12 et 14. En-têtes aux noms de champs RaceResult, un seul champ d'âge (la date de naissance). Séparateur et format de date À VÉRIFIER sur le premier import.
- 03
Webscorer · format=webscorer
Webscorer. Texte tabulé en Unicode, comme le recommande Webscorer pour les accents.
- 04
IPICO, ACTIVE Timing · format=ipico
IPICO. Les dix colonnes exigées, date au format MM/DD/YYYY. Les puces se chargent à part, avec le fichier dossard et puce.
- 05
MYLAPS · format=mylaps
EventApp, Sporthive. L'identifiant d'inscription reste le même d'un export à l'autre. Noms de colonnes À VÉRIFIER sur le premier import.
- 06
Dossard et puce · format=puces
IPICO, tout logiciel à puces réutilisables. Deux colonnes sans en-tête : dossard, puce. Seuls les coureurs qui ont une puce.
Les webhooks
Un POST en JSON à votre adresse, à chaque inscription confirmée, modifiée ou annulée.
- 01
entry.confirmed
Une inscription reçoit son dossard : règlement confirmé, inscription gratuite, reprise d'un dossard.
- 02
entry.updated
Un champ lu par le chronométreur change : nom, date de naissance, épreuve, vague, dossard, puce, équipe, club, licence.
- 03
entry.cancelled
Une inscription est annulée. Le dossard revient à la course quand l'épreuve n'est pas partie.
{
"id": "5b0c9d0e-…",
"type": "entry.confirmed",
"created_at": "2026-10-17T18:04:11.201Z",
"course": { "slug": "trail-relais", "name": "TRAIL RELAIS" },
"data": {
"registration_id": "7c9e6679-7425-40de-944b-e07fc1f90ae7",
"status": "confirmed",
"bib": 42,
"last_name": "Martin",
"first_name": "Léa",
"gender": "F",
"birth_date": "1990-04-02",
"category": "M0",
"category_sex": "M0F",
"race_name": "10km",
"wave_name": "SAS 1",
"start_at": "2026-10-18T08:00:00.000Z",
"chip": "ABC123",
"team_name": null,
"leg": null
}
}import { createHmac, timingSafeEqual } from "node:crypto";
// En-tête X-WeRegister-Signature : t=<secondes>,v1=<hmac>
export function verifier(secret, corpsBrut, entete) {
const { t, v1 } = Object.fromEntries(entete.split(",").map((p) => p.split("=")));
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) return false;
const attendu = createHmac("sha256", secret).update(`${t}.${corpsBrut}`).digest("hex");
return timingSafeEqual(Buffer.from(attendu), Buffer.from(v1));
}Les garanties
- 01
Signé
Chaque envoi porte un HMAC-SHA256 de son heure et de son corps, par le secret du webhook. Une signature de plus de 5 minutes se refuse.
- 02
Repris
Une réponse hors 2xx, ou aucune réponse en 8 secondes, et l'envoi repart : 1min, 5min, 15min, 1h, 3h, 6h, 12h.
- 03
Dédoublonnable
L'identifiant de livraison reste le même d'une tentative à l'autre. L'identifiant d'inscription reste le même pour toute la vie de l'inscription.
- 04
Complet
Les envois naissent en base, à chaque écriture qui compte : formulaire, organisateur, transfert ou import, rien ne s'échappe.
- 05
Testable
Un bouton envoie un message de test signé et affiche la réponse de votre serveur. Chaque envoi se relit, et un échec se renvoie d'un clic.
- 06
Décrit
La description OpenAPI 3.1 de l'API et des webhooks se télécharge, pour générer un client dans le langage de votre choix.
Questions de chronométreur
Qui crée les clés et les webhooks ?
L'organisateur, dans l'onglet Chronométreur de sa course. Une clé par destinataire, qui lit cette course seulement et se révoque d'un clic.
Nos coureurs changent de dossard la veille : comment le savoir ?
Par le webhook entry.updated, dans la minute. Ou par l'API avec le paramètre depuis, qui ne rend que les changements depuis votre dernier appel.
Notre logiciel attend son propre format.
Le paramètre format rend la liste de départ prête à importer : RaceResult, Webscorer, IPICO, MYLAPS, un fichier dossard et puce, ou le format standard que Wiclax, GmCAP et Chronelec font correspondre à l'import.

Trois champs : votre course, sa date, votre adresse. Nous ouvrons votre espace et vous répondons par email.