Semarize

Get Your Data

Clari Copilot - How to Get Your Conversation Data

A practical guide to getting your conversation data out of Clari Copilot - covering REST API access, call details extraction, transcript retrieval, rate limit management, and how to route structured data into your downstream systems.

What you'll learn

  • What conversation data you can extract from Clari Copilot - transcripts, call analytics, deal context, and participant metadata
  • How to access data via the Clari Copilot REST API - authentication, the /call-details endpoint, and pagination
  • Three extraction patterns: historical backfill, incremental polling, and webhook-triggered
  • How to connect Clari Copilot data pipelines to Zapier, n8n, and Make
  • Advanced use cases - deal inspection, revenue forecasting, coaching analytics, and pipeline intelligence

Data

What Data You Can Extract From Clari Copilot

Clari Copilot captures more than just the recording. Every call produces a set of structured assets accessible via the REST API - call details, transcripts, participant data, conversation analytics, and revenue-linked deal context from your CRM.

Common fields teams care about

Full transcript text
Speaker labels (rep vs. prospect)
Call owner / rep name
Account and opportunity name
Deal stage and pipeline context
Call date, time, and duration
Participant list and email addresses
Call direction (inbound / outbound)
Conversation analytics (talk ratio, topics)
Associated CRM record IDs

API Access

How to Get Data via the Clari Copilot API

Clari Copilot exposes call data through a REST API documented at api-doc.copilot.clari.com. The core workflow is: authenticate with an API key, query the /call-details endpoint with filters, then extract transcripts and metadata from the response.

1

Authenticate

Clari Copilot uses API key authentication. Obtain your API key from your Clari Copilot admin settings and pass it in the Authorization header on every request. The API documentation at api-doc.copilot.clari.com details the exact header format for your account.

Authorization: ApiKey <your_api_key>
Content-Type: application/json
Your integration user needs the appropriate API scope with read permissions for calls, transcripts, and analytics. Contact your Clari admin to provision credentials if you don't have them.
2

Query call details by date range

Call the GET /call-details endpoint with date range parameters to retrieve call records. Results are paginated - use the offset and limit parameters to page through the full result set.

GET https://api.copilot.clari.com/call-details
    ?start_date=2025-01-01
    &end_date=2025-02-01
    &offset=0
    &limit=50

The response returns an array of call objects with call ID, timestamp, duration, participants, transcript data, and associated CRM context. Keep incrementing offset until you've retrieved all records in the date range.

3

Extract the transcript and analytics

Each call detail response includes transcript segments, speaker identification, and conversation analytics. The transcript is returned as structured JSON with utterances broken out by speaker and timestamp.

// Response shape (simplified)
{
  "call_id": "cc-9847231",
  "duration": 1842,
  "participants": [
    { "name": "Sarah Chen", "role": "rep" },
    { "name": "James Park", "role": "prospect" }
  ],
  "transcript": [
    { "speaker": "Sarah Chen", "start": 0, "text": "..." },
    { "speaker": "James Park", "start": 12, "text": "..." }
  ],
  "analytics": {
    "talk_ratio": { "rep": 0.42, "prospect": 0.58 },
    "topics": ["pricing", "integration", "timeline"]
  }
}

Reassemble the transcript into plain text by concatenating segments, or preserve the structured format for per-speaker analysis. The analytics object provides pre-computed conversation metrics you can use directly or complement with custom scoring via Semarize.

4

Handle rate limits and data availability

Rate limits

Clari Copilot enforces 10 records/sec and a weekly cap of 100,000 requests/week. When you receive a 429 response, back off and retry. For bulk operations, pace requests at 8-9 per second to stay safely within limits and plan multi-week extraction for large historical datasets.

Data availability

Call data is not available the instant a call ends. Clari Copilot processes recordings asynchronously - typical lag is minutes to hours depending on call length and system load. Build a buffer into your extraction timing or implement a retry with exponential backoff for recently completed calls.

Patterns

Key Extraction Flows

There are three practical patterns for getting call data out of Clari Copilot. The right choice depends on whether you're doing a one-off migration, running ongoing extraction, or need near real-time processing.

