Skip to main content
Contacts represent individual people inside a company. Each contact must be linked to a company via companyId. You can attach a role, mark one contact as primary, and store arbitrary key-value data in customFields.
All contacts endpoints are scoped to your tenant. Pass your API key in the Authorization: Bearer header on every request.

List contacts

GET /api/v1/contacts/contact Returns a paginated list of contacts for the authenticated tenant. Filter by company or run a full-text search across names and emails.

Query parameters

string
Filter contacts belonging to a specific company. Must be a valid UUID.
Full-text search across contact names and email addresses.
integer
default:"1"
1-based page index.
integer
default:"25"
Number of results per page. Maximum 100.

Response


Create a contact

POST /api/v1/contacts/contact Creates a new contact linked to an existing company.

Request body

string
required
UUID of the company this contact belongs to.
string
required
Contact’s first name. Maximum 100 characters.
string
required
Contact’s last name. Maximum 100 characters.
string
Contact’s email address. Must be a valid email format.
string
Contact’s phone number. Maximum 50 characters.
string
Job title or role within the company. Maximum 100 characters.
boolean
When true, marks this as the primary contact for the company.
string
Internal notes about this contact.
object
Key-value map of custom field data. Any required custom fields your tenant has configured must be included.

Response

Returns 201 Created with the new contact wrapped in { "data": {...} }.

Get a contact

GET /api/v1/contacts/contact/{id} Retrieves a single contact by ID.

Path parameters

string
required
UUID of the contact.

Response

Returns 200 OK with { "data": { contact object } }. Returns 404 Not Found if the contact does not exist or belongs to a different tenant.

Response fields

object

Update a contact

PATCH /api/v1/contacts/contact/{id} Partially updates a contact. Only include the fields you want to change. Pass null to clear a nullable field.

Path parameters

string
required
UUID of the contact to update.

Request body

All fields are optional.
string
Updated first name. Maximum 100 characters.
string
Updated last name. Maximum 100 characters.
string | null
Updated email address. Pass null to clear.
string | null
Updated phone number. Pass null to clear.
string | null
Updated role. Pass null to clear.
boolean
Whether to mark this contact as the primary contact.
string | null
Updated internal notes. Pass null to clear.
object
Replaces all custom field values with the provided map.

Response

Returns 200 OK with { "data": { updated contact } }. Returns 404 Not Found if the contact does not exist.