Contacts API
Manage contacts associated with companies.Endpoints
| Method | Path | Auth | Description |
|---|---|---|---|
| GET | /contacts | Required | List contacts for a company |
| GET | /contacts/{id} | Public | Get a contact by ID |
| POST | /contacts | Public | Create a contact |
| PATCH | /contacts/{id} | Public | Update a contact |
| DELETE | /contacts/{id} | Required | Delete a contact |
List Contacts
Returns all contacts for a specific company. Requires authentication and company ownership.Query Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
company_id | uuid | Yes | — | Company ID to filter contacts |
skip | int | No | 0 | Number of records to skip |
limit | int | No | 100 | Max records to return |
Response 200 OK
Errors
| Status | Detail |
|---|---|
403 | Not enough permissions to access this company’s contacts |
Get Contact
Fetch a single contact by ID. No authentication required.Response 200 OK
Errors
| Status | Detail |
|---|---|
404 | Contact not found |
Create Contact
Create a new contact. Public endpoint — no authentication required.Request Body
Fields
| Field | Type | Required | Description |
|---|---|---|---|
company_id | uuid | No | Associate with a company |
first_name | string | Yes | First name |
last_name | string | No | Last name |
email | string | Yes | Email address |
phone | string | No | Phone number |
designation | string | No | Job title |
is_primary | boolean | No | Mark as primary contact (default: false) |
Response 201 Created
Returns the created contact object (same shape as Get Contact response).
Errors
| Status | Detail |
|---|---|
400 | Company not found |
Update Contact
Partially update an existing contact. All fields are optional.Request Body
Response 200 OK
Returns the updated contact object.
Errors
| Status | Detail |
|---|---|
404 | Contact not found |
Delete Contact
Permanently delete a contact.Response 204 No Content
No body returned.
Errors
| Status | Detail |
|---|---|
404 | Contact not found |
Rate Limits
| Endpoint | Limit |
|---|---|
POST /contacts | 60/min (public) |
| All other endpoints | 120/min (general) |