Zime API Reference
A read-only REST API for your company's sales conversation data. Pull call records with deal and account context, evidence-backed insights, and full transcripts into your warehouse, BI stack, or AI tooling.
https://embedding-api-prod.zime.aiWatch: 3-minute API walkthrough
A quick tour of all three endpoints, the required date parameters, and how cursor-based pagination works.
Authentication
Every request must include your company API key in the X-API-Key header. Keys are issued per company, and every response is scoped to your company's data. To get a key, ask your Zime administrator or contact dev@zime.ai.
curl -G 'https://embedding-api-prod.zime.ai/api/v1/calls' \
-H 'X-API-Key: YOUR_API_KEY' \
--data-urlencode 'start-date=2026-06-01' \
--data-urlencode 'end-date=2026-06-30'Treat API keys like passwords: keep them server-side, never ship them in browser code, and rotate them if you suspect exposure.
Response format & pagination
All endpoints return JSON with two top-level keys: data (an array of records) and pagination. All endpoints also require a date range via start-date and end-date in YYYY-MM-DD format.
{
"data": [ ... ],
"pagination": {
"has_more": true,
"next_cursor": 12245,
"page_size": 100,
"returned_count": 100
}
}Pagination is cursor-based. While has_more is true, pass the next_cursor value as the after-key query parameter on your next request to fetch the following page.
| Endpoint | Max page size | Cursor format |
|---|---|---|
/api/v1/calls | 1000 | Integer call ID |
/api/v1/calls/insight | 100 | Composite string call_id-insight_id |
/api/v1/calls/transcript | 100 | Integer call ID |
Errors
Errors return an error field with a human-readable message:
{ "error": "start-date parameter is required (format: YYYY-MM-DD)" }| Status | Meaning |
|---|---|
400 | Bad request: missing or invalid parameters, such as a malformed date or a page size over the limit. |
401 | Unauthorized: the X-API-Key header is missing. |
403 | Forbidden: the API key is not valid. |
500 | Internal server error. Retry with backoff. |
504 | Gateway timeout. Narrow the date range or reduce the page size, then retry. |
GET/api/v1/calls
Returns call records for your company within a date range. Each record carries the call's timing plus its CRM context: the linked deal, deal owner, stage at call time, current stage, and every linked account.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start-date | string | Yes | Start date, YYYY-MM-DD. |
end-date | string | Yes | End date, YYYY-MM-DD. |
page-size | integer | No | Records per page, 1 to 1000. Default 100. |
after-key | integer | No | Pagination cursor: the call ID to start after. Use the next_cursor from the previous page. |
Example request
curl -G 'https://embedding-api-prod.zime.ai/api/v1/calls' \
-H 'X-API-Key: YOUR_API_KEY' \
--data-urlencode 'start-date=2026-06-01' \
--data-urlencode 'end-date=2026-06-30' \
--data-urlencode 'page-size=200'Example response
{
"data": [
{
"call_id": 84396,
"call_title": "Outbound call to Ray Burch",
"start_time": "2026-06-07T22:48:23",
"end_time": "2026-06-07T22:48:39",
"deal_id": "OPP-12345",
"deal_name": "Enterprise Deal Q4",
"deal_owner": "John Doe",
"deal_type": "New Business",
"deal_stage_during_call": "Qualification",
"current_deal_stage": "Discovery",
"accounts": [
{
"account_id": "0012M00002AWMsgQAH",
"account_name": "TechCorp Industries"
}
]
}
],
"pagination": {
"has_more": true,
"next_cursor": 84396,
"page_size": 200,
"returned_count": 200
}
}The accounts array is the union of accounts referenced by the deal and by the calendar event, de-duplicated by account_id. It is empty when no accounts are linked.
GET/api/v1/calls/insight
Returns call insights with outcome details. Each row is one insight on one call: a named signal (for example a budget discussion), its category and sub-category, the evidence quote from the conversation, and an intensity score. A call link points back to the recording in Zime.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start-date | string | Yes | Start date, YYYY-MM-DD. |
end-date | string | Yes | End date, YYYY-MM-DD. |
page-size | integer | No | Records per page, 1 to 100. Default 100. |
after-key | string | No | Pagination cursor in call_id-insight_id format, since one call can have many insights. |
Example request
curl -G 'https://embedding-api-prod.zime.ai/api/v1/calls/insight' \
-H 'X-API-Key: YOUR_API_KEY' \
--data-urlencode 'start-date=2026-06-01' \
--data-urlencode 'end-date=2026-06-30' \
--data-urlencode 'after-key=38419-12345'Example response
{
"data": [
{
"call_id": 38419,
"call_title": "Q4 Product Demo - Enterprise Client",
"call_link": "https://your-company.zime.ai/recordings/38419",
"start_time": "2026-06-15T14:30:00",
"end_time": "2026-06-15T15:30:00",
"insight_id": 12345,
"title": "Budget Authority Mentioned",
"signal_name": "Budget Discussion",
"category": "MEDDIC",
"sub_category": "Budget",
"evidence": "Customer mentioned they have budget allocated for Q4",
"intensity_score": 8.5,
"deal_id": "OPP-12345",
"deal_name": "Enterprise Deal Q4",
"deal_owner": "John Doe",
"deal_type": "New Business",
"deal_stage_during_call": "Discovery",
"current_deal_stage": "Proposal",
"accounts": [
{
"account_id": "0012M00002AWMsgQAH",
"account_name": "TechCorp Industries"
}
]
}
],
"pagination": {
"has_more": true,
"next_cursor": "38419-12345",
"page_size": 100,
"returned_count": 100
}
}GET/api/v1/calls/transcript
Returns full call transcripts as parsed VTT content: an ordered list of cues, each with its timing window and text lines. Transcript files are fetched from storage per call, which is why this endpoint caps at 100 calls per page.
Query parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
start-date | string | Yes | Start date, YYYY-MM-DD. |
end-date | string | Yes | End date, YYYY-MM-DD. |
page-size | integer | No | Calls per page, 1 to 100. Default 100. |
after-key | integer | No | Pagination cursor: the call ID to start after. |
Example request
curl -G 'https://embedding-api-prod.zime.ai/api/v1/calls/transcript' \
-H 'X-API-Key: YOUR_API_KEY' \
--data-urlencode 'start-date=2026-06-01' \
--data-urlencode 'end-date=2026-06-07'Example response
{
"data": [
{
"call_id": 83536,
"call_title": "Legacy Park Advisors and IT Solutions - AI Project",
"start_time": "2026-06-05 17:00:07",
"end_time": "2026-06-05 17:15:51",
"deal_id": "OPP-12345",
"deal_name": "Enterprise Deal Q4",
"transcript": [
{
"id": "1",
"timing": "00:00:00.000 --> 00:00:05.000",
"text": ["Hello, welcome to the call"]
}
],
"accounts": [
{
"account_id": "0012M00002AWMsgQAH",
"account_name": "TechCorp Industries"
}
]
}
],
"pagination": {
"has_more": false,
"next_cursor": 83534,
"page_size": 100,
"returned_count": 3
}
}Frequently asked questions
What data can I get from the Zime API?
Three resources, all scoped to your company: call records with deal and account context (GET /api/v1/calls), per-call insights with categories, evidence quotes, and intensity scores (GET /api/v1/calls/insight), and full parsed VTT transcripts (GET /api/v1/calls/transcript).
How do I authenticate with the Zime API?
Every request needs an X-API-Key header carrying your company API key. Keys are issued per company and scope every response to your own data. Ask your Zime administrator or dev@zime.ai for a key.
What are the page size limits?
The calls endpoint returns up to 1000 records per page. The insight and transcript endpoints are capped at 100 records per page because of heavier query and file operations. All three default to 100.
How does pagination work?
The API uses cursor-based pagination. Each response includes a pagination object with has_more and next_cursor. Pass next_cursor as the after-key query parameter on your next request. For calls and transcripts the cursor is a call ID; for insights it is a composite call_id-insight_id string.
Prefer a no-code integration? The Zime MCP connector puts the same calls, insights, and transcripts inside Claude, with your normal Zime login instead of an API key.