Base URL
fra1 (Francfort).
Les endpoints Supabase Edge Functions (
/functions/v1/*) ne sont pas publics. Ils sont uniquement appelés en interne par le serveur Node ou par les webhooks Stripe signés. Considère https://actero.fr/api comme la seule surface API publique.Authentification
L’API accepte trois schémas d’authentification, selon le contexte :Bearer JWT (session utilisateur)
Utilisé par le dashboard React. Tu récupères le token viasupabase.auth.getSession() côté client et tu l’envoies en header :
Jeton développeur (serveur MCP)
Pour une intégration serveur à serveur (script, Zapier, Make, n8n), crée un jeton développeur depuis Dashboard → IA et API → L’API (dès Starter, pour la personne propriétaire et les managers). Format :mcp_pat_…, valable 30, 90 ou 365 jours, affiché une seule fois. Il ouvre le serveur MCP (https://actero.fr/api/mcp), qui sert d’API : les mêmes outils que ton IA, avec les mêmes droits et le même journal. Il n’ouvre aucune autre route.
Secret partagé (engine interne)
Les routes du moteur (/api/engine/gateway, connecteurs internes) acceptent aussi un secret en header x-engine-secret ou x-internal-secret. Réservé aux workers internes Actero ; tu n’en as pas besoin pour intégrer.
Rate limiting
Les routes sensibles sont rate-limitées. Les limites varient selon la nature de la route :
Les lectures (
/billing/usage, /client/export-data) n’ont pas de limite de débit propre.
Dépassement → 429 Too Many Requests. Voir Rate limits pour la stratégie de retry.
Format des réponses
Toutes les réponses sont JSON UTF-8 :Succès
Le format dépend de l’endpoint, mais la convention est de retourner directement le payload sans enveloppe :Erreur
5xx ; le request_id exposé dans certaines réponses est l’event ID Sentry. Partage-le au support pour tracer.
Idempotence
Les webhooks entrants (Stripe, Shopify, Gorgias…) sont dédupliqués par(provider, event_id) pendant 30 jours. Si ton upstream réessaie, Actero retourne 200 sans ré-exécuter.
Pour les requêtes côté engine/gateway, utilise un event_id stable dans le payload : nous insérons une ligne engine_events par appel, donc deux POST identiques créent deux events. La dé-duplication métier (ex. ticket Shopify déjà traité) est faite par le Brain en amont via external_ticket_id.
Versioning
L’API n’est pas encore versionnée publiquement. Tout changement breaking est annoncé 30 jours à l’avance par email + bannière dashboard. Les ajouts de champs dans les réponses ne sont jamais considérés breaking — code défensivement.Ressources
Authentication
Détails des trois schémas d’auth
Webhooks sortants
S’abonner aux événements émis par l’agent
Rate limits
Limites, headers, retry strategy
Engine gateway
Envoyer un événement à l’agent
Billing & usage
Consommation de tickets du mois
Export GDPR
Récupérer toutes les données du tenant