Aller au contenu principal

Clés API

Créer une clé par application, choisir sa portée, la restreindre par adresse et par volume, la renouveler et la révoquer.

Une clé API permet à un autre logiciel (un CRM, un site web, un script, un outil d'automatisation) d'appeler votre passerelle sans utiliser de compte du dashboard. Chaque clé est indépendante : elle a son propre nom, ses propres droits et ses propres plafonds, et peut être révoquée sans toucher aux autres.

Les clés se gèrent sur la page Clés API du dashboard (menu Système > Clés API, ou le bouton Gérer les clés API de la page Référence de l'API).

Qui peut faire quoi

Rôle Sur la page Clés API
Superadministrateur Créer, modifier, révoquer et supprimer des clés
Opérateur, Lecture seule Voir la liste, en lecture seule. Les actions ne sont pas affichées

Une clé de portée admin peut aussi gérer les clés par l'API (/api-keys). Aucune autre clé ne le peut : une clé autorisée à envoyer ne doit pas pouvoir s'accorder davantage de droits.

Créer une clé

  1. Ouvrez Clés API, puis Nouvelle clé API.
  2. Renseignez les options ci-dessous. Seuls le nom et la portée sont obligatoires.
  3. Cliquez sur Créer la clé.
  4. La clé s'affiche une seule fois, avec un bouton Copier la clé et une commande curl prête à l'emploi qui lit le dernier message (elle n'envoie rien, quelle que soit la portée). Copiez la clé dans votre application ou votre gestionnaire de secrets.
  5. Cliquez sur J'ai copié la clé. La fenêtre ne se ferme pas autrement, pour que la clé ne soit pas perdue sur un clic malheureux.

Ensuite, personne ne peut plus lire la clé : ni vous, ni l'API, ni le support. La passerelle n'en garde qu'une empreinte, qui suffit à la reconnaître et ne permet pas de la reconstituer. Une clé perdue se remplace par une nouvelle.

Ce qui reste visible, c'est le préfixe : sk_ suivi des huit premiers caractères, par exemple sk_A1b2C3d. Il permet de reconnaître une clé dans la liste, ou dans la configuration de votre application, sans l'exposer.

Options

Option Par défaut Valeurs admises Effet
Nom Création et modification obligatoire 1 à 80 caractères, unique (sans tenir compte des majuscules) Un libellé seulement. Nommez la clé d'après l'application qui l'utilise, pour savoir laquelle révoquer
Portée Création et modification Lecture Lecture (read), Envoi (send), Administration (admin) Ce que la clé peut appeler. Voir Portées
Adresses IP autorisées Création et modification vide : toutes les adresses Jusqu'à 16 entrées, chacune une adresse IPv4 ou IPv6 ou une plage CIDR (203.0.113.7, 10.0.0.0/8, 2001:db8::/32), une par ligne Un appel venant de toute autre adresse est refusé avec 403 IP_NOT_ALLOWED. Voir Adresses autorisées
Appels par jour Création et modification vide : aucun plafond 0 à 1 000 000. Vide ou 0 signifie aucun plafond Au-delà, les appels sont refusés avec 429 RATE_LIMITED jusqu'à minuit UTC. Le compteur survit à un redémarrage de la passerelle
Appels par minute Création et modification vide : aucun plafond 0 à 10 000. Vide ou 0 signifie aucun plafond Au-delà, les appels sont refusés avec 429 RATE_LIMITED et un en-tête Retry-After. Une fois réglé, chaque réponse porte les en-têtes X-RateLimit-*

Les changements faits par Modifier valent dès l'appel suivant. La clé elle-même ne change pas : l'application continue de fonctionner avec la même valeur.

Portées

Les trois portées sont ordonnées : chacune inclut la précédente.

Portée dans le dashboard Valeur Ce que la clé peut faire Usage typique
Lecture read Consulter les messages, conversations, contacts, groupes, appareils, campagnes, statistiques et le journal d'activité. Aucun envoi, aucune modification Un outil de reporting, votre propre tableau de bord
Envoi send Tout ce que permet Lecture, plus envoyer un SMS et relancer un message en échec. Aucune modification de la configuration Un site web qui envoie des codes de confirmation, un CRM qui envoie des rappels
Administration admin Toute l'API : configuration, contacts, modèles, règles, campagnes, webhooks, exports en masse, sauvegardes, journal technique et les clés elles-mêmes Un outil de confiance qui administre la passerelle

Certaines lectures sont réservées à Administration même si elles ne modifient rien, parce qu'elles livrent beaucoup de données d'un coup : les exports en masse, les sauvegardes (qui contiennent toute la base), la liste des comptes du dashboard (elle contient des adresses e-mail) et le journal technique. Une clé Lecture sert à consulter un message ou un appareil, pas à emporter l'installation.

Quelle que soit sa portée, une clé ne peut jamais créer, modifier ou supprimer un compte du dashboard : ces actions demandent un superadministrateur connecté au dashboard.

Un appel hors de la portée de la clé reçoit 403 FORBIDDEN_SCOPE. Un appel refusé n'entame pas votre quota.

Adresses autorisées

Laissez la liste vide et la clé fonctionne depuis n'importe où, ce qui convient à une clé utilisée depuis plusieurs endroits dont les adresses changent. Remplissez-la dès que l'application appelante a une adresse fixe : une clé copiée par erreur dans un dépôt public devient alors inutile à qui la trouve.

L'adresse contrôlée est celle de la machine qui appelle la passerelle, telle que la passerelle la voit :

  • dans l'installation standard avec un domaine, le frontal HTTPS (Caddy) transmet l'adresse réelle de l'appelant, et c'est elle qui est contrôlée ;
  • sur un réseau local, c'est l'adresse de la machine appelante sur ce réseau ;
  • si vous placez votre propre proxy inverse devant la passerelle, déclarez-le dans GATEWAY_TRUSTED_PROXIES (voir le guide d'installation). Sinon, tous les appels semblent venir du proxy, et la liste laisse tout passer ou refuse tout. Tant qu'une liste existe, un appel dont l'adresse est illisible est refusé plutôt que laissé passer.

Plafonds

Les deux plafonds protègent contre des choses différentes :

  • Appels par minute arrête une rafale : un script en boucle, une page rechargée mille fois. Il compte en mémoire et repart de zéro au redémarrage de la passerelle.
  • Appels par jour plafonne le volume total d'une journée. Il est enregistré avec vos données : un redémarrage ne rend donc pas le quota. Il est compté par jour UTC, de minuit à minuit UTC, quel que soit votre fuseau horaire.

Tous les appels comptent, lectures comprises, pas seulement les envois. Un appel refusé (mauvaise portée, adresse non autorisée) n'entame pas le quota journalier ; un appel refusé pour dépassement du plafond par minute compte tout de même dans cette minute, donc réessayer plus vite n'aide pas.

Ces plafonds sont propres à chaque clé. Ils sont indépendants du quota journalier de chaque SIM réglé sur la page Appareils, qui limite les SMS réellement envoyés par chaque carte, quelle que soit leur origine. Une clé sans plafond ne peut donc pas faire dépasser son quota à une SIM.

La liste

Colonne Ce qu'elle affiche
Nom Le nom, et la date de création
Préfixe sk_ et les huit premiers caractères de la clé
Portée Lecture, Envoi ou Administration
Adresses autorisées « Toutes les adresses », ou la première entrée et le nombre des autres
Plafonds Par jour et par minute, ou « Aucun plafond »
Dernière utilisation L'heure du dernier appel accepté, ou « Jamais »
Statut Active, ou Révoquée avec sa date

Dernière utilisation est le moyen le plus rapide de repérer une clé que plus personne n'utilise : une clé inutilisée depuis des mois est une clé à révoquer.

Renouveler une clé

Il n'y a pas de bouton « régénérer », volontairement : remplacer une clé sur place casserait l'application qui l'utilise à l'instant même du clic. Le renouvellement se fait en trois étapes, sans interruption :

  1. Créez une nouvelle clé avec la même portée et les mêmes options, nommée par exemple CRM 2026-09.
  2. Placez la nouvelle clé dans l'application et vérifiez qu'elle fonctionne (sa colonne Dernière utilisation se remplit).
  3. Révoquez l'ancienne clé.

Renouvelez une clé quand une personne qui la connaissait s'en va, quand elle a pu être exposée (un journal, une capture d'écran, un dépôt, un ticket de support), et sinon au rythme qui vous convient.

Révoquer ou supprimer

Action Effet Quand l'utiliser
Révoquer La clé est refusée dès l'appel suivant, définitivement. La ligne reste dans la liste, avec sa date de révocation et de dernière utilisation La façon normale de retirer une clé
Supprimer La clé est refusée, puis effacée avec ses compteurs. Il ne reste rien dans la liste Faire le ménage d'une clé déjà révoquée

Les deux prennent effet immédiatement : rien n'est mis en cache, chaque appel vérifie la clé. Une clé révoquée ne peut être ni modifiée ni réactivée : créez-en une nouvelle. Une clé révoquée répond exactement comme une clé inconnue (403 INVALID_API_KEY), si bien qu'un appelant ne peut pas savoir si une valeur a existé.

La création, la révocation et la suppression des clés apparaissent dans le Journal, avec le préfixe et jamais la clé.

Bonnes pratiques

  • Une clé par application. Quand un outil est retiré ou compromis, vous révoquez sa clé et rien d'autre ne s'arrête.
  • La portée la plus restreinte. Envoi pour une application qui envoie, Lecture pour une qui lit. Gardez Administration pour les outils à qui vous faites autant confiance qu'à un superadministrateur.
  • Des adresses autorisées dès que l'appelant a une adresse fixe.
  • Un plafond journalier un peu au-dessus du volume normal : un script qui s'emballe s'arrête alors de lui-même au lieu de vider les quotas des SIM.
  • La clé dans un gestionnaire de secrets ou une variable d'environnement, jamais dans le code source, jamais dans une URL, jamais dans un e-mail. Elle voyage toujours dans l'en-tête X-API-KEY.
  • En HTTPS. Sur un réseau que vous ne maîtrisez pas, n'appelez la passerelle que par son adresse https:// : en http simple, la clé traverse le réseau en clair.
  • Relisez la liste de temps en temps, et révoquez les clés qui ne servent plus.

En cas de problème

Réponse Cause probable
401 MISSING_API_KEY L'en-tête X-API-KEY manque, ou un proxy entre vous et la passerelle le supprime
403 INVALID_API_KEY La clé est mal recopiée, tronquée, révoquée ou supprimée
403 IP_NOT_ALLOWED L'adresse appelante n'est pas dans la liste. Vérifiez l'adresse que la passerelle voit réellement
403 FORBIDDEN_SCOPE L'opération demande une portée plus large
429 RATE_LIMITED Plafond par minute ou quota journalier atteint. Retry-After donne l'attente en secondes

Voir aussi Utiliser l'API pour le format des erreurs, et Sécurité.

Rechercher dans la documentation

Saisissez quelques mots, puis choisissez une page.