Flowziac Docs
API Reference
Endpoints
Complete reference for the Flowziac Public Partner API (v1). For templates with URL buttons, Meta create rules, and full request examples, see the Partner API docs.
Try it
Test the API directly from your browser. You need valid API keys from your workspace.
Send a text, template, or interactive message to a WhatsApp number.
bash
curl -X POST "https://your-domain.com/api/v1/public/messages/send" \
-H "Content-Type: application/json" \
-H "apiKey: pk_your_key_id" \
-H "apiSecret: your_secret" \
-d '{
"type": "text",
"phone": "919876543210",
"content": "Hello!"
}'Request body
typestring (text, template, interactive)Message typephonestringRecipient phone number (digits with country code)contactIdstringExisting contact ID (alternative to phone)contentstringText content (for text messages) or interactive JSON stringtemplateNamestringTemplate name (for template messages)templateLanguagestringTemplate language code (e.g. en, en_US) — must match Meta when using templateComponentstemplateVariablesobjectSimple fill-in: body {{n}} → keys "1","2",…; copy-code → "copy_code". Dynamic URL buttons use the {{n}} in the stored URL (usually "1"). Body {{1}} and URL {{1}} share the same key.templateComponentsarrayAdvanced Meta Cloud API components (body + button with sub_type url). Use when body {{1}} and URL button {{1}} need different values. URL parameter text is the suffix only, not the full URL.bodyParametersobjectOptional main-body overrides ("1","2",…) applied after templateVariablescarouselobjectOptional carousel.cards[] for marketing carousel templates. Each card accepts header.link (public URL, auto-uploaded) or header.id (pre-uploaded WhatsApp media ID).idempotencyKeystringOptional; also supported via Idempotency-Key header. Same key+body returns prior message (200).revalidateFlowSessionbooleanOptional; close active flow session for contactId before sendphoneNumberIdstringInternal Flowziac phone.id (from /dashboard/phone-numbers/<id>/…). Required if multiple active WhatsApp numbers. Not Meta’s numeric phone number id.Error Codes
CodeStatusMessage
UNAUTHORIZED401Invalid or revoked API credentialsPHONE_NUMBER_REQUIRED400phoneNumberId is required when the workspace has multiple active WhatsApp numbersPHONE_NUMBER_NOT_FOUND400Requested WhatsApp line not found for this workspacePHONE_NUMBER_INACTIVE400Assigned WhatsApp line is inactiveNO_PHONE_NUMBER400No active WhatsApp phone number connectedTEMPLATE_NOT_APPROVED400Template exists but is not approved by MetaWHATSAPP_GRAPH_ERROR400Meta Graph API rejected the send (see details)NOT_FOUND404Template, contact, or message id not foundIDEMPOTENCY_CONFLICT409Idempotency key reused with a different bodyPLAN_LIMIT_EXCEEDED402Your plan limit has been reachedRATE_LIMIT_EXCEEDED429Too many requests — retry after the specified timeINTERNAL_ERROR500Internal server error — please try again laterRate Limits
The public partner API uses two layers (on top of plan message limits):
100 / 15 minutes
Per client IP (outer shield)
300 / 15 minutes
Per API key (override via PUBLIC_API_KEY_RATE_LIMIT)
When rate-limited, the API returns 429 with RATE_LIMIT_EXCEEDED. Full field and delivery notes are in the Partner API docs.