Base URL: https://api.zero.inc
Version: Beta 1.3 / v1.4.0
The Zero API is a REST API for the Zero CRM platform. All requests require a Bearer token and most require a workspaceId.
- Authenticate — include
Authorization: Bearer <token>on every request. - Get your workspace — call
GET /api/workspacesand note theidfield. - Use your workspace ID — pass it as
workspaceIdin all subsequent requests.
See authentication.md for full details.
| Resource | Path | Description |
|---|---|---|
| Workspaces | /api/workspaces |
Workspace discovery — start here |
| Columns | /api/columns |
Custom property definitions (select options, field types) |
| Companies | /api/companies |
Company records |
| Contacts | /api/contacts |
Contact records |
| Deals | /api/deals |
Deal/opportunity records |
| Notes | /api/notes |
Notes attached to companies/contacts/deals |
| Tasks | /api/tasks |
Tasks with assignees and deadlines |
Detailed docs: workspaces.md · columns.md · companies.md · contacts.md · deals.md · notes.md · tasks.md
All list endpoints accept:
| Parameter | Type | Description |
|---|---|---|
fields |
string | Comma-separated field selection, supports dot-notation (company.name) |
where |
JSON | Filter object — see filtering.md |
limit |
number | Max records (default 100) |
offset |
number | Pagination offset |
orderBy |
JSON | Sort definition |
{ "data": [...], "total": 100 } // list
{ "data": { ... } } // single recordNot-found returns HTTP 200 with {}.
Custom properties live inside a custom object keyed by column UUID:
{ "custom": { "54e1ca7d-...": "some-option-key-uuid" } }Always fetch GET /api/columns first to resolve UUIDs to human-readable names and option values.
See columns.md for details.
All entities support two modes:
DELETE /api/{entity}/{id}— hard delete, returns1DELETE /api/{entity}/{id}?archive=true— soft delete, returns archived object
- Select values are UUIDs — when filtering or writing to
select/multiselectcolumns, use the option'skeyUUID, not its display name. - PATCH custom fields — never send the entire
customobject on PATCH; use dot-notation:{ "custom.<COLUMN_UUID>": value }. - Task array fields replace, not merge —
contactIds,companyIds,dealIds,assignedToIdsare fully replaced on PATCH. - Location is a structured object —
{ city, state, country, coordinates }, not a string. - Deal confidence is 0–1 —
0.75means 75%. - Rich content uses Tiptap — notes and task descriptions use the Tiptap document format.