Backfill (Historical Export)

One-off migration of past calls

1

Define your date range - typically 6-12 months of historical calls, or all available data if migrating platforms

2

Call GET /call-details with start_date and end_date parameters. Paginate through the full result set using offset and limit, collecting all call records

3

For each call, extract the transcript and metadata from the response. Pace requests at 8-9 per second to stay within the 10 records/sec limit

4

Store each transcript with its call metadata (call ID, date, participants, deal context, analytics) in your data warehouse or object store

5

Monitor your weekly request count - large backfills may need to be spread across multiple weeks to stay within the 100K/week cap

Tip: Track your offset and date range between batches. If the process is interrupted, you can resume from where you left off instead of re-scanning from the start. Budget approximately 33,000 calls per week given the request overhead per call.

Incremental Polling

Ongoing extraction on a schedule

1

Set a cron job or scheduled trigger (hourly, daily, etc.) that runs your extraction script on a recurring basis

2

On each run, call GET /call-details with start_date set to your last successful poll timestamp and end_date set to the current time

3

Extract transcripts and metadata for any new call records returned. Use the call ID as a deduplication key to avoid reprocessing

4

Route each transcript and its metadata to your downstream pipeline - analysis tool, data warehouse, or automation platform

5

Update your stored timestamp to the current run time for the next poll cycle

Tip: Account for transcript processing delay. A call that ended 30 minutes ago may not have a transcript yet. Polling with a 1-2 hour lag reduces empty fetches and avoids wasting requests against your weekly cap.

Webhook-Triggered

Near real-time on call completion

1

Register a webhook endpoint in your Clari Copilot admin settings. Clari Copilot can fire events when a call is processed and data becomes available

2

When the webhook fires, parse the event payload to extract the call ID and metadata

3

Fetch the full call details via GET /call-details with the specific call ID from the webhook event

4

Route the transcript, analytics, and metadata downstream - to your analysis pipeline, CRM updater, or automation tool

Note: Webhook availability depends on your Clari Copilot plan tier and configuration. Not all accounts have access to webhook triggers. Check with your Clari admin or account rep for your plan's capabilities.

Automation

Send Clari Copilot Data to Automation Tools

Once you can extract call data from Clari Copilot, the next step is routing transcripts through Semarize for structured analysis and into your downstream systems. Below are end-to-end example flows - each showing the full pipeline from Clari Copilot through Semarize evaluation to CRM, Slack, or database output.

ZapierNo-code automation

Clari Copilot → Zapier → Semarize → CRM

Poll Clari Copilot for new calls on a schedule, fetch the transcript, send it to Semarize for structured analysis, then write the scored output - signals, flags, and evidence - directly to your CRM.

Example Zap
Schedule by Zapier
Triggers every hour
App: Schedule by Zapier
Event: Every Hour
Output: timestamp
Webhooks by Zapier
Fetch new calls from Clari Copilot
Method: GET
URL: https://api.copilot.clari.com/call-details
Auth: ApiKey <key>
Params: start_date={{last_run}}&limit=50
Call data returned
Webhooks by Zapier
POST /v1/runs (sync) to Semarize
Method: POST
URL: https://api.semarize.com/v1/runs
Auth: Bearer smz_live_...
Body: { kit_code, mode: "sync", input: { transcript } }
Structured output returned
Formatter by Zapier
Extract brick values from Semarize response
Extract: bricks.deal_confidence.value
Extract: bricks.risk_flag.value
Extract: bricks.champion_identified.value
Salesforce - Update Record
Write scored signals to Opportunity
Object: Opportunity
Deal Confidence: {{deal_confidence}}
Risk Flag: {{risk_flag}}
Champion: {{champion_identified}}

Setup steps

1

Create a new Zap. Choose "Schedule by Zapier" as the trigger and set the interval to hourly. This will poll Clari Copilot for new calls on each run.

2

Add a "Webhooks by Zapier" Action (Custom Request) to fetch new calls from Clari Copilot. Set method to GET, URL to https://api.copilot.clari.com/call-details, add your API key header, and pass start_date as the last run timestamp.

3

