WhatsApp API — Overview
Every WhatsApp Cloud API endpoint sits under /api/v25.0/{ID}/....
You authenticate with your Splashify partner API key; we handle the
WhatsApp Business platform credentials on our side.
curl https://api.splashifypro.com/api/v25.0/$WABA_ID/phone_numbers \
-H "Authorization: Bearer $SPLASHIFY_API_KEY"How ID ownership works
The first path segment after /api/v25.0/ is either a WABA ID, a
phone-number ID, a flow ID, a template ID, or an ad
account ID (prefixed act_…). We:
- Resolve which kind of ID it is via internal lookups.
- Confirm it belongs to a customer under your partner account.
- Forward the call to the WhatsApp Business platform on your behalf.
IDs that resolve to a different partner account return
403 — id does not belong to your account. IDs that don’t resolve
return 404 — id not found.
Endpoint catalog
Account-level ({WABA_ID} as the first segment)
| Endpoint | Page |
|---|---|
GET /api/v25.0/{WABA_ID}/phone_numbers | Phone Numbers |
GET /api/v25.0/{WABA_ID}?fields=health_status | Health Status |
GET /api/v25.0/{WABA_ID}?fields=analytics.… | Message Analytics |
GET /api/v25.0/{WABA_ID}?fields=conversation_analytics.… | Conversation Analytics |
POST /api/v25.0/{WABA_ID}?is_enabled_for_insights=true | Template Analytics — enable |
GET /api/v25.0/{WABA_ID}?fields=template_analytics?… | Template Analytics — read |
GET /api/v25.0/{WABA_ID}?fields=call_analytics.… | Voice Calling — analytics |
POST/GET /api/v25.0/{WABA_ID}/message_templates | Message Templates |
POST /api/v25.0/{WABA_ID}/message_templates/id/{TEMPLATE_ID} | Message Templates — edit |
GET /api/v25.0/{WABA_ID}/message_templates/id/{TEMPLATE_ID} | Message Templates — get one |
DELETE /api/v25.0/{WABA_ID}/message_templates?… | Message Templates — delete |
GET /api/v25.0/{WABA_ID}/message_template_previews?… | Message Templates — previews |
GET /api/v25.0/{TEMPLATE_ID}/compare?… | Message Templates — compare |
POST/GET /api/v25.0/{WABA_ID}/flows | Flows |
Phone-level ({PHONE_NUMBER_ID} as the first segment)
| Endpoint | Page |
|---|---|
GET /api/v25.0/{PHONE_NUMBER_ID}?fields=status,… | Phone Number Details |
GET /api/v25.0/{PHONE_NUMBER_ID}?fields=whatsapp_business_manager_messaging_limit,messaging_limit_tier | Messaging Limit |
POST /api/v25.0/{PHONE_NUMBER_ID}/register | Register Number + Update Display Name |
POST /api/v25.0/{PHONE_NUMBER_ID}/request_code?code_method=SMS&language=en_US | Verification Code |
POST /api/v25.0/{PHONE_NUMBER_ID}/verify_code | Verification Code |
POST /api/v25.0/{PHONE_NUMBER_ID}/messages | Send Messages / Mark as Read |
POST /api/v25.0/{PHONE_NUMBER_ID}/marketing_messages | Marketing Messages |
GET/POST /api/v25.0/{PHONE_NUMBER_ID}/whatsapp_business_profile | Business Profile |
POST /api/v25.0/{PHONE_NUMBER_ID}/media | Media — upload |
POST /api/v25.0/{PHONE_NUMBER_ID}/media_handle | Media — handle (for templates / Flows) |
GET /api/v25.0/{PHONE_NUMBER_ID}/media/{MEDIA_ID} | Media — fetch URL |
GET /api/v25.0/{PHONE_NUMBER_ID}/media?url=… | Media — fetch bytes |
GET/POST/DELETE /api/v25.0/{PHONE_NUMBER_ID}/message_qrdls | QR Codes |
POST/GET /api/v25.0/{PHONE_NUMBER_ID}/conversational_automation | Conversational Components |
GET/POST /api/v25.0/{PHONE_NUMBER_ID}/whatsapp_commerce_settings | Commerce |
GET/POST /api/v25.0/{PHONE_NUMBER_ID}/settings | Voice Calling — settings |
POST /api/v25.0/{PHONE_NUMBER_ID}/calls | Voice Calling — initiate |
GET /api/v25.0/{PHONE_NUMBER_ID}/call_permissions?user_wa_id=… | Voice Calling — permissions |
POST /api/v25.0/{PHONE_NUMBER_ID}/groups | Groups |
POST/GET/DELETE /api/v25.0/{PHONE_NUMBER_ID}/block_users | Block / Unblock |
Flow node ({FLOW_ID} as the first segment)
| Endpoint | Page |
|---|---|
GET/POST /api/v25.0/{FLOW_ID} | Flows — update / read |
POST /api/v25.0/{FLOW_ID}/assets | Flows — upload JSON |
POST /api/v25.0/{FLOW_ID}/publish | Flows — publish |
POST /api/v25.0/{FLOW_ID}/deprecate | Flows — deprecate |
CTWA / Ads Manager (act_{AD_ACCOUNT_ID} or {CAMPAIGN_ID}/{ADSET_ID}/{CREATIVE_ID}/{AD_ID} as the first segment)
| Endpoint | Page |
|---|---|
POST /api/v25.0/act_{AD_ACCOUNT_ID}/campaigns | CTWA — 1. campaign |
POST /api/v25.0/act_{AD_ACCOUNT_ID}/adsets | CTWA — 2. ad set |
POST /api/v25.0/act_{AD_ACCOUNT_ID}/adcreatives | CTWA — 3. creative |
POST /api/v25.0/act_{AD_ACCOUNT_ID}/ads | CTWA — 4. ad |
POST /api/v25.0/{AD_ID} | CTWA — 5. publish |
GET /api/v25.0/{CAMPAIGN_ID | ADSET_ID | CREATIVE_ID | AD_ID} | CTWA — read-back |
Onboarding
| Endpoint | Page |
|---|---|
POST /api/v1/partner/customers/{customer_id}/whatsapp/tp-signup | TP-Signup |
Authentication
Authorization: Bearer pk_live_<your-key>If WhatsApp isn’t enabled for your account yet, endpoints return 503. Contact support to enable.
Common errors
| Status | Body | When |
|---|---|---|
401 | { "success": false, "message": "unauthorized" } | Missing or invalid partner API key |
403 | { "success": false, "message": "id does not belong to your account" } | First-segment ID belongs to a different partner’s customer |
404 | { "success": false, "message": "id not found" } | First-segment ID isn’t on any partner’s roster |
502 | { "success": false, "message": "WhatsApp request failed. Try again shortly." } | Temporary platform error — retry with jitter |
503 | { "success": false, "message": "WhatsApp integration is not configured for your account. Contact support." } | WhatsApp not enabled for your account |
WhatsApp Cloud API errors from Meta (4xx with their own code / error_subcode) pass through with their original status.