Base URL
cdg1 (Paris).
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 :
API key (programmatique)
Pour les intégrations serveur à serveur, génère une clé depuis Dashboard → API & Intégrations → Nouvelle clé. Format :ak_ suivi de 32 caractères hex. Les clés MCP (issues du flow OAuth Claude Desktop) utilisent le préfixe mcp_.
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
Toutes les routes sont rate-limitées. Les limites varient selon la nature de la route :
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 tickets/voice du mois
Export GDPR
Récupérer toutes les données du tenant