canonical: https://jentic.com/apis/apideck.com/apideck-crm

# Apideck CRM API

Apideck CRM is a unified API that maps a single schema for companies, contacts, leads, opportunities, pipelines, activities, notes, and users onto downstream CRMs such as Salesforce, HubSpot, Pipedrive, Zoho, and Microsoft Dynamics. The 40 operations cover the day-to-day CRM objects most apps need, and Apideck routes each call through Apideck Vault so per-customer CRM credentials never reach the calling app. Builders typically replace 5+ direct CRM integrations with a single Apideck contract.

## For AI agents

Read and write companies, contacts, leads, opportunities, pipelines, activities, and notes across Salesforce, HubSpot, Pipedrive, Zoho, and other CRMs through one unified schema.

## Scope

Does not handle marketing automation, customer support tickets, or quote-to-cash document generation - use for CRM core records (contacts, companies, leads, opportunities, activities) only.

## Capabilities

- Create, list, update, and delete companies and contacts with consistent fields across CRMs
- Manage opportunities with monetary value, stage, pipeline reference, and close date
- Create and update leads with status, source, and converted-contact references
- Read pipeline definitions and stage names so workflow logic does not have to hard-code per-CRM stage names
- Log activities (calls, meetings, tasks) and notes against contacts, companies, and opportunities
- List CRM users so an integration can attribute records to the right owner

## Use cases

### Bidirectional Contact Sync

Sync contacts between a SaaS application and whichever CRM a customer uses. /crm/contacts handles list, create, update, and delete with the same payload across Salesforce, HubSpot, Pipedrive, and Zoho. The unified schema means a single integration replaces five direct CRM connections, so an outreach or marketing app can ship CRM sync as a feature in days rather than quarters.

Example prompt: GET /crm/contacts updated since the last sync and POST any local-only contact records to /crm/contacts on the connected CRM

### Deal Stage Updates from External Tools

Move opportunities through the pipeline from a quoting, contract, or analytics tool. /crm/opportunities accepts stage and status updates with the same field shape across CRMs, so a contract-signed event from DocuSign can update the deal to closed-won regardless of whether the CRM is HubSpot or Salesforce.

Example prompt: PATCH /crm/opportunities/{id} with status='WON' when a contract is signed in the upstream tool

### Activity Logging from Email and Calendar

Log emails, meetings, and calls against the right contact or deal in a customer's CRM without writing per-CRM activity adapters. /crm/activities accepts the unified activity payload (type, subject, owner, related-to references) and Apideck creates the native activity on the connected CRM. Used by sales-engagement tools to roll out CRM logging across customer base in one release.

Example prompt: POST /crm/activities with type='meeting', subject, owner_id, and the contact_id captured from the calendar invite

### AI Agent CRM Assistant

Give an AI agent a tool to read and update CRM records on whichever platform the customer runs. Through Jentic, the agent searches for an intent like 'create a crm contact' and gets the matching Apideck operation with its input schema. The agent does not need a Salesforce-specific or HubSpot-specific adapter.

Example prompt: Search Jentic for 'create crm contact', load the /crm/contacts schema, and execute with the contact's name, email, and company_id

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| GET | /crm/contacts | List contacts on the connected CRM |
| POST | /crm/contacts | Create a contact |
| GET | /crm/companies | List companies on the connected CRM |
| POST | /crm/companies | Create a company |
| GET | /crm/opportunities | List opportunities with filters |
| PATCH | /crm/opportunities/{id} | Update an opportunity (stage, value, owner) |
| GET | /crm/pipelines | List pipelines and their stages |
| POST | /crm/leads | Create a lead |

## Key resources

- **Companies** — Create, list, update, and delete company records
- **Contacts** — Create, list, update, and delete contact records
- **Leads** — Create, list, update, and convert leads
- **Opportunities** — Manage opportunities with stage, value, and pipeline references
- **Pipelines** — Read pipeline definitions and the stages each contains
- **Activities** — Log calls, meetings, tasks, and emails against records
- **Notes** — Create and read notes attached to companies, contacts, and opportunities
- **Users** — List CRM users so integrations can attribute owners correctly

## Why Jentic

- **Setup:** Wiring the Apideck CRM API by hand means setting up its API key plus consumer and service headers, learning the unified contact and opportunity shapes, and normalising across CRM platforms yourself. Through Jentic you install once, import Apideck CRM from the API Directory, store the key once, and your agent calls it.
- **Permission scoping:** The Apideck CRM API puts the opportunity id in the URL path (/crm/opportunities/{id}) while contacts, companies, and leads are created via the request body, so scope the agent to the operations it needs, such as listing contacts and reading pipelines, and leave out updating opportunities unless you add it. You choose the allowed operations, so the agent only calls what you list.
- **Credential handling:** Your Apideck API key is stored once, encrypted, by your own Jentic One instance and injected at execution time. It never enters the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'find a contact' or 'list open opportunities', and Jentic returns the matching Apideck CRM operation with its input schema so the agent calls the right endpoint without browsing the reference docs.

## Related APIs

- **Salesforce REST API** — Native Salesforce REST API for customers running only on Salesforce
- **Pipedrive API** — Native Pipedrive API for customers running only on Pipedrive
- **Apideck ATS API** — Apideck ATS unified API for syncing candidates that originated as CRM leads
- **Apideck Accounting API** — Apideck Accounting to invoice the contact or company captured in CRM

## FAQ

### What authentication does the Apideck CRM API use?

Apideck requires Authorization with a bearer API key, x-apideck-app-id with your Unify application id, and x-apideck-consumer-id with the end-customer reference stored in Apideck Vault. Through Jentic all three values are stored encrypted in the vault and injected at execution time.

### Which CRMs does the Apideck CRM API cover?

Apideck Unify routes CRM calls to connectors including Salesforce, HubSpot, Pipedrive, Zoho CRM, Microsoft Dynamics, Copper, Capsule, and Insightly. Use the x-apideck-service-id header to pin the call to a specific connector when a consumer has more than one connected.

### Can I create a contact with the Apideck CRM API?

Yes. POST to /crm/contacts with first_name, last_name, emails, phone_numbers, and company_id. Apideck translates the unified payload into the native contact on the connected CRM and returns the created object with the connector's id.

### What are the rate limits for the Apideck CRM API?

Apideck enforces limits at both the Unify layer and the underlying connector. Salesforce, HubSpot, and the others each have their own quotas, so a /crm/contacts call respects the downstream connector's limits. Expect ConnectorRateLimitError on connector throttling and HTTP 429 on Unify throttling - retry with exponential backoff.

### How do I update an opportunity stage through Jentic?

Search Jentic for 'update crm opportunity stage', load the /crm/opportunities/{id} PATCH schema, and execute with the opportunity id and the new status. The response confirms the update on the connected CRM.

### Is the Apideck CRM API free?

Apideck Unify offers a free tier with capped requests; production use is billed per consumer connection. See https://www.apideck.com/pricing for current tiers and contact sales@apideck.com for volume pricing.

### Can I limit what my agent is allowed to do with the Apideck CRM API?

Yes. Because Jentic One is self-hosted, you decide which of the Apideck CRM operations your agent may call, so you can allow read-only actions like listing contacts (GET /crm/contacts) and reading pipeline definitions (GET /crm/pipelines) while leaving out writes. If the agent should not close deals, you simply omit the opportunity update operation (PATCH /crm/opportunities/{id}), and the agent can only call the operations you have listed. Your own rules also govern the API key and consumer credentials, which stay under your control and are injected only for the operations you permit.
