Contacts API
List and create CRM contacts.
Base path: /api/v1/crm/contacts
List contacts
GET /api/v1/crm/contacts?page=1&limit=50&search=Acme&status=active| Parameter | Type | Notes |
|---|---|---|
page | integer | Default 1 |
limit | integer | Default 50, maximum 100 |
search | string | Tokenized contact search |
status | string, repeatable | active, inactive, blocked, or pending |
Example:
curl "https://workspace.leenops.com/api/v1/crm/contacts?search=Acme&limit=10" \
-H "Authorization: Bearer $LEENOPS_API_KEY"The response contains data and pagination.
Create a contact
POST /api/v1/crm/contacts
Content-Type: application/jsonRequires contacts.write.
{
"email": "john@example.com",
"first_name": "John",
"last_name": "Smith",
"phone": "+32 2 555 01 23",
"job_title": "Operations Director",
"company_name": "Acme Corp",
"contact_type": "prospect",
"status": "active",
"tags": ["api-test"],
"country": "Belgium",
"city": "Brussels"
}email is the only required field.
Accepted optional fields:
| Field | Validation |
|---|---|
first_name, last_name | Maximum 120 characters |
phone | Maximum 50 characters |
job_title | Maximum 180 characters |
company_id | UUID, empty string, or null |
company_name | Maximum 255 characters |
contact_type | new, engaged, qualified, customer, inactive, lead, prospect, partner, or vendor |
status | active, inactive, blocked, or pending |
lead_source, industry | Maximum 180 characters |
notes | Maximum 10,000 characters |
tags | At most 50 strings, each at most 100 characters |
custom_fields | JSON object |
external_id | Maximum 255 characters |
country, state, city | Maximum 120 characters |
social_linkedin | Maximum 500 characters |
The body is strict: unknown fields such as company are rejected. Use
company_id or company_name.
The current create handler returns the created contact object directly with
HTTP 201, rather than wrapping it in { "data": ... }.
Update and delete
There is currently no /api/v1/crm/contacts/{id} REST route. Update and delete
contacts through the application or an authorized MCP tool.

