+14155552671).
GET /workspaces//contacts
List all contacts in a workspace. Supports full-text search, tag filtering, opt-in status filtering, and pagination.Path Parameters
string
required
The unique ID of the workspace whose contacts you want to list.
Query Parameters
string
Full-text search across contact name, phone number, and email.
string
Filter contacts that have this tag applied (e.g.
vip, lead).string
Filter by opt-in status. Accepted values:
opted_in, not_set, opted_out.integer
Page number to retrieve. Defaults to
1.integer
Number of results per page. Defaults to
20. Maximum is 100.Request
List contacts
Response
POST /workspaces//contacts
Create a new contact, or update an existing one if a contact with the same phone number already exists (upsert behavior). This makes it safe to call repeatedly from sync jobs without creating duplicates.Path Parameters
string
required
The unique ID of the workspace to create the contact in.
Body Parameters
string
required
The contact’s phone number in E.164 format (e.g.
+14155552671). Used as the unique identifier for upsert.string
The contact’s first name.
string
The contact’s last name.
string
The contact’s email address.
array
A list of string tags to apply to the contact (e.g.
["lead", "webinar-2024"]). Tags are created automatically if they don’t already exist.object
A key-value object of custom field data to store on the contact (e.g.
{"order_count": "5", "loyalty_tier": "gold"}).string
The contact’s WhatsApp messaging consent status. Accepted values:
opted_in, not_set. Defaults to not_set if omitted.Request
Create or upsert a contact
Response
GET /workspaces//contacts/
Retrieve a single contact by their ID.Path Parameters
string
required
The unique ID of the workspace.
string
required
The unique ID of the contact to retrieve (e.g.
con_7a2b3c4d5e).Request
Get a contact
Response
PATCH /workspaces//contacts/
Update one or more fields on an existing contact. Only the fields you provide are changed; all other fields remain unchanged.Path Parameters
string
required
The unique ID of the workspace.
string
required
The unique ID of the contact to update.
Body Parameters
string
Updated first name.
string
Updated last name.
string
Updated email address.
array
Replaces the contact’s existing tags with this new list.
object
Merges these key-value pairs into the contact’s existing custom fields.
string
Updated opt-in status. Accepted values:
opted_in, not_set, opted_out.Request
Update a contact
Response
POST /workspaces//contacts/import
Bulk import contacts by uploading a base64-encoded CSV file. Imports are processed asynchronously — the endpoint returns immediately with animport_id you can use to track progress.
Path Parameters
string
required
The unique ID of the workspace to import contacts into.
Body Parameters
string
required
A base64-encoded CSV string. The CSV must include a
phone column. Supported columns: phone, first_name, last_name, email, tags, opt_in_status.string
How to handle contacts whose phone number already exists. Accepted values:
skip (leave existing record unchanged) or update (overwrite fields with CSV values). Defaults to update.Request
Bulk import contacts
Response
Imports are processed asynchronously. The returned
import_id can be used to track the progress of your import — including the number of contacts created, updated, skipped, and any row-level errors — via the import status endpoint documented in your dashboard’s API settings.
