Getting started with the Wati APIs
This guide will walk you through the basics to help you start using the Wati APIs quickly and easily.
Use V3 for supported operations. This page and its examples belong to documentation version 2.6; API route versions are separate.
1. Configure your account
Generate a scoped API token in your WATI account. Follow Authentication for the current token flow and permissions. Store the token in WATI_API_TOKEN using your client or secret manager.
Set WATI_API_HOST to the host provided for your account, such as https://live-mt-server.wati.io, without a tenant ID or /api suffix. Use that account's regional host; do not move its credentials to another region.
2. Discover a supported channel and conversation
curl --request GET "${WATI_API_HOST}/api/ext/v3/channels?page_number=1&page_size=20" \
--header "Authorization: Bearer ${WATI_API_TOKEN}"
curl --request GET "${WATI_API_HOST}/api/ext/v3/conversations?page_number=1&page_size=20" \
--header "Authorization: Bearer ${WATI_API_TOKEN}"Use a returned conversation id as the target. Check its channel_type and the intended workspace. Listing can be limited by active channel scope; an empty page does not establish that the account has no conversations. Do not invent IDs or substitute a contact ID for a conversation ID.
See List conversations for filters/pagination and Target formats for endpoint-specific identifiers.
3. Send one permitted reply
Confirm the recipient and text before running this request. Replace <conversation-id> with the ID selected above.
curl --request POST "${WATI_API_HOST}/api/ext/v3/conversations/messages/text" \
--header "Authorization: Bearer ${WATI_API_TOKEN}" \
--header 'Content-Type: application/json' \
--data '{"target":"<conversation-id>","text":"Hello from WATI","is_bot":true}'This REST operation currently supports WhatsApp and Instagram. It requires an active customer-service/reply window and the applicable permissions. is_bot=true is the default for automated replies. false is for a genuine Instagram human-agent reply within its granted deadline; it does not grant a longer deadline or reopen an expired session.
Check the Send text response. Retain the returned message identifiers and verify the final result through supported delivery webhooks or message history. A response does not prove delivery. On a timeout or other unknown send result, reconcile the original attempt before resending.
4. Continue with the correct contract
- V3 text recipe: examples in five languages.
- V3 WhatsApp template recipe: approved templates, business results and partial-recipient handling.
- Webhooks: current V2 creation exception and V3 management.
- Errors and limits: HTTP status, batch limits and safe recovery.
- MCP: connect an agent to product tools; use its signed-in tool definitions and check permissions.
Use a documented V1/V2 exception only when V3 cannot complete that business operation. V3 uses /api/ext/v3/... with a host-only base; legacy routes use /{tenantId}/api/v1/... or /{tenantId}/api/v2/.... Existing legacy clients remain supported according to their own endpoint contracts. Start with the version-selection guidance.
Updated 1 day ago

