URL de base
https://api.flowella.io/v1/messages. Utilisez-la même lorsque l’application affiche une adresse se terminant par /api/v1, comme API base URL dans le Developer hub.
Les requêtes adressées à l’hôte de l’application,
https://app.flowella.io/api/v1/..., sont redirigées de façon permanente (308) vers https://api.flowella.io/v1/.... De nombreux clients HTTP suppriment l’en-tête Authorization lorsqu’ils suivent une redirection vers un autre hôte, de sorte que la requête redirigée peut échouer avec 401. Appelez directement https://api.flowella.io/v1.Authentification
Envoyez un jeton bearer dans l’en-têteAuthorization de chaque requête :
Utilisez une clé API pour vos propres scripts et intégrations. Utilisez une application OAuth lorsque d’autres organisations Flowella installent votre intégration.
Vérifier vos identifiants
Appelez l’endpoint ping pour confirmer qu’une clé ou un jeton fonctionne :200 OK signifie que vous êtes authentifié. organizationId est l’identifiant numérique de votre organisation :
401 porte le code UNAUTHORIZED et l’un des messages suivants : Missing bearer token, Invalid or expired API key, Invalid or expired access token ou Unsupported bearer token.
Scopes
Chaque endpoint nécessite un scope. Les clés API créées dans l’application disposent de tous les scopes. Les jetons d’accès OAuth n’ont que les scopes accordés lors de l’autorisation.GET /v1/ping et GET /v1/rate-limits ne nécessitent aucun scope. GET /v1/capabilities (scope account:read) liste les scopes dont dispose votre jeton.
Une requête sans le scope requis renvoie 403 avec le code INSUFFICIENT_SCOPE. details.required liste les scopes manquants :
Erreurs
Les erreurs utilisent toutes la même enveloppe.requestId identifie la requête lorsque vous contactez l’assistance, et details contient des informations supplémentaires, comme les problèmes de validation, le cas échéant :
La valeur
error.code est stable, votre code peut donc s’y fier. Le texte error.message est destiné aux personnes et peut changer.
Limites de débit
Chaque clé API et chaque jeton d’accès OAuth dispose de sa propre limite de requêtes par minute. Flowella compte les requêtes dans des fenêtres fixes d’une minute qui commencent à la minute pile (UTC). Les réponses aux requêtes qui passent les vérifications d’authentification et de scope incluent ces en-têtes :
Lorsque vous dépassez la limite, Flowella renvoie
429 avec le code RATE_LIMITED et un en-tête Retry-After indiquant le nombre de secondes à attendre. GET /v1/rate-limits renvoie vos valeurs limit, remaining et reset au format JSON.
Pour les envois importants, utilisez POST /v1/templates/send, qui accepte jusqu’à 50 000 destinataires en une seule requête. La requête accepte aussi un champ facultatif throttlePerHour, un nombre entier de 1 à 100 000, mais il ne régule pas les envois pour le moment, ne vous y fiez donc pas. Pour étaler un envoi important dans le temps, divisez la liste des destinataires en lots plus petits et envoyez chaque lot séparément.
Identifiants de requête
Les réponses incluent un en-têteX-Request-Id, et les corps d’erreur le reprennent sous error.requestId. POST /v1/templates/send fait exception : consultez Envois groupés de modèles. Pour utiliser votre propre identifiant, envoyez un en-tête X-Request-Id de 128 caractères au maximum et Flowella le réutilise.
Communiquez l’identifiant de requête lorsque vous contactez l’assistance. Pour consulter une requête vous-même, appelez GET /v1/requests/{requestId} (scope account:read) : il renvoie la requête journalisée avec les événements, tâches et livraisons de webhooks qui y sont liés. Le Developer hub liste vos requêtes récentes et leurs identifiants.
Idempotence
Les clés d’idempotence vous permettent de relancer une requête d’écriture après un délai dépassé ou une erreur réseau sans effectuer le travail deux fois.POST /v1/templates/send suit ses propres règles, décrites ci-dessous.
La plupart des requêtes d’écriture
Les requêtesPOST, PATCH, PUT et DELETE acceptent un en-tête facultatif Idempotency-Key :
- La clé doit comporter de 8 à 255 caractères. Les autres longueurs renvoient
400. - Flowella mémorise chaque clé pour votre organisation pendant 24 heures.
- Une répétition avec la même clé, la même méthode, le même chemin et le même corps renvoie la réponse enregistrée sans exécuter à nouveau la requête.
- Une répétition avec la même clé mais une méthode, un chemin ou un corps différent renvoie
409 IDEMPOTENCY_KEY_CONFLICT. - Une répétition envoyée alors que la première requête est encore en cours renvoie
409 IDEMPOTENCY_KEY_IN_FLIGHT. Patientez puis réessayez. - Les réponses renvoient la clé dans un en-tête
Idempotency-Key.
Envois groupés de modèles
Les envois groupés de modèles sont asynchrones.POST /v1/templates/send valide la requête, la met en file d’attente de manière durable et renvoie immédiatement 202 Accepted :
Idempotency-Key qui identifie chaque lot :
- La clé peut comporter jusqu’à 200 caractères. Une clé plus longue renvoie
400. - Une répétition avec la même clé dans un délai de 7 jours renvoie l’
idd’origine et n’envoie rien, même si le corps a changé. - Sans l’en-tête, Flowella utilise un hachage du corps de la requête comme clé. Si vous renvoyez un corps identique octet pour octet dans un délai de 7 jours, vous récupérez l’
idd’origine et rien n’est envoyé. Utilisez une nouvelle clé pour chaque lot que vous souhaitez envoyer.
- Appelez-le avec une clé API. Les jetons d’accès OAuth sont refusés avec
401. - Ses réponses n’incluent pas les en-têtes
X-Request-Id,API-VersionniX-RateLimit-*. Ses requêtes sont tout de même décomptées de la limite de débit de la clé.
Versionnage
Vous pouvez fixer la version de l’API avec l’en-têteAPI-Version :
2026-08-11 est la seule version prise en charge et la version par défaut si vous omettez l’en-tête. Toute autre valeur, ou une valeur qui n’est pas une date YYYY-MM-DD, renvoie 400 avec le message Unsupported API-Version. Les réponses renvoient la version dans les en-têtes API-Version et X-Flowella-Api-Version.
Sandbox
Le sandbox vous permet de tester une intégration sans rien envoyer à WhatsApp. Il fonctionne sur votre organisation réelle : il n’existe pas de compte de test distinct. Vous pouvez l’utiliser de deux façons :- Une clé sandbox, qui n’affecte que les requêtes effectuées avec cette clé. Consultez Clés sandbox.
- Le API sandbox à l’échelle de l’organisation dans le Developer hub, qu’un Owner ou un Admin peut activer. Consultez API sandbox.
POST /v1/messages enregistre le message et renvoie "sandbox": true sans contacter Meta, et la soumission de modèles renvoie une décision simulée instantanée. Les outils de test du sandbox sous /v1/test/ et /v1/sandbox nécessitent le scope sandbox:manage.
Pagination
Les endpoints de liste, comme/v1/conversations, /v1/contacts et /v1/templates, utilisent une pagination par curseur :
- Transmettez
limit(de 1 à 100, 25 par défaut) et uncursorfacultatif. - La réponse contient
itemset, lorsqu’il reste des résultats, unnextCursor. - Renvoyez
nextCursorcomme paramètrecursorpour récupérer la page suivante. - Lorsque
nextCursorest absent ou vautnull, vous avez atteint la fin.
Date et heure
Tous les horodatages sont des chaînes ISO 8601 en UTC, par exemple2025-01-15T14:30:00.000Z. Lorsque l’API accepte des dates, les valeurs date seule (2025-01-15) et ISO 8601 complètes fonctionnent toutes deux.
Numéros de téléphone
Transmettez les numéros de téléphone au format E.164 (+15551234567) dans la mesure du possible. Flowella normalise les variantes courantes, mais E.164 reste le plus sûr.
Canaux
De nombreux endpoints acceptent unwhatsappChannelId. Si votre organisation n’a qu’un seul canal et que vous l’omettez, Flowella utilise votre canal par défaut. Si vous avez plusieurs canaux, transmettez l’identifiant explicitement pour ne pas envoyer depuis le mauvais numéro.
Pour le modèle d’URL complet et le changement de canal, consultez Multi-canal.
Spécification OpenAPI
La spécification en ligne, lisible par machine, est publique :Ressources pour les développeurs
L’application propose d’autres ressources pour les développeurs. Ces pages sont publiques, vous pouvez donc les ouvrir sans vous connecter :
Le Developer hub dans Settings regroupe ces liens avec vos requêtes API récentes et le commutateur du API sandbox.

