← Catalog

whatsapp.message API

whatsapp.message

live

Send text to a phone number or provider_id, or reply in an existing chat by chat_id, from your connected WhatsApp account.

live coverage

Unipile: all inputs

✓ marks a combination proven with a real provider call. Others are wired and unit-tested; their first live run verifies them.

Providers

ProviderStatus
Unipile live

Billing

Unit: per_message · unmatched results billed: no
Charged per successful send. WhatsApp account restrictions apply. Text only; attachments and broadcast campaigns are not exposed.

The exact quote is returned by /v1/inspect before every call and held with headroom on execution. The quote is the price floor: if the provider's actual cost overruns it, the run bills the overrun at the same rate, never above the hold. The unused part of every hold is released.

Run it

curl https://api.routergrowth.com/v1/run \
  -H "Authorization: Bearer $ROUTERGROWTH_API_KEY" \
  -d '{
    "capability": "whatsapp.message",
    "input": { "text": "..." },
    "routing": {"provider": "auto"}
  }'

Input schema

{
  "properties": {
    "account_id": {
      "description": "Account name or ID from whatsapp.accounts. Optional when exactly one account is connected.",
      "type": "string"
    },
    "chat_id": {
      "description": "Existing chat from whatsapp.messages; must belong to the selected account.",
      "type": "string"
    },
    "phone": {
      "description": "International phone number with + and country code, e.g. +14155550123.",
      "type": "string"
    },
    "provider_id": {
      "description": "WhatsApp user ID returned by Unipile (@s.whatsapp.net or @lid). Reuse unchanged.",
      "type": "string"
    },
    "text": {
      "minLength": 1,
      "type": "string"
    }
  },
  "required": [
    "text"
  ],
  "type": "object"
}

Normalized output fields

chat_id · message_id · provider_id