canonical: https://jentic.com/apis/data2crm.com/data2crm

# Data2CRM.API

Data2CRM.API is a unified CRM integration layer that exposes a single REST surface across many third-party CRM systems. The 360-endpoint API covers core CRM resources - accounts, contacts, leads, opportunities, deals, cases, tasks, notes, products, invoices, quotes, and more - through consistent CRUD, bulk, count, and describe operations. Authentication uses two API keys, X-API2CRM-USER-KEY and X-API2CRM-APPLICATION-KEY, sent as request headers. The base URL is https://api-2445581398133.apicast.io:443/v1.

## For AI agents

Read and write across many CRMs through a single unified surface - manage accounts, contacts, leads, opportunities, tasks, and more without per-CRM integration code.

## Scope

Does not handle marketing email delivery, payment processing, or finance ledger operations - use for unified CRM record CRUD, bulk operations, schema describe, and counts only.

## Capabilities

- Create, read, update, and delete records across accounts, contacts, leads, and opportunities through a unified surface
- Run bulk insert, update, and delete operations on CRM entities for one-shot migrations and syncs
- Count records and describe entity schemas to drive dynamic CRM-aware UIs
- Manage supporting resources - tasks, notes, calls, meetings, attachments - alongside core CRM records
- Authenticate using X-API2CRM-USER-KEY and X-API2CRM-APPLICATION-KEY headers scoped per connected CRM
- Switch the underlying CRM (Salesforce, Zoho, Pipedrive, etc.) by changing the application key without changing endpoint paths

## Use cases

### CRM Migration

Migrate accounts, contacts, leads, opportunities, and supporting records between two CRMs without writing per-CRM clients. The bulk POST and PUT endpoints under `/application/entity/{resource}/bulk` accept array payloads, and /describe endpoints report the target schema. Suitable for consultancies and data teams running one-time migrations between Salesforce, Zoho, and similar systems.

Example prompt: Read all accounts from CRM A via GET `/application/entity/account/list`, transform the records to the target CRM schema, and bulk insert them via POST `/application/entity/account/bulk` into CRM B.

### Multi-CRM Productized Integration

Ship a single integration that supports many CRMs by swapping the application key rather than maintaining per-vendor SDKs. Each CRM is accessed through the same `/application/entity/{resource}` URL pattern with consistent CRUD, bulk, count, and describe operations. Useful for SaaS products that integrate with their customers' CRMs.

Example prompt: Detect the customer's connected CRM, then call POST `/application/entity/contact` with the same payload shape regardless of whether the target is Salesforce or Zoho.

### Two-Way CRM Sync

Sync core CRM records between an external system of record (e.g. a marketing platform) and the customer's CRM in both directions. The list, count, and bulk endpoints support polling and reconciliation flows for accounts, contacts, leads, opportunities, and tasks. Useful for marketing automation and customer-success platforms keeping CRM data current.

Example prompt: Every 30 minutes, fetch updated leads from the marketing platform and push changes via PUT `/application/entity/lead/bulk` while pulling new leads from the CRM via GET `/application/entity/lead/list.`

### Schema-Aware CRM Tooling

Render dynamic forms and field pickers that adapt to whichever CRM the customer has connected by reading entity schemas at runtime. The /describe endpoints return the field definitions for each entity, allowing tools to surface the right fields without hard-coded per-CRM logic. Useful for low-code builders and admin consoles.

Example prompt: Call GET `/application/entity/account/describe` to retrieve account fields for the connected CRM, then render a dynamic form for the user to create a new account.

### Agent-Driven CRM Workflows via Jentic

AI agents that operate across multiple customer CRMs can call Data2CRM.API through Jentic without juggling each customer's pair of API keys. The agent searches Jentic for the relevant intent, loads the schema, and executes a CRM operation while the user and application keys stay in your Jentic One instance. This keeps CRM credentials isolated per tenant.

Example prompt: Use Jentic to search 'create a crm contact', load POST `/application/entity/contact`, and execute it with the contact details from the user's request.

## Key endpoints

