Contacts
The Contacts API provides CRUD access to contacts — the users that belong to a client account (type = client) — plus an ancillary action for setting a contact as the client’s account owner.
New to the API? Start with Getting started (base URL, response envelope, errors, pagination) and Authentication (API keys). Those conventions apply to every endpoint below and are not repeated here.
Identifier note: contacts are addressed by their numericid. Wherever{id}appears below it is the contactid.
The contact object
All endpoints that return a contact use this shape:| Field | Type | Notes |
|---|---|---|
id | integer | Contact id. Used in all URLs. |
first_name | string | |
last_name | string | |
name | string | Full name (first + last). |
email | string | Unique across all users. |
phone | string|null | |
job_position | string|null | |
account_owner | string | yes or no. Set via the account-owner action. |
status | string | Contact status (e.g. active). |
client | object | The client the contact belongs to { id, company_name }. |
role | object | { id, name }. |
social | object | Social profile handles. |
dates | object | created, updated. |
List / search contacts
Query parameters
| Parameter | Type | Description |
|---|---|---|
status | string | Filter by contact status. By default, soft-deleted contacts are excluded. |
client_id | integer | Filter by the client the contact belongs to. |
account_owner | string | Filter by account owner flag (yes|no). |
search | string | Free-text search on first/last name, email and phone. |
sort | string | first_name, last_name, email, created, updated. |
order | string | asc or desc (default asc). |
limit | integer | Results per page (max 100). |
page | integer | Page number. |
Example request
Example response — 200 OK
Get a contact
Example request
200) with message “Contact retrieved successfully.”
Create a contact
send_email=yes. The email must
be unique across all users — a duplicate returns a 422.
Body parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
first_name | string | yes | |
last_name | string | yes | |
email | string | yes | Must be unique across all users. |
clientid | integer | yes | Existing client id the contact belongs to. |
phone | string | no | |
position | string | no | Job position. |
send_email | string | no | yes to send the welcome email. Default no. |
Example request
Example response — 201 Created
Update a contact
first_name, last_name and email are required. The account owner is not changed here —
use the account-owner action.
Body parameters
| Parameter | Type | Required | Notes |
|---|---|---|---|
first_name | string | yes | |
last_name | string | yes | |
email | string | yes | Must remain unique (the current contact is ignored). |
phone | string | no | |
position | string | no | Job position. |
Example request
Example response — 200 OK
Delete a contact
404.
Example request
Example response — 200 OK
Set as account owner
200) with account_owner now yes and message “Contact set as account
owner successfully.”
Errors
See Getting started for the shared error format. Contact-specific:| Status | Meaning |
|---|---|
404 Not Found | The contact id does not exist, or the contact has been deleted. |
409 Conflict | The contact does not belong to a client account (account-owner action). |
422 Unprocessable Entity | Validation failed (see below). |