Skip to main content
The Workspace API lets you manage contacts, labels, custom fields, WhatsApp messaging, and automations programmatically.

Authentication

All requests require an API key. You can generate one from Workspace → Account → API Keys. Pass the key in of these ways:

Base URL

Request format

Every endpoint accepts both GET and POST. Parameters can be passed as URL query strings or as a JSON body — they work identically.

Channels

List Channels

Returns all channels accessible to your API key. Endpoint: GET/POST /channels/list Parameters: none Response:

Contacts

Create or Update a Contact

Creates a new contact or updates an existing one matched by phoneNumber. Endpoint: GET/POST /contacts/manage Example:

List Contacts

Returns a paginated list of contacts for a channel. Endpoint: GET/POST /contacts/list Response:

Custom Fields

Create or Update a Custom Field

Creates a new custom field definition or updates an existing one matched by name. Endpoint: GET/POST /custom-fields/manage

List Custom Fields

Returns all custom field definitions for a channel. Endpoint: GET/POST /custom-fields/list

Labels

Create or Update a Label

Creates a new label or updates an existing one matched by name. Endpoint: GET/POST /labels/manage

List Labels

Returns all labels for a channel. Endpoint: GET/POST /labels/list

WhatsApp

List Templates

Returns all approved WhatsApp templates for a channel. Endpoint: GET/POST /whatsapp/templates/list

Send a Template

Sends an approved WhatsApp template message to a phone number. The language code is automatically resolved from the stored template if not provided. Endpoint: GET/POST /whatsapp/templates/send Example:

Send a Message

Sends a regular WhatsApp message (text or media) within a 24-hour session window. Endpoint: GET/POST /whatsapp/message/send

Get Message Status

Returns the delivery status of a sent WhatsApp message by its WAMID. Endpoint: GET/POST /whatsapp/message/status Response fields: status, direction, type, content, timestamp, deliveredAt, readAt, error

Automations

List Automations

Returns all automations for a channel. Endpoint: GET/POST /automations/list

Trigger an Automation

Manually triggers an automation for a contact. Creates the contact and conversation automatically if they don’t exist. Endpoint: GET/POST /automations/trigger Response:

Error responses

All errors return a consistent shape:
Last modified on April 24, 2026