| Method | Path | Description |
| --- | --- | --- |
| POST | `/application/entity/account` | Create an account record |
| GET | `/application/entity/account/list` | List account records |
| POST | `/application/entity/account/bulk` | Bulk-create account records |
| PUT | `/application/entity/account/bulk` | Bulk-update account records |
| DELETE | `/application/entity/account/bulk` | Bulk-delete account records |
| GET | `/application/entity/account/describe` | Describe the account entity schema |
| GET | `/application/entity/account/count` | Count account records matching a filter |

## Key resources

- **Account** — Manage account records across the connected CRM
- **Contact** — Manage contact records across the connected CRM
- **Lead** — Manage lead records and lead conversion
- **Opportunity** — Manage opportunities, stages, and products
- **Task** — Manage tasks and to-do items linked to other records
- **Note** — Manage notes attached to CRM records
- **Invoice** — Manage invoices and invoice items
- **Application** — Manage the connected application and bulk operations

## Why Jentic

- **Setup:** Wiring Data2CRM by hand means learning its X-API2CRM-USER-KEY and X-API2CRM-APPLICATION-KEY header auth and building the CRUD, bulk, and retry plumbing across unified CRM entities yourself. Through Jentic you install once, import the Data2CRM.API from the API Directory, store the keys once, and your agent calls it.
- **Permission scoping:** Data2CRM addresses its records through the request body rather than a resource id in the path, so limit the agent to the operations it needs, such as creating an account or listing records. You choose the operations it may call, so bulk delete is not included unless you add it.
- **Credential handling:** Your Data2CRM user and application keys are stored once, encrypted, by your own Jentic One instance and injected into the X-API2CRM-USER-KEY and X-API2CRM-APPLICATION-KEY headers at execution time. They never enter the agent's prompt, logs, or context.
- **Discovery method:** Agents search Jentic by intent such as 'create a CRM account' or 'list CRM records', and Jentic returns the matching operation with its input schema so the agent calls the right endpoint without scrolling the Data2CRM docs.

## Related APIs

- **Salesforce API** — Salesforce's native API offers deeper Salesforce-specific control; Data2CRM offers a single surface across many CRMs.
- **Zoho CRM API** — Zoho CRM's native API exposes Zoho-specific features; Data2CRM normalises Zoho behind a unified schema.
- **HubSpot CRM Contacts** — HubSpot Contacts complements Data2CRM when an integration must speak HubSpot natively alongside other CRMs.

## FAQ

### What authentication does the Data2CRM.API use?

Data2CRM.API uses two API keys sent as headers - X-API2CRM-USER-KEY identifies the calling user and X-API2CRM-APPLICATION-KEY identifies the connected CRM application. Through Jentic both keys are held in the vault and injected into outbound requests so neither enters the agent's context.

### Can I bulk-import contacts with Data2CRM.API?

Yes. POST `/application/entity/contact/bulk` accepts an array of contact records and inserts them into the connected CRM in one call, while PUT `/application/entity/contact/bulk` performs bulk updates and DELETE handles bulk removal.

### What are the rate limits for Data2CRM.API?

Limits are governed by the underlying CRM rather than Data2CRM directly - Salesforce and Zoho impose their own per-org limits. Apply backoff on 429 responses and prefer bulk endpoints over per-record loops to stay under the wrapped CRM's quota.

### How do I describe a CRM entity through Jentic?

Run pip install jentic, then search Jentic for 'describe a crm entity', load the GET `/application/entity/{resource}/describe` schema, and execute it with the resource name (account, contact, lead, etc.). The response includes the field definitions for the connected CRM.

### Which CRMs does Data2CRM.API support?

Data2CRM.API targets the major CRMs - Salesforce, Zoho, Pipedrive, and others - through a single REST surface. The connected CRM is selected by the X-API2CRM-APPLICATION-KEY value, so the same endpoint paths route to the chosen system.

### Does Data2CRM.API support count and search operations?

Yes. Each entity exposes /count for filter-based record counts and /list with query parameters for filtered retrieval, both used heavily in sync and reconciliation pipelines.

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

Yes. Because you run Jentic One yourself, your own rules decide which Data2CRM operations the agent can call and which credentials it can use. Since Data2CRM addresses records through the request body rather than an id in the path, you scope the agent to just the operations it needs, such as POST `/application/entity/account` to create an account or GET `/application/entity/account/list` to list records. Destructive calls like bulk delete are not available to the agent unless you explicitly add them.
