Developers

The Persuora API

Pull your coached calls and reads into any system, create records from your tools, and receive every debrief the moment a call ends. If your team already lives in Salesforce, HubSpot, or a spreadsheet, Cue feeds it.

Authentication

Every request carries your access key, the same key that signs the Cue app in. Mint per-user keys in the admin panel; revoke any time.

curl -H "x-cue-app-token: cue_YOUR_KEY" https://app.persuora.com/api/cue/dossier

Read endpoints

GET /api/cue/dossierWorkspace overview: accounts with rollups + the open pipeline.
GET /api/cue/accounts/:idOne account: contacts with reads, deals, coached calls, timeline.
GET /api/cue/contactsAll contacts, freshest reads first.
GET /api/cue/contacts/:idOne contact: the living RICE read with evidence quotes, calls, timeline.
GET /api/cue/sessionsYour coached calls with debrief summaries.
GET /api/cue/sessions/:idOne call in full: transcript, debrief, assignments.
GET /api/cue/search?q=Search every call: titles + what was actually said, with snippets.
GET /api/cue/commitmentsOpen loops: promises either side made on calls. Filters: status, accountId, sessionId.

Write endpoints

POST /api/cue/dossier{"name", "domain?"} creates an account.
POST /api/cue/contacts{"accountId", "name", "title?", "email?"} creates a contact.
POST /api/cue/opportunities{"accountId", "name", "valueUsd?", "stage?"} creates a deal.
POST /api/cue/activities{"kind", "body", "accountId?|contactId?"} logs a timeline entry.
PATCH /api/cue/opportunities/:id{"stage"} moves a deal.
PATCH /api/cue/sessions/:id{"title?", "accountId?", "opportunityId?", "contactId?"} renames or assigns a call; null clears.
DELETE /api/cue/sessions/:idRemoves a call and its debrief permanently.
PATCH /api/cue/commitments/:id{"status"} closes or reopens a commitment (open, done, dropped).
POST /api/cue/prep{"accountId"|"contactId"|"opportunityId"} synthesizes the pre-call prep sheet: objectives, questions, landmines, open loops.

Everything is scoped to your workspace automatically; foreign IDs read as not found.

The debrief webhook

Set a webhook URL in Cue under Settings, Integrations. After every coached call, Persuora POSTs:

{
  "event": "debrief.completed",
  "workspace": { "id": "…", "name": "Acme" },
  "session": { "id": "…", "title": "Discovery call", "owner": "rep@acme.com",
               "contactId": null, "accountId": null },
  "debrief": { "overall": 84, "summary": "…",
               "scores": [{ "dimension": "discovery", "score": 88 }],
               "nextTime": ["…"] },
  "rice": { "dominant": "ego", "confidence": 82 },
  "occurredAt": "2026-08-13T22:41:00.000Z"
}

Delivery is fire-and-forget with a 5 second timeout; respond with any 2xx. Point it at Zapier, Make, or a 20-line function that writes to your CRM.

Limits

Requests are scoped per workspace. Transcripts cap at 500 turns. Be gentle; this is a beta API and unpublished endpoints may change.