Add a second "Webhooks by Zapier" Action. Set method to POST, URL to https://api.semarize.com/v1/runs. Add your Semarize API key as a Bearer token. In the body, set kit_code to your Kit, mode to "sync", and map the transcript text into input.transcript.

4

Add a Formatter step to extract individual brick values from the Semarize JSON response - deal_confidence, risk_flag, champion_identified, etc.

5

Add a Salesforce (or HubSpot, Sheets, etc.) Action to write the extracted scores and signals to your CRM record.

6

Test each step end-to-end, then turn on the Zap.

Watch out for: Zapier has step data size limits that can truncate very long transcripts. For calls over 60 minutes, consider storing the transcript in cloud storage and passing a reference URL instead of inline text. Use mode: "sync" so Semarize returns results inline - Zapier doesn't natively support polling loops.
Learn more about Zapier automation
n8nSelf-hosted workflows

Clari Copilot → n8n → Semarize → Database

Poll Clari Copilot for new calls on a schedule, fetch transcripts, send each one to Semarize for analysis, then write the structured scores and signals to your database. n8n's native loop support handles pagination and batch processing natively.

Example Workflow
Cron - Every Hour
Triggers the workflow on schedule
Mode: Every Hour
Timezone: UTC
HTTP Request - List Calls
GET /call-details (Clari Copilot)
Method: GET
URL: https://api.copilot.clari.com/call-details
Auth: ApiKey
Params: start_date={{$now.minus(1, 'hour')}}&limit=50
For each call record
Code - Extract Transcript
Reassemble transcript from segments
Join: transcript[].text by speaker
HTTP Request - Semarize
POST /v1/runs (sync)
URL: https://api.semarize.com/v1/runs
Auth: Bearer smz_live_...
Body: { kit_code, mode: "sync", input: { transcript } }
Scores & signals returned
Postgres - Insert Row
Write structured output to database
Table: call_evaluations
Columns: call_id, score, risk_flag, champion

Setup steps

1

Add a Cron node as the workflow trigger. Set the interval to your desired polling frequency (hourly works well for most teams).

2

Add an HTTP Request node to list new calls from Clari Copilot. Set method to GET, URL to https://api.copilot.clari.com/call-details, configure API key auth, and set start_date to one interval ago.

3

Add a Split In Batches node to iterate over the returned call records. Inside the loop, add a Code node to extract and reassemble the transcript from the call detail response.

4

Add a Code node (JavaScript) to format the transcript segments into a single string. Join each segment's text, prefixed by speaker name.

5

Add another HTTP Request node to send the transcript to Semarize. Set method to POST, URL to https://api.semarize.com/v1/runs. Add your API key as a Bearer token. Set kit_code, mode to "sync", and map the transcript into input.transcript.

6

Add a Code node to extract the brick values from the Semarize response - deal_confidence, risk_flag, champion_identified, evidence, confidence.

7

Add a Postgres (or MySQL / HTTP Request) node to write the structured output. Use call_id as the primary key for upserts.

8

Activate the workflow. Monitor the first few runs to verify Semarize responses are arriving and writing correctly.

Watch out for: Use call IDs as deduplication keys to prevent reprocessing. Be mindful of the 100K weekly request limit - each call in n8n typically requires 1 API call to Clari Copilot plus 1 to Semarize. You can also use async mode with n8n's native loop - POST /v1/runs (default async), then poll GET /v1/runs/:runId with a Wait + IF loop until status is "succeeded".
Learn more about n8n automation
MakeVisual automation with branching

Clari Copilot → Make → Semarize → CRM + Slack

Fetch new Clari Copilot call data on a schedule, send each transcript to Semarize for structured analysis, then use a Router to branch the scored output - alert on risk flags via Slack and write all signals to your CRM.

