Skip to main content
Everything you can configure in Settings → CRM and every record on the Companies, Deals and Tasks pages is available here. The same endpoints power the MCP server, so an agent can set up a CRM end to end: learn the model, add fields, build pipelines, then create and move deals.
Start with the schema. GET /api/v1/crm/schema returns every object’s standard and custom fields, the pipelines and their stages, all settings (with a description of each), tags, and team members (the IDs you use for owner_user_id and assignee_user_id).

Scopes

Create a key with the CRM agent preset in the Developer Portal to get all of these except deletes. The :delete scopes can be granted to API keys and to OAuth apps registered in the Developer Portal; assistants that connect over MCP never hold them.

Configuration

Settings

Custom fields

Types are string, number, boolean, date and url; companies and deals also support select with options. field_name defaults to a snake_case version of the label and, like the type, can’t change later. Records store values in custom_fields, keyed by field_name, and a value for a defined field is checked against its type. A key that no field defines is handled differently per endpoint:

Records

Teams and pipeline access

Teams (member groups) and pipeline visibility use the crm:read / crm:write scopes; changes need a credential whose owner is a workspace admin.

Moving deals

PATCH /api/v1/deals/:id with a new stage_id moves the deal. Its status follows the stage type (open, won, lost), the move is recorded in stage history, and any workflow with the Deal Stage Changed trigger runs. When the team requires a lost reason, include lost_reason when moving to a lost stage.
Creating a deal without pipeline_id uses the default pipeline and its first stage; currency defaults to the team’s deal setting.

Responses

Lists return { "data": [...], "meta": { "total", "page", "per_page", "total_pages" } }; single records return { "data": {...} }. Errors return { "error", "error_description" } with a 4xx status, for example 409 in_use when deleting a stage that still has deals without move_deals_to. A team can have at most 50 pipelines, 200 saved contact views and 100 teams (member groups); creating one more answers 409 limit_reached.

MCP tools

The same operations as MCP tools

Rate Limits

API rate limit details