Basis-URL
https://api.flowella.io/v1/messages. Verwenden Sie sie auch dort, wo die App eine Adresse mit der Endung /api/v1 anzeigt, etwa unter API base URL im Developer Hub.
Anfragen an den App-Host,
https://app.flowella.io/api/v1/..., werden dauerhaft (308) auf https://api.flowella.io/v1/... umgeleitet. Viele HTTP-Clients verwerfen den Header Authorization, wenn sie einer Umleitung auf einen anderen Host folgen, sodass die umgeleitete Anfrage mit 401 fehlschlagen kann. Rufen Sie https://api.flowella.io/v1 direkt auf.Authentifizierung
Senden Sie bei jeder Anfrage ein Bearer-Token im HeaderAuthorization:
Verwenden Sie einen API-Schlüssel für Ihre eigenen Skripte und Integrationen. Verwenden Sie eine OAuth-App, wenn andere Flowella-Organisationen Ihre Integration installieren.
Zugangsdaten prüfen
Rufen Sie den Ping-Endpunkt auf, um zu bestätigen, dass ein Schlüssel oder Token funktioniert:200 OK bedeutet, dass Sie authentifiziert sind. organizationId ist die numerische ID Ihrer Organisation:
401 hat den Code UNAUTHORIZED und eine dieser Meldungen: Missing bearer token, Invalid or expired API key, Invalid or expired access token oder Unsupported bearer token.
Scopes
Jeder Endpunkt benötigt einen Scope. In der App erstellte API-Schlüssel haben alle Scopes. OAuth-Zugriffstoken haben nur die bei der Autorisierung gewährten Scopes.GET /v1/ping und GET /v1/rate-limits benötigen keinen Scope. GET /v1/capabilities (Scope account:read) listet die Scopes Ihres Tokens auf.
Eine Anfrage ohne den benötigten Scope gibt 403 mit dem Code INSUFFICIENT_SCOPE zurück. details.required listet die fehlenden Scopes auf:
Fehler
Fehler verwenden dieselbe Hülle.requestId identifiziert die Anfrage, wenn Sie sich an den Support wenden, und details enthält zusätzliche Informationen, etwa Validierungsprobleme, sofern vorhanden:
Der Wert
error.code ist stabil, sodass sich Ihr Code darauf verlassen kann. Der Text error.message ist für Menschen gedacht und kann sich ändern.
Ratenlimits
Jeder API-Schlüssel und jedes OAuth-Zugriffstoken hat ein eigenes Limit für Anfragen pro Minute. Flowella zählt Anfragen in festen Ein-Minuten-Fenstern, die zur vollen Minute (UTC) beginnen. Antworten auf Anfragen, die die Authentifizierungs- und Scope-Prüfungen bestehen, enthalten diese Header:
Wenn Sie das Limit überschreiten, gibt Flowella
429 mit dem Code RATE_LIMITED und einem Header Retry-After mit der Anzahl der zu wartenden Sekunden zurück. GET /v1/rate-limits gibt Ihre Werte limit, remaining und reset als JSON zurück.
Für große Sendungen verwenden Sie POST /v1/templates/send, das bis zu 50.000 Empfänger in einer Anfrage annimmt. Die Anfrage akzeptiert auch ein optionales Feld throttlePerHour, eine ganze Zahl von 1 bis 100.000, die Sendungen derzeit aber nicht taktet. Verlassen Sie sich also nicht darauf. Um eine große Sendung zeitlich zu verteilen, teilen Sie die Empfängerliste in kleinere Batches auf und senden Sie jeden Batch separat.
Anfrage-IDs
Antworten enthalten einen HeaderX-Request-Id, und Fehlerantworten wiederholen ihn als error.requestId. POST /v1/templates/send ist die Ausnahme: Siehe Massenversand von Vorlagen. Um Ihre eigene ID zu verwenden, senden Sie einen Header X-Request-Id mit bis zu 128 Zeichen, und Flowella übernimmt ihn.
Nennen Sie die Anfrage-ID, wenn Sie sich an den Support wenden. Um eine Anfrage selbst nachzuschlagen, rufen Sie GET /v1/requests/{requestId} auf (Scope account:read): Es gibt die protokollierte Anfrage mit den verknüpften Ereignissen, Jobs und Webhook-Zustellungen zurück. Der Developer Hub listet Ihre letzten Anfragen und deren IDs auf.
Idempotenz
Mit Idempotenzschlüsseln können Sie eine schreibende Anfrage nach einem Timeout oder Netzwerkfehler wiederholen, ohne die Arbeit doppelt auszuführen.POST /v1/templates/send folgt eigenen Regeln, die unten beschrieben sind.
Die meisten schreibenden Anfragen
Anfragen mitPOST, PATCH, PUT und DELETE akzeptieren einen optionalen Header Idempotency-Key:
- Der Schlüssel muss 8 bis 255 Zeichen lang sein. Andere Längen geben
400zurück. - Flowella merkt sich jeden Schlüssel für Ihre Organisation 24 Stunden lang.
- Eine Wiederholung mit demselben Schlüssel, derselben Methode, demselben Pfad und demselben Body gibt die gespeicherte Antwort zurück, ohne die Anfrage erneut auszuführen.
- Eine Wiederholung mit demselben Schlüssel, aber anderer Methode, anderem Pfad oder anderem Body gibt
409 IDEMPOTENCY_KEY_CONFLICTzurück. - Eine Wiederholung, die gesendet wird, während die erste Anfrage noch läuft, gibt
409 IDEMPOTENCY_KEY_IN_FLIGHTzurück. Warten Sie und versuchen Sie es erneut. - Antworten geben den Schlüssel in einem Header
Idempotency-Keyzurück.
Massenversand von Vorlagen
Der Massenversand von Vorlagen ist asynchron.POST /v1/templates/send validiert die Anfrage, stellt sie dauerhaft in die Warteschlange und gibt sofort 202 Accepted zurück:
Idempotency-Key, der jeden Batch identifiziert:
- Der Schlüssel kann bis zu 200 Zeichen lang sein. Ein längerer Schlüssel gibt
400zurück. - Eine Wiederholung mit demselben Schlüssel innerhalb von 7 Tagen gibt die ursprüngliche
idzurück und sendet nichts, auch wenn sich der Body geändert hat. - Ohne den Header verwendet Flowella einen Hash des Anfrage-Bodys als Schlüssel. Wenn Sie innerhalb von 7 Tagen erneut einen byte-identischen Body senden, erhalten Sie die ursprüngliche
idzurück, und es wird nichts gesendet. Verwenden Sie für jeden Batch, den Sie senden möchten, einen neuen Schlüssel.
- Rufen Sie ihn mit einem API-Schlüssel auf. OAuth-Zugriffstoken werden mit
401abgelehnt. - Seine Antworten enthalten nicht die Header
X-Request-Id,API-VersionoderX-RateLimit-*. Seine Anfragen zählen trotzdem zum Ratenlimit des Schlüssels.
Versionierung
Sie können die API-Version mit dem HeaderAPI-Version festlegen:
2026-08-11 ist die einzige unterstützte Version und der Standard, wenn Sie den Header weglassen. Jeder andere Wert oder ein Wert, der kein Datum im Format YYYY-MM-DD ist, gibt 400 mit der Meldung Unsupported API-Version zurück. Antworten geben die Version in den Headern API-Version und X-Flowella-Api-Version zurück.
Sandbox
Mit der Sandbox testen Sie eine Integration, ohne etwas an WhatsApp zu senden. Sie arbeitet mit Ihrer echten Organisation: Es gibt kein separates Testkonto. Sie können sie auf zwei Arten nutzen:- Mit einem Sandbox-Schlüssel, der nur Anfragen betrifft, die mit diesem Schlüssel gestellt werden. Siehe Sandbox-Schlüssel.
- Mit der organisationsweiten API-Sandbox im Developer Hub, die ein Owner oder Admin einschalten kann. Siehe API-Sandbox.
POST /v1/messages die Nachricht und gibt "sandbox": true zurück, ohne Meta zu kontaktieren, und das Einreichen von Vorlagen gibt sofort eine simulierte Entscheidung zurück. Die Sandbox-Testwerkzeuge unter /v1/test/ und /v1/sandbox benötigen den Scope sandbox:manage.
Paginierung
Listen-Endpunkte wie/v1/conversations, /v1/contacts und /v1/templates verwenden Cursor-Paginierung:
- Übergeben Sie
limit(1 bis 100, Standard 25) und optional einencursor. - Die Antwort enthält
itemsund, wenn es weitere Ergebnisse gibt, einennextCursor. - Übergeben Sie
nextCursorals Parametercursor, um die nächste Seite abzurufen. - Wenn
nextCursorfehlt odernullist, haben Sie das Ende erreicht.
Datum und Uhrzeit
Alle Zeitstempel sind ISO-8601-Strings in UTC, zum Beispiel2025-01-15T14:30:00.000Z. Wo die API Datumsangaben akzeptiert, funktionieren sowohl reine Datumswerte (2025-01-15) als auch vollständige ISO-8601-Werte.
Telefonnummern
Übergeben Sie Telefonnummern nach Möglichkeit im Format E.164 (+15551234567). Flowella normalisiert gängige Varianten, aber E.164 ist am sichersten.
Kanäle
Viele Endpunkte akzeptieren einewhatsappChannelId. Wenn Ihre Organisation einen einzigen Kanal hat und Sie sie weglassen, verwendet Flowella Ihren Standardkanal. Wenn Sie mehrere Kanäle haben, übergeben Sie die ID ausdrücklich, damit Sie nicht von der falschen Nummer senden.
Das vollständige URL-Muster und den Kanalwechsel finden Sie unter Multi-Channel.
OpenAPI-Spezifikation
Die aktuelle, maschinenlesbare Spezifikation ist öffentlich:Ressourcen für Entwickler
Die App bietet weiteres Material für Entwickler. Diese Seiten sind öffentlich, Sie können sie also ohne Anmeldung öffnen:
Der Developer Hub unter Settings bündelt diese Links mit Ihren letzten API-Anfragen und dem Schalter für die API-Sandbox.

