The Contacts API gives you programmatic access to your contact directory. You can list and search contacts, create new ones, and update existing records. All contact lookups are account-scoped — contacts belonging to a different account always returnDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/ArnasDon/wacrm/llms.txt
Use this file to discover all available pages before exploring further.
404, never 403.
GET /api/v1/contacts
Required scope: contacts:read
Returns a paginated list of contacts ordered newest first. See Pagination and Errors for cursor mechanics and the ?limit= parameter.
Query parameters
| Parameter | Type | Description |
|---|---|---|
search | string | Case-insensitive substring match against the contact’s name or phone. |
tag | string | Filter to contacts that have the tag with this tag UUID. Returns the contact’s full tag set. |
limit | number | Page size; default 50, max 100. |
cursor | string | Opaque cursor from the previous page’s meta.next_cursor. Omit for the first page. |
Response
Array of contact objects for the current page.
Opaque cursor for the next page.
null indicates the last page.POST /api/v1/contacts
Required scope: contacts:write
Creates a contact. The operation is find-or-create by phone number: if a contact with the given E.164 number already exists in your account, it is returned as-is with HTTP 200; a genuinely new contact returns HTTP 201. This makes POST /api/v1/contacts safe to call idempotently from automations that receive phone numbers without knowing whether a record already exists.
Request body
The contact’s phone number in E.164 format (e.g.
+14155550123). Used as the unique key for find-or-create.Display name for the contact.
Email address for the contact.
Company or organisation name.
An array of tag names (not IDs) to assign to the contact. Tags that do not yet exist in your account are created automatically. This replaces any tags set during a prior create call only if the contact is new — to update tags on an existing contact, use
PATCH /api/v1/contacts/{id}.Response
Returns the serialized contact object (same shape as the list rows above). HTTP status is200 when an existing record was matched, 201 when a new contact was created.
The HTTP status code (
200 vs. 201) is the reliable signal for whether the contact already existed. Both responses contain the full contact object.GET /api/v1/contacts/{id}
Required scope: contacts:read
Returns a single contact by its UUID. Returns 404 if the contact does not exist or if it belongs to a different account — Wacrm never reveals that a resource exists in another account.
PATCH /api/v1/contacts/{id}
Required scope: contacts:write
Partially updates a contact. Only the fields you include in the request body are changed — omitted fields are left untouched. Sending null for a field clears it.
Request body
Updated display name. Send
null to clear.Updated email address. Send
null to clear.Updated company name. Send
null to clear.An array of tag names that replaces the contact’s current tag set entirely. Pass an empty array (
[]) to remove all tags. Omit the field to leave tags unchanged.404 if the contact does not exist or belongs to a different account. On success, returns the updated contact object with HTTP 200.