Companies
Companies group contacts and deals in one workspace.
The company object
{
"id": 3,
"name": "Acme Corp",
"domain": "acme.com",
"industry": "Software",
"size": "11-50",
"website": "https://acme.com",
"phone": null,
"address": null,
"city": "Paris",
"country": "France",
"created_at": "...",
"updated_at": "..."
}Endpoints
| Method | Path | Description |
|---|---|---|
| GET | /crm/companies | List companies |
| POST | /crm/companies | Create a company |
| POST | /crm/companies/import | Import up to 1,000 companies |
| GET | /crm/companies/{id} | Get a company |
| PUT | /crm/companies/{id} | Update a company |
| DELETE | /crm/companies/{id} | Delete a company |
| GET | /crm/companies/{id}/contacts | List linked contacts |
| GET | /crm/companies/{id}/deals | List linked deals |
Every endpoint is scoped to the API token's workspace. See CRM listings for company, nested contact and nested deal search, filters, sorting, pagination, and curl examples.
Import companies
POST /crm/companies/import accepts a rows array containing up to 1,000 company objects. Each row requires name and at least one identity, website or linkedin_url. The endpoint normalizes those identities, creates a company when neither identity exists, and updates the matching company otherwise. normalized_website and normalized_linkedin_url are prohibited. Rows may include the same canonical attributes as a company plus writable custom_fields.
The response reports created, updated, and failed counts with one bounded result per input row. A row fails without rolling back successful rows. It also fails when its website and LinkedIn URL resolve to different companies or an identity is reserved by a soft-deleted company.
{
"rows": [
{
"name": "Acme Corp",
"website": "acme.com",
"linkedin_url": "linkedin.com/company/acme",
"custom_fields": {"account_tier": "Enterprise"}
}
]
}Contact linkage
A contact belongs to zero or one company through contacts.company_id. Contact create, update, bulk create, bulk update, MCP, and Livewire forms accept only this workspace-scoped ID. Send null to remove the link.
Contact API responses include company_id, company_name, and a compact company object with id and name. Contact search, sorting, and exports use the linked company. Imports map the company_id field and may resolve either a workspace company ID or one exact normalized company name; they never create a company.