Unified CRM API

Knit's Unified CRM API gives you a single integration to read and write contact, company, deal, and activity data across Salesforce, HubSpot, Pipedrive, Zoho CRM, Microsoft Dynamics 365, and more. Build once - support every CRM your customers use.

What Is a Unified CRM API?

A unified CRM API is a single, standardized programming interface that lets your product read and write customer relationship data β€” contacts, companies, deals, and activities β€” across multiple CRM platforms without building a separate integration for each one.

CRM platforms each have their own APIs with different authentication methods, object models, and rate limits. Knit normalizes these differences so your engineering team integrates once, and Knit handles the translation layer for every CRM your customers use.

Knit normalizes four things across all providers:

LayerWhat Knit handles
Data Models / APIsConsistent field names and structures β€” contacts Accounts, Deals, Leads , andEngagement data from Salesforce, HubSpot, and Pipedrive return the same schema across all CRM apps
AuthenticationOAuth, API keys, and tokens managed per-provider; you pass a single X-Integration-Id header
PaginationCursor-based pagination works identically regardless of how the provider implements it β€” Salesforce allows up to 2,000 records per query while HubSpot caps at 100; Knit abstracts that difference away
Error formatsStandardized error responses with provider context where available
πŸ“˜

Building AI agents?

Knit is MCP-compatible (Model Context Protocol). Your agents can perform authenticated read and write actions across every connected CRM with zero per-provider logic. Try MCP Hub β†’


How It Works

1. Your customer connects their CRM
Knit's pre-built embedded auth UI handles OAuth, API keys, and token management per provider. Your team writes zero auth code.

2. Knit normalizes the data
Contacts, companies, deals, and activities are all mapped to Knit's unified schema β€” regardless of how each CRM stores or names them internally.

3. Your product calls one API
Use a single set of endpoints and data models across your entire product. Add a new CRM later? No code changes on your side.

4. Stay in sync with real-time webhooks
Native and virtual webhooks fire on record changes β€” new leads, deal-stage moves, contact updates β€” with a consistent event schema across all providers.


CRM Data Objects

The following objects are available through the unified schema. All fields are normalized across providers.

Individual people records β€” name, email, phone, and the company they're associated with.

id, first_name, last_name, emails[], phones[], addresses[],
company_id, owner_id, created_at, updated_at

β†’ Contact data model Β· Create contact Β· Update contact Β· List contacts Β· Delete Contact Β· Get Contact by ID Β· Get Contacts (Batch API)


The organizations your contacts belong to β€” the CRM equivalent of an account record.

id, name, domain, industry, employee_count, addresses[],
owner_id, created_at, updated_at

β†’ Company data model Β· Create company Β· Update company Β· List companies Β· Delete Company Β· Get Company Batch API


Sales opportunities with stage, value, and pipeline position β€” called "Deals" in HubSpot/Pipedrive and "Opportunities" in Salesforce; Knit normalizes both to one schema.

id, name, amount, currency, stage, pipeline_id, close_date,
owner_id, company_id, contact_ids[], status, created_at, updated_at

β†’ Deal data model Β· Create deal Β· Update deal Β· Get deal stagesΒ· Delete a Deal Β· List Deals Β· Get Deals by ID Β· Get Deals Batch API


Unqualified or pre-pipeline records, where the underlying CRM distinguishes leads from contacts (e.g. Salesforce, Zoho CRM).

id, first_name, last_name, email, company_name, status,
source, owner_id, created_at, converted_at

β†’ Lead data model Β· Create lead Β· Update lead Β· Delete A leadΒ· List LeadsΒ· Get leads by IDΒ· Get Leads Batch API


Calls, emails, meetings, and notes logged against a contact, company, or deal β€” the interaction history layer.

id, type, subject, content, direction, status, owner_id,
start_time, end_time, contact_ids[], company_ids[], deal_ids[]

β†’ Engagement data model Β· Create an Engagement Β· Update Engagement Β· Delete An EngagementΒ· List EngagementsΒ· Get Engagement by IDΒ· Get Engagements Batch API


πŸ“˜

Custom fields

Fields outside the unified schema are accessible via custom fields that you could map to the unified model, or the Passthrough API that lets you make direct calls to the underlying CRM using Knit's auth layer without giving up the unified platform.


API Reference

All CRM endpoints are organized by category. Each endpoint works identically regardless of the underlying CRM β€” pass your API key and the customer's X-Integration-Id, and the response schema is consistent across all providers.

