API reference
Contacts
Create, update, list and delete contacts.
List contacts
GET
/contactsscope: contacts:readQuery: search (matches phone or name), page, per_page (1–100, default 25). Response: { "data": [ … ], "meta": { "page", "last_page", "total" } }.
Create or update a contact
POST
/contactsscope: contacts:writeContacts are keyed by normalised phone number. If the number already exists the contact is updated (200); otherwise it is created (201, source defaults to api).
curl -X POST https://waba.clouddns.co.in/api/v1/contacts \
-H "Authorization: Bearer wk_your_key" \
-H "Content-Type: application/json" \
-d '{
"phone": "+1 415 555 0100",
"name": "Jane Cooper",
"email": "jane@example.com",
"tags": ["vip", "newsletter"],
"groups": ["Spring sale"],
"custom_fields": { "city": "Austin" },
"opted_in": true
}'| Field | Type | Notes |
|---|---|---|
phone | string, required | 8–15 digits after normalisation. Cannot be changed afterwards. |
name | string | Max 120. |
email | string | Valid e-mail. |
tags | string[] | Up to 20, each max 40. |
groups | string[] | Up to 20, each max 40. |
custom_fields | object | Free-form key/value pairs usable in templates and automation. |
opted_in | boolean | false records an opt-out; no marketing messages will be sent. |
type, status, source | string | Optional classification fields. |
Creating beyond your plan’s contact limit returns 422 Contact limit reached.
Delete a contact
DELETE
/contacts/{id}scope: contacts:writeReturns 204 No Content, or 404 if the contact does not exist in your workspace.
Consent. Only message people who have opted in. WhatsApp can lower your number’s quality rating, or restrict it, if recipients block or report you.
Related features
REST API & webhooksA clean REST API for WhatsApp Cloud API messaging with scoped keys, IP allow-lists, rate limits and HMAC-signed webhooks. Docs included.Bulk campaignsSend approved WhatsApp template broadcasts to tagged audiences. Schedule, pause, resume and track sent, delivered and read rates live.