L'API Goatching
Pour ceux qui savent coder : pilote ton compte en API — lis tes données, construis ton plan, publie-le toi-même.
À toi, et à toi seul. Un jeton personnel n'agit que sur ton compte. Il ne donne aucun pouvoir de coach : tu ne peux ni voir ni modifier les données de quelqu'un d'autre. Tu deviens ton propre coach.
1. Créer ton jeton
Dans l'app : Compte → Accès API → Générer un jeton. Donne-lui un nom (l'appareil ou le script qui s'en servira) et une durée de vie, puis touche Copier. Le secret ne s'affiche qu'une seule fois — colle-le tout de suite dans ta variable d'environnement.
| Propriété | Détail |
|---|---|
| Forme | Une chaîne préfixée gch_ |
| Stockage | Haché côté serveur — nous ne pouvons pas te le réafficher |
| Expiration | 90 jours par défaut (365 j max), puis il cesse de fonctionner |
| Révocation | Immédiate depuis la même page, à tout moment |
| Nombre | Jusqu'à 5 jetons actifs par compte |
Ton jeton vaut l'accès à ton compte. Ne le mets jamais dans un dépôt public ni dans une conversation. Range-le dans une variable d'environnement. Un doute ? Révoque-le et regénère-en un.
2. S'authentifier
Base : https://goatching.fr. Passe ton jeton dans
l'en-tête Authorization. Récupère d'abord ton identifiant une
fois pour toutes :
export GOATCHING_TOKEN=gch_ton_jeton_ici
UID=$(curl -s https://goatching.fr/v1/auth/me \
-H "Authorization: Bearer $GOATCHING_TOKEN" | jq -r .id)
Un jeton révoqué ou expiré renvoie 401. Un accès qui n'est pas
le tien renvoie 403.
3. Lire tes données
| Endpoint | Ce que tu obtiens |
|---|---|
GET /v1/profiles/$UID | Ton questionnaire, tes seuils, tes zones dérivées, ta course cible |
GET /v1/activities?user_id=$UID | Tes sorties réelles (durée, distance, FC, D+) |
GET /v1/plans/me/current | Ton plan publié en cours |
4. Construire ton plan
Tu es ton propre coach. Créer la fiche, déposer le contenu, valider, publier quand tu veux :
# 1. Créer le plan (une seule fiche active par personne)
curl -X POST https://goatching.fr/v1/plans \
-H "Authorization: Bearer $GOATCHING_TOKEN" \
-H "Content-Type: application/json" \
-d "{\"trainee_id\":\"$UID\",\"title\":\"Mon semi\",\"sport_focus\":\"run\",
\"start_date\":\"2026-08-01\",\"end_date\":\"2026-10-15\"}"
# 2. Déposer le contenu (PlanDoc — cf. le schéma ci-dessous)
curl -X PUT https://goatching.fr/v1/plans/$PLAN_ID/draft \
-H "Authorization: Bearer $GOATCHING_TOKEN" \
-H "Content-Type: application/json" \
-d @mon-plan.json
# 3. Vérifier les garde-fous (liste vide = OK) — envoie le PlanDoc à valider
curl -X POST https://goatching.fr/v1/plans/$PLAN_ID/validate \
-H "Authorization: Bearer $GOATCHING_TOKEN" \
-H "Content-Type: application/json" \
-d @mon-plan.json
# 4. Publier — quand TU es prêt
curl -X POST https://goatching.fr/v1/plans/$PLAN_ID/publish \
-H "Authorization: Bearer $GOATCHING_TOKEN"
Le contenu d'un plan (PlanDoc) suit un schéma strict :
durées en secondes, distances en mètres, allures en sec/km, cibles par
zone. La validate refuse les plans dangereux (jamais moins d'un
jour de repos par semaine, volume borné, répétitions plafonnées). Schéma
complet : goatching.fr/plan.schema.json,
exemple prêt à l'emploi :
goatching.fr/plan.sample.json.
Et la méthode d'entraînement (progressivité, garde-fous anti-blessure) :
goatching.fr/coaching-guide.md.
5. Limites
| Limite | Valeur |
|---|---|
| Séances par plan | 1000 |
| Blocs/étapes par séance | 200 |
| Répétitions par bloc | 50 |
| Cibles par étape | 8 |
| Phases par plan | 30 |
| Écritures de plan (créer / déposer / valider / publier) | 10 / min |
| Création de jeton | 5 / heure |
| Jetons actifs par compte | 5 |
| Durée de vie d'un jeton | 90 j (365 max) |
Dépasser une taille renvoie 422 ; trop de requêtes,
429 (réessaie plus tard). En lecture, mets tes réponses en cache
plutôt que de boucler.
Tu veux laisser un assistant IA construire ton plan à partir de tes données ? Branche le serveur MCP sur ce même jeton.