Skip to content

Companies ​

Companies group contacts and deals in one workspace.

The company object ​

json
{
  "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 ​

MethodPathDescription
GET/crm/companiesList companies
POST/crm/companiesCreate a company
POST/crm/companies/importImport 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}/contactsList linked contacts
GET/crm/companies/{id}/dealsList 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.

json
{
  "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.

API v1.0