Contact APIs

EndpointDescription
Contact data modelFull field reference for the normalized contact object
Create contactAdd a new contact record to the connected CRM
Update contactUpdate name, email, phone, or company association
List contactsRetrieve contacts with filtering and pagination

Company APIs

EndpointDescription
Company data modelFull field reference for the normalized company object
Create companyAdd a new company/account record
Update companyUpdate firmographic or ownership fields
List companiesRetrieve companies with filtering and pagination

Deal APIs

EndpointDescription
Deal data modelField reference for the normalized deal/opportunity object
Create dealAdd a new deal to a pipeline
Update deal stageMove a deal through the pipeline or update amount/close date
List deals by pipelineRetrieve deals filtered by pipeline or stage

Lead APIs

EndpointDescription
Lead data modelField reference for the normalized lead object
Create leadAdd a new unqualified lead record
Convert leadConvert a lead into a contact, company, and deal

Engagement APIs

EndpointDescription
Engagement data modelField reference for calls, emails, meetings, and notes
Log engagementWrite a new activity against a contact, company, or deal
List engagementsRetrieve activity history for a record

Supported Platforms

Knit connects to every major CRM platform. A single integration gives you access to all of them.

CategoryPlatforms
Enterprise CRMSalesforce, Microsoft Dynamics 365
Sales & marketing CRMHubSpot, Pipedrive, Zoho CRM
Growth & SMB CRMFreshsales, Close

Don't see a platform? Use the Connector Builder / Integration Agent to add it yourself in hours, not weeks.


Key Capabilities

Real-Time Sync & Webhooks

Knit supports both native webhooks (forwarded directly from platforms that emit them) and virtual webhooks (Knit polls the source, detects changes, and emits events). Both use the same subscription interface and event schema β€” your integration code is identical either way.

Supported event types include: record.new, record.modified, record.deleted, deal.stage_changed, and more.

Zero Data Storage

Knit never stores your customers' CRM data at rest. Every API request passes through to the source CRM in real time. This reduces your GDPR, CCPA, and SOC 2 compliance scope β€” there are no replicated contact or deal records sitting in a third-party system.

AI Connector Builder / Integration Agent

When a customer's CRM isn't in Knit's library, the AI Connector Builder lets your team define a new connector in hours. Specify the platform's API structure and data mapping; Knit's AI generates the connector.

Passthrough API

Need an object outside the unified APIs β€” a custom object in Salesforce, a custom pipeline field in HubSpot? Passthrough lets you make direct calls to the underlying CRM using Knit's authentication layer.

MCP Compatibility

Knit runs CRM-specific MCP servers (including a dedicated HubSpot MCP Server), giving AI agents authenticated read/write access to contacts, companies, deals, and custom objects across every connected CRM through the same unified layer β€” no per-provider auth or endpoint logic in your agent code.


Quick Start

Authentication

All requests require two headers:

Authorization: Bearer YOUR_API_KEY
X-Integration-Id: YOUR_CUSTOMER_INTEGRATION_ID

The X-Integration-Id is the unique identifier for a specific customer's connected CRM, issued after they complete the Knit auth flow.

Fetch contacts

curl --request POST \
     --url https://api.getknit.dev/v1.0/sync.start \
     --header 'accept: application/json' \
     --header 'content-type: application/json' \
     --data '
{
  "dataType": "contact"
}

Response β€” same schema whether the customer uses Salesforce, HubSpot, or Pipedrive:

{
  "info": {
    "id": "02d528f1-89f2-4086-bbf2-6becd6ec407a",
    "firstName": "Jordan",
    "lastName": "Lee",
    "createdAt": "2026-05-23T12:42:34Z",
    "updatedAt": "2026-05-23T12:42:34Z",
    "ownerId": "407425865",
    "companyId": "ac19c8f9-a901-4db3-bef1-5aaca2a7c15a"
  },
  "emails": [
    { "type": "WORK", "email": "[email protected]" }
  ],
  "phones": [
    { "type": "WORK", "phoneNumber": "9838783908" }
  ],
  "addresses": [
    {
      "addressLine1": "72/1A Church Street",
      "city": "Austin",
      "state": "TX",
      "country": "USA",
      "zipCode": "78701",
      "addressType": "WORK"
    }
  ],
  "customFields": {
    "fields": {
      "unmappedFieldKey": "value"
    }
  }
}

Create a deal

curl --request POST \
     --url https://api.getknit.dev/v1.0/crm.deal.create \
     --header 'accept: application/json' \
     --header 'content-type: application/json'

Log an activity

curl --request POST \
     --url https://api.getknit.dev/v1.0/crm.engagement.create \
     --header 'accept: application/json' \
     --header 'content-type: application/json'

🚧

Rate limits

Knit applies per-provider rate limits based on the underlying CRM's constraints and manages it automatically if you've set up a sync. If you hit a limit, the API returns a 429 response with a Retry-After header.


Use Cases

Multi-CRM Lead Routing

Unify lead data from multiple CRMs into a single view β€” deduplicating, standardizing, and routing leads to the right owner in real time.

Typical flow: record.created webhook β†’ normalize lead β†’ dedupe against existing contacts β†’ assign owner β†’ sync back to source CRM

AI SDRs & Sales Agents

Power AI sales agents with unified, real-time access to CRM and calendar data for personalized outreach and accurate scheduling β€” without per-CRM logic in the agent.

Typical flow: sync contacts + deals β†’ embed into vector store β†’ ground LLM responses in live pipeline context β†’ use MCP write tools to log activity back into the CRM

Deal Pipeline Sync

Keep deal stage, amount, and ownership consistent across a data warehouse, BI tool, or a second CRM used by a different team.

Typical flow: fetch deals by pipeline β†’ normalize stage names across providers β†’ sync to warehouse or downstream tool β†’ write updates back on stage change

Multi-Channel Sales Sequencing

Orchestrate outreach sequences that read and write CRM state β€” contacts, companies, and engagement history β€” across whichever CRM the customer runs.

Typical flow: read contacts + engagement history β†’ trigger sequence step β†’ log engagement β†’ update contact status

Customer 360 / Unified View

Combine CRM contact and deal data with support, product, and billing data to build a single customer view inside your product.

Typical flow: sync contacts + companies + deals β†’ join with product usage/support data β†’ render unified customer profile

Revenue Reporting & Forecasting

Pull deal and pipeline data across every CRM a customer's teams use into one consistent schema for forecasting and reporting.

Typical flow: fetch deals by stage and close date β†’ normalize currency and stage naming β†’ aggregate into reporting layer


FAQ

What is a unified CRM API?
A unified CRM API is a single, standardized interface that lets your product read and write contact, company, deal, and activity data across multiple CRM platforms without building a separate integration for each one. You integrate with Knit once; Knit normalizes the data models, authentication, and API differences between providers.

How long does it take to integrate?
Most teams go live in 1–3 days with Knit. Building a production-ready 1:1 native integration against a single CRM like Salesforce typically takes several weeks β€” but when you build with Knit, one integration unlocks every connected CRM, and Knit maintains all connectors as providers update their APIs.

Does Knit store CRM data?
No. Knit is a pass-through layer β€” requests hit the source CRM in real time and no data is stored at rest. This reduces your GDPR, CCPA, and SOC 2 compliance scope.

What's the difference between a Lead and a Contact in the unified schema?
Where the underlying CRM distinguishes them (Salesforce, Zoho CRM), Knit preserves that distinction β€” Leads are pre-pipeline, unqualified records; Contacts are associated with a Company and can be linked to Deals. Where a CRM doesn't distinguish them (HubSpot, Pipedrive), Knit maps records to the Contact object.

What if a customer's CRM isn't on the list?
Using the Connector Builder, we can add a new connector in hours.

Is Knit compatible with AI agents and MCP?
Yes. Knit runs CRM-specific MCP servers, including a dedicated HubSpot MCP Server, so agents in MCP-compatible frameworks can perform authenticated CRM read/write actions via Knit with no per-provider logic.

What's the passthrough API?
The passthrough API lets you make direct calls to the underlying CRM using Knit's authentication layer. Use it for custom objects or fields outside the unified schema.


Next Steps

πŸš€ Get your API keyStart building in minutes
πŸ‘€ Contact data modelFull field reference for the core object
πŸ’° Deal data modelDeal/opportunity field reference
🏒 Company data modelAccount/company field reference
πŸ“ž Engagement data modelCalls, emails, meetings, and notes field reference
πŸ”— Supported CRM integrationsFull list of connected platforms
Custom ObjectsAPIs to work with custom objects

Did this page help you?