Skip to main content
The Waply REST API gives you programmatic access to contacts, conversations, messages, broadcasts, and webhooks on your Waply account. API access is available on the Growth and Enterprise plans. If you are on the Starter plan, upgrade from the Billing page in your dashboard to get started.

Base URL

All API requests are made to the following base URL:
https://api.waply.io/v1
Every endpoint path in this reference is relative to this base URL. For example, GET /contacts maps to https://api.waply.io/v1/contacts.

What you can do with the API

The Waply API covers the core objects and workflows in the platform:

Contacts

Create, retrieve, update, and delete contacts. Filter by tag, lifecycle stage, or search term.

Conversations

List and read conversations, assign them to agents or teams, resolve them, and add internal notes.

Messages

Send text, template, image, and document messages to contacts across WhatsApp and other channels.

Broadcasts

Send bulk messages to segmented audiences. Schedule broadcasts or send them immediately.

Webhooks

Register HTTPS endpoints to receive real-time events for messages, conversations, contacts, and broadcasts.

Authentication

Authenticate every request with a Bearer token from your Waply API keys.

Request format

Send all request bodies as JSON and include the Content-Type: application/json header on requests that have a body.
curl --request POST \
  --url https://api.waply.io/v1/contacts \
  --header 'Authorization: Bearer YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{"phone": "+14155552671", "name": "Jane Doe"}'

Response format

All responses are JSON. Successful responses return an HTTP 2xx status code. Collection endpoints return a data array along with pagination metadata.
{
  "data": [...],
  "total": 142,
  "page": 1
}
Single-resource endpoints return the object directly:
{
  "id": "con_01HXYZ",
  "phone": "+14155552671",
  "name": "Jane Doe"
}

Error format

When a request fails, Waply returns a non-2xx status code and a JSON body with an error object:
{
  "error": {
    "code": "validation_error",
    "message": "The 'phone' field must be in E.164 format."
  }
}

Common error codes

HTTP statusMeaning
401Invalid or missing API key. Check your Authorization header.
403Your plan does not include API access. Upgrade to Growth or Enterprise.
404The requested resource does not exist.
422Validation error. Check the message field for details.
429Rate limit exceeded. Slow down your requests.

Rate limits

Rate limits are enforced per API key on a rolling 60-second window.
PlanRequests per minute
Growth100
Enterprise500
When you exceed your limit, the API returns a 429 status. The response includes a Retry-After header indicating how many seconds to wait before retrying.
If you are running into rate limits on Growth, consider batching operations or using broadcasts for bulk messaging rather than sending individual messages in a loop.

Next steps

Authenticate your first request by following the Authentication guide.