Example Scenario
Schedule - Every 30 min
Triggers the scenario on interval
Interval: 30 minutes
HTTP - List New Calls
GET /call-details (Clari Copilot)
Method: GET
Auth: ApiKey
Params: start_date={{formatDate(...)}}&limit=50
HTTP - Extract Transcript
Parse transcript from call detail response
Iterator: for each call in response
Extract: transcript segments by speaker
HTTP - Semarize
POST /v1/runs (sync)
URL: https://api.semarize.com/v1/runs
Auth: Bearer smz_live_...
Body: { kit_code, mode: "sync", input: { transcript } }
Structured output
Router - Branch on Risk Flag
Route by Semarize output
Branch 1: IF risk_flag.value = true
Branch 2: ALL (fallthrough)
Branch 1 - Risk detected
Slack - Alert Channel
Notify team about flagged call
Channel: #deal-alerts
Message: Risk on {{call_id}}, score: {{score}}
Branch 2 - All calls
Salesforce - Update Record
Write all scored signals to Opportunity
Deal Confidence: {{deal_confidence}}
Risk Flag: {{risk_flag}}
Champion: {{champion_identified}}

Setup steps

1

Create a new Scenario. Add a Schedule module as the trigger, set to your desired interval (15-60 minutes is typical for Clari Copilot polling).

2

Add an HTTP module to list new calls from Clari Copilot. Set method to GET, URL to https://api.copilot.clari.com/call-details, configure API key auth, and filter by start_date since the last run.

3

Add an Iterator module to loop through each call record. For each, add a Text Parser module or JSON module to extract and reassemble the transcript from the call detail response.

4

Add another HTTP module to send the transcript to Semarize. Set URL to https://api.semarize.com/v1/runs, add your Bearer token, and set kit_code, mode to "sync", and input.transcript from the previous step. Parse the response as JSON.

5

Add a Router module. Define Branch 1 with a filter: bricks.risk_flag.value equals true. Leave Branch 2 as a fallthrough (no filter).

6

On Branch 1, add a Slack module to alert your team when risk is detected. Map the score, risk flag, and call ID into the message.

7

On Branch 2, add a Salesforce module to write all brick values (deal_confidence, risk_flag, champion_identified) to the Opportunity record.

8

Set the scenario schedule and activate. Monitor the first few runs in Make's execution log.

Watch out for: Each API call counts as a Make operation. A scenario processing 50 calls uses ~100 operations (list + Semarize per call). Be mindful of the Clari Copilot weekly request cap alongside Make's operation limits. Use mode: "sync" to avoid needing a polling loop for each Semarize run.
Learn more about Make automation

What you can build

What You Can Do With Clari Copilot Data in Semarize

Custom deal signal extraction, conversation-weighted forecasting, structured coaching analytics, and building your own tools on programmable conversation data.

Playbook-Grounded Claim Verification

Source-of-Truth Accuracy Scoring

What Semarize generates

product_claim_accurate = falseroadmap_leak_detected = trueapproved_messaging_used = falseinaccuracy_count = 3

Your reps make product claims, reference pricing, and position against competitors on every call. Are those statements accurate? Run a knowledge-grounded kit against your product documentation, pricing sheets, and competitive battlecards on every transcript. Semarize flags every inaccurate product claim, roadmap leak, and outdated competitive statement with the exact quote and the source document it violates. Product marketing gets a weekly accuracy report — the 6-week lag between a messaging change and reps actually using it becomes visible and measurable.

Learn more about QA & Compliance
Deal Risk Card - Acme Corp$180k
At Risk
Pricing hesitation
Timeline slippage
Weak champion
Competitor active
Evidence

“We need to revisit this in Q4” — CFO, Jan 15 call

4 risk indicators · 6 calls analysed

Methodology Adherence Scoring

MEDDICC Coverage Analysis at Scale

What Semarize generates

metrics_discussed = trueeconomic_buyer_present = falsedecision_process_mapped = falsechampion_identified = true

Your team adopted MEDDICC — but are reps actually following it on calls? Pull transcripts and run a MEDDICC kit through Semarize. Each call gets scored on Metrics, Economic Buyer, Decision Criteria, Decision Process, Identify Pain, and Champion. After scoring 300 calls, the data shows that 68% of lost deals had zero coverage on Decision Process. The enablement team builds a targeted workshop on mapping decision processes — and the quarterly win rate increases by 12%.

Learn more about Sales Coaching
MEDDICC Scorecard300 calls scored
Metrics
74%
Economic Buyer
58%
Decision Criteria
65%
Decision Process
32%
Identify Pain
81%
Champion
70%
Won Deals
Decision Process69%
Champion85%
Lost Deals
Decision Process18%
Champion38%
68% of lost deals had zero coverage on Decision Process

Same-Week Coaching Signal Detection

Structured Skill Metrics for Immediate Action

What Semarize generates

objection_handling_score = 0.41discovery_technique = "surface_level"calls_since_training = 6regression_detected = true

By the time a skill gap surfaces in pipeline metrics, the damage spans dozens of calls. Run every transcript through a coaching signal kit that returns objection_handling_score, discovery_technique_depth, and value_articulation_clarity as typed fields. When a rep’s objection handling drops below threshold on 3 consecutive calls, the structured output triggers a Slack alert to their manager the same week — not the same quarter. The time from skill regression to coaching intervention shrinks from 6 weeks to 3 days.

Learn more about Sales Coaching
#sales-coaching
Semarize BotAPP3:12 PM

Skill regression detectedJake R. dropped below threshold on 3 consecutive calls

Coaching Signal: Objection Handling

objection_handling_score: 0.41 (threshold: 0.60)

discovery_technique: surface_level

calls_since_training: 6

regression_detected: true

Custom Win/Loss Analysis Engine

Conversation Signals That Predict Outcomes

Vibe-coded

What Semarize generates

win_predictor_1 = "budget_confirmed"win_predictor_2 = "decision_maker"model_accuracy = 0.82deals_analysed = 500

A data analyst vibe-codes a Retool app that pulls Semarize scores from every Clari Copilot transcript associated with closed deals. The app correlates conversation signals with outcomes: which Brick values predict wins vs losses? After analysing 500 closed deals, the model reveals that deals where budget_confirmed=true AND decision_maker_present=true AND discovery_depth>65 close at 4x the rate. The team updates their deal qualification criteria based on actual conversation evidence — not CRM checkbox data.

Learn more about RevOps
Win/Loss Analysis500 deals
SignalWonLostDelta
budget_confirmed0.890.34+55%
decision_maker_present0.780.31+47%
discovery_depth0.720.41+31%
next_step_confirmed0.910.52+39%
Deals with budget_confirmed + decision_maker + discovery_depth>65 close at 4x the rate
Model accuracy: 0.82 · Built in Retool

Watch out for

Common Challenges & Gotchas

These are the issues that come up most often when teams start extracting call data from Clari Copilot at scale.

Weekly request cap

The 100,000 requests per week limit means you need to plan bulk operations carefully. A backfill of 10,000 calls can consume 20,000-30,000 requests when accounting for list, detail, and transcript fetches. Spread large operations across multiple weeks and prioritise recent data first.

Per-second rate limiting

At 10 records per second, you cannot burst-fetch large volumes. Implement a request queue with throttling to stay within limits. Exceeding the rate results in 429 responses that add latency if you lack proper backoff logic.

Transcript processing delay

Clari Copilot processes recordings asynchronously after a call ends. Attempting to fetch call details or transcripts too soon returns incomplete data. Build in a delay or retry mechanism - polling with a 1-2 hour lag reduces empty fetches significantly.

API credential scoping

API access requires credentials with the right scope and plan tier. If your integration user lacks the necessary read permissions, requests will fail or return partial data. Verify credential access with your Clari admin before building pipelines.

Pagination handling

Call listing endpoints return paginated results. Track your pagination state carefully - losing your position mid-backfill means re-scanning from the start or risking missed records. Persist pagination tokens between runs.

CRM data mapping

Clari Copilot links calls to CRM records, but the mapping depends on your CRM integration quality. Unmatched calls or stale CRM data can result in orphaned transcripts that lack deal context. Validate the CRM linkage before relying on it for deal-level analytics.

Duplicate processing protection

Without idempotency checks, re-running an extraction flow can process the same call twice. Use call IDs as deduplication keys to ensure each record is handled exactly once in your downstream pipeline.

FAQ

Frequently Asked Questions

Explore

Explore Semarize