{ "sessionId": "session_MjU2NjEzNTIteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4", "realtimeAssistantId": "452dda41-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "channel": "telephony", "direction": "outbound", "state": "completed", "connected": true, "toNumber": "+923001234567", "fromNumber": "+924232591000", "roomName": "call-25661352-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "participantIdentity": "callee-25661352", "transportProvider": "twilio", "variables": { "source": "assistant-test" }, "createdAt": "2026-08-16T18:55:22.677Z", "ringingAt": "2026-08-16T18:55:30.758Z", "connectedAt": "2026-08-16T18:55:36.927Z", "answeredAt": "2026-08-16T18:55:37.641Z", "endedAt": "2026-08-16T18:56:17.411Z", "durationSec": 40, "transcript": [ { "speaker": "caller", "text": "ہیلو،", "atSec": 1 }, { "speaker": "agent", "text": "ہیلو، میں ڈاکٹر عامرہ ہوں۔ میں خوابوں کی تعبیر اور ان کے پوشیدہ معنی سمجھنے میں آپ کی مدد کروں گی۔ آج کون سا خواب آپ کو لے کر آیا ہے؟", "atSec": 6 }, { "speaker": "caller", "text": "ٹھیک ہے۔", "atSec": 7 }, { "speaker": "caller", "text": "I was having a good dream. Do you know what a good dream is?", "atSec": 18 }, { "speaker": "agent", "text": "جی ہاں، بالکل۔ اچھا خواب یا خوشگوار خواب وہ ہوتا ہے جس میں انسان کو سکون، خوشی، راحت یا امید محسوس ہو۔", "atSec": 25 } ], "toolCalls": [], "summary": { "headline": "Caller asked what a good dream means, got an explanation, and did not book a session.", "bullets": [ "Caller opened by saying they had a good dream", "Agent explained that a good dream leaves peace, happiness or hope", "Call ended after the explanation with nothing arranged" ], "facts": [ { "label": "Next Step", "value": "None" }, { "label": "Topic", "value": "Meaning of a good dream" } ], "language": "en", "promptVersion": "call-summary-v1", "model": "gpt-5.4-2026-03-05", "generatedAt": "2026-08-16T18:56:19.104Z" }}
Sessions & call records
Get a call's transcript and outcomes
Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; grade, conversion and callback come from that same pipeline, so treat all three as optional. While a call is still live, poll /realtime-assistants/sessions/{sessionId} instead.
{ "sessionId": "session_MjU2NjEzNTIteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4", "realtimeAssistantId": "452dda41-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "channel": "telephony", "direction": "outbound", "state": "completed", "connected": true, "toNumber": "+923001234567", "fromNumber": "+924232591000", "roomName": "call-25661352-xxxx-xxxx-xxxx-xxxxxxxxxxxx", "participantIdentity": "callee-25661352", "transportProvider": "twilio", "variables": { "source": "assistant-test" }, "createdAt": "2026-08-16T18:55:22.677Z", "ringingAt": "2026-08-16T18:55:30.758Z", "connectedAt": "2026-08-16T18:55:36.927Z", "answeredAt": "2026-08-16T18:55:37.641Z", "endedAt": "2026-08-16T18:56:17.411Z", "durationSec": 40, "transcript": [ { "speaker": "caller", "text": "ہیلو،", "atSec": 1 }, { "speaker": "agent", "text": "ہیلو، میں ڈاکٹر عامرہ ہوں۔ میں خوابوں کی تعبیر اور ان کے پوشیدہ معنی سمجھنے میں آپ کی مدد کروں گی۔ آج کون سا خواب آپ کو لے کر آیا ہے؟", "atSec": 6 }, { "speaker": "caller", "text": "ٹھیک ہے۔", "atSec": 7 }, { "speaker": "caller", "text": "I was having a good dream. Do you know what a good dream is?", "atSec": 18 }, { "speaker": "agent", "text": "جی ہاں، بالکل۔ اچھا خواب یا خوشگوار خواب وہ ہوتا ہے جس میں انسان کو سکون، خوشی، راحت یا امید محسوس ہو۔", "atSec": 25 } ], "toolCalls": [], "summary": { "headline": "Caller asked what a good dream means, got an explanation, and did not book a session.", "bullets": [ "Caller opened by saying they had a good dream", "Agent explained that a good dream leaves peace, happiness or hope", "Call ended after the explanation with nothing arranged" ], "facts": [ { "label": "Next Step", "value": "None" }, { "label": "Topic", "value": "Meaning of a good dream" } ], "language": "en", "promptVersion": "call-summary-v1", "model": "gpt-5.4-2026-03-05", "generatedAt": "2026-08-16T18:56:19.104Z" }}
Web runs created → active → completed. Outbound telephony runs dispatched → dialing → ringing → answered → completed or failed; a carrier that reports no dial progress skips straight to answered.
The rubric grade, written by the post-call pipeline. Criterion titles and points are resolved into it, so rendering a scorecard needs no rubric lookup.
Presigned link to the recording, valid for one hour. Minted without checking the recording exists, so a call that was never recorded still returns a link that 404s when fetched.
{"docsConfig":{"theme":"mint","$schema":"https://leaves.mintlify.com/schema/docs.json","name":"Uplift AI API Docs","colors":{"primary":"#16A34A","light":"#07C983","dark":"#15803D"},"logo":{"light":"https://mintcdn.com/upliftai/2tcJSpA9F8g1W_V1/logo/logo.png?fit=max\u0026auto=format\u0026n=2tcJSpA9F8g1W_V1\u0026q=85\u0026s=c3823c19a41e66e704751aa27b97cde9","dark":"https://mintcdn.com/upliftai/2tcJSpA9F8g1W_V1/logo/logo.png?fit=max\u0026auto=format\u0026n=2tcJSpA9F8g1W_V1\u0026q=85\u0026s=c3823c19a41e66e704751aa27b97cde9"},"favicon":"https://mintcdn.com/upliftai/2tcJSpA9F8g1W_V1/favicon.ico?fit=max\u0026auto=format\u0026n=2tcJSpA9F8g1W_V1\u0026q=85\u0026s=a680f5e0b8dc59015e866648796975b1","appearance":{"default":"light","strict":true},"navbar":{"links":[{"href":"mailto:founders@upliftai.org","label":"Support"}],"primary":{"type":"button","label":"Sign Up","href":"https://upliftai.org"}},"footer":{"socials":{"linkedin":"https://www.linkedin.com/company/upliftai"}},"integrations":{"posthog":{"apiKey":"phc_EGK5H7jrhZrIhLXWfAWCmjjljJQwF6ejp1P73EtmG7q","apiHost":"https://us.i.posthog.com"}},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"upliftai","hasAudioNarration":false,"actualSubdomain":"upliftai","customDomains":["docs.upliftai.org"],"gitSource":{"type":"github","owner":"uplift-initiative","repo":"runtime-api-mintlify-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"entitlements":{},"buildId":"6ae19c28ba4b20fd94ecdb26","clientVersion":"0.0.4102","searchFilterCounts":[{"language":"default","tag":"Voice Agents","count":81},{"language":"default","tag":"API Reference","count":51},{"language":"default","tag":"Orator API","count":25},{"language":"default","tag":"SDKs","count":18},{"language":"default","tag":"Assistants","count":16},{"language":"default","tag":"Campaigns","count":11},{"language":"default","tag":"Contacts","count":11},{"language":"default","tag":"Orator REST API","count":9},{"language":"default","tag":"Node.js SDK","count":8},{"language":"default","tag":"Campaign outcomes","count":7}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-rbac-roles","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-metadata","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":".urdu{font-family:'Noto Nastaliq Urdu', sans-serif;font-size:1.2em;line-height:1.5em;text-align:justify;direction:rtl;unicode-bidi:embed;font-weight:normal;font-style:normal;font-variant:normal;text-transform:none}"}],"page":{"pagePath":"api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes","slug":"/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes","pageMetadata":{"title":"Get a call's transcript and outcomes","description":"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; `grade`, `conversion` and `callback` come from that same pipeline, so treat all three as optional. While a call is still live, poll [`/realtime-assistants/sessions/{sessionId}`](/api-reference/sessions-%26-call-records/get-a-sessions-status) instead.","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/sessions/{sessionId}/detail","href":"/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n a: \"a\",\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_components.p, {\n children: [\"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; \", _jsx(_components.code, {\n children: \"grade\"\n }), \", \", _jsx(_components.code, {\n children: \"conversion\"\n }), \" and \", _jsx(_components.code, {\n children: \"callback\"\n }), \" come from that same pipeline, so treat all three as optional. While a call is still live, poll \", _jsx(_components.a, {\n href: \"/api-reference/sessions-%26-call-records/get-a-sessions-status\",\n children: _jsx(_components.code, {\n children: \"/realtime-assistants/sessions/{sessionId}\"\n })\n }), \" instead.\"]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Get a call's transcript and outcomes","description":"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; `grade`, `conversion` and `callback` come from that same pipeline, so treat all three as optional. While a call is still live, poll [`/realtime-assistants/sessions/{sessionId}`](/api-reference/sessions-%26-call-records/get-a-sessions-status) instead.","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/sessions/{sessionId}/detail","href":"/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":["/_mintlify/custom/upliftai/ed1a602c792dd94e/data/voices.js"],"openApiReferenceData":{"operation":{"operationId":"getSessionDetail","tags":["Sessions \u0026 call records"],"summary":"Get a call's transcript and outcomes","description":"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; `grade`, `conversion` and `callback` come from that same pipeline, so treat all three as optional. While a call is still live, poll [`/realtime-assistants/sessions/{sessionId}`](/api-reference/sessions-%26-call-records/get-a-sessions-status) instead.","parameters":["82dda931-8570-49b0-a555-3c45a4a091ee","64c707a2-dd11-4546-b28a-ed45edfc7af5"],"responses":{"200":"6929477c-b78a-4fdb-b06b-cbd12270a78e","400":"95506d21-c4ef-4997-a4bf-9e255e414db6","401":"9392a71d-f7b3-430e-9f92-189791ef8583","403":"bccef562-e0ab-42ee-8d94-b2921a645b21","404":"d2d58c46-c38c-4d4e-a20e-6819f99cd2e9"},"method":"get","type":"path","servers":["f8e1e33f-9cf0-4bbb-b41e-9136c129f7ef"],"security":["73bac4ee-98c5-4fa2-834c-9f180d41c637"],"path":"/realtime-assistants/sessions/{sessionId}/detail","baseUrlOptions":["https://api.upliftai.org/v1"],"title":"Get a call's transcript and outcomes","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{"82dda931-8570-49b0-a555-3c45a4a091ee":{"name":"sessionId","in":"path","required":true,"description":"The `callId` from the call dispatch, a `sessionId` from the sessions list, or a `callId` from a campaign's calls list or a webhook.","schema":{"type":"string","isRequired":true,"description":"The `callId` from the call dispatch, a `sessionId` from the sessions list, or a `callId` from a campaign's calls list or a webhook.","uniqueKey":"","typeLabel":"string"},"example":"session_MjU2NjEzNTIteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4"},"64c707a2-dd11-4546-b28a-ed45edfc7af5":{"name":"include_audio_url","in":"query","required":false,"description":"Adds `audioUrl` to the response. Must be exactly `true` or `false` — `1`, `TRUE` and a bare `?include_audio_url` are all 400s.","schema":{"type":"boolean","default":false,"isRequired":false,"description":"Adds `audioUrl` to the response. Must be exactly `true` or `false` — `1`, `TRUE` and a bare `?include_audio_url` are all 400s.","uniqueKey":"","typeLabel":"boolean"},"example":true}},"responses":{"6929477c-b78a-4fdb-b06b-cbd12270a78e":{"description":"The call.","content":{"application/json":{"schema":{"type":"object","properties":{"sessionId":{"type":"string","description":"The session id.","uniqueKey":"sessionId","typeLabel":"string"},"realtimeAssistantId":{"type":"string","format":"uuid","uniqueKey":"realtimeAssistantId","typeLabel":"string\u003cuuid>"},"channel":{"type":"string","enum":["web","telephony","whatsapp"],"uniqueKey":"channel","typeLabel":"enum\u003cstring>"},"direction":{"type":"string","enum":["inbound","outbound"],"description":"Web sessions are always `inbound` — the user opens them.","uniqueKey":"direction","typeLabel":"enum\u003cstring>"},"state":{"type":"string","enum":["created","dispatched","dialing","ringing","answered","active","completed","failed"],"description":"Web runs `created` → `active` → `completed`. Outbound telephony runs `dispatched` → `dialing` → `ringing` → `answered` → `completed` or `failed`; a carrier that reports no dial progress skips straight to `answered`.","uniqueKey":"state","typeLabel":"enum\u003cstring>"},"connected":{"type":"boolean","description":"Whether the call ever reached a conversation. False for every dial-time state and for `failed`.","uniqueKey":"connected","typeLabel":"boolean"},"outcome":{"type":"string","enum":["no_answer","busy","voicemail","unreachable","silent_pickup","failed"],"description":"Why the call never reached a conversation. Present only when `connected` is false.","uniqueKey":"outcome","typeLabel":"enum\u003cstring>"},"endedBy":{"type":"string","enum":["callee","agent","supervisor","system"],"description":"Who hung up.","uniqueKey":"endedBy","typeLabel":"enum\u003cstring>"},"toNumber":{"type":"string","description":"E.164. Telephony only.","example":"+923001234567","uniqueKey":"toNumber","typeLabel":"string"},"fromNumber":{"type":"string","description":"E.164 caller id the call was placed from. Telephony only.","example":"+924232591000","uniqueKey":"fromNumber","typeLabel":"string"},"calleeName":{"type":"string","description":"Display name of the person called, from the campaign contact row.","uniqueKey":"calleeName","typeLabel":"string"},"roomName":{"type":"string","uniqueKey":"roomName","typeLabel":"string"},"participantIdentity":{"type":"string","description":"The identity the client joined the room under — usually a person's name for web clients, a generated key for dialed calls.","uniqueKey":"participantIdentity","typeLabel":"string"},"transportProvider":{"type":"string","example":"twilio","uniqueKey":"transportProvider","typeLabel":"string"},"variables":{"type":"object","additionalProperties":true,"description":"The values you passed when the call or session was created.","uniqueKey":"variables","typeLabel":"object"},"assistantVersion":{"type":"integer","description":"The assistant version this session ran. Absent on sessions from before versions.","uniqueKey":"assistantVersion","typeLabel":"integer"},"assistantAlias":{"type":"string","enum":["prod","draft"],"description":"The alias the session was launched on. Absent when it was launched by an exact version number, and on sessions from before versions.","uniqueKey":"assistantAlias","typeLabel":"enum\u003cstring>"},"campaignId":{"type":"string","format":"uuid","description":"Set on calls a campaign dialed.","uniqueKey":"campaignId","typeLabel":"string\u003cuuid>"},"runId":{"type":"string","format":"uuid","description":"The campaign run (one launch) this call belongs to. Set with `campaignId`.","uniqueKey":"runId","typeLabel":"string\u003cuuid>"},"contactId":{"type":"string","description":"The campaign contact this call was placed to.","uniqueKey":"contactId","typeLabel":"string"},"createdAt":{"type":"string","format":"date-time","uniqueKey":"createdAt","typeLabel":"string\u003cdate-time>"},"dialingAt":{"type":"string","format":"date-time","description":"Carrier-reported dial progress. A carrier that never reports a hop leaves this and `ringingAt` absent even on a call that connected.","uniqueKey":"dialingAt","typeLabel":"string\u003cdate-time>"},"ringingAt":{"type":"string","format":"date-time","uniqueKey":"ringingAt","typeLabel":"string\u003cdate-time>"},"connectedAt":{"type":"string","format":"date-time","description":"When the carrier bridged the audio. `answeredAt` is speech-gated, so `connectedAt` without it is a phantom answer: the line picked up and nobody spoke.","uniqueKey":"connectedAt","typeLabel":"string\u003cdate-time>"},"answeredAt":{"type":"string","format":"date-time","description":"When the conversation started.","uniqueKey":"answeredAt","typeLabel":"string\u003cdate-time>"},"endedAt":{"type":"string","format":"date-time","uniqueKey":"endedAt","typeLabel":"string\u003cdate-time>"},"durationSec":{"type":"integer","description":"Talk time, `answeredAt` → `endedAt`. Absent when either timestamp is.","uniqueKey":"durationSec","typeLabel":"integer"},"failureReason":{"type":"string","enum":["wrong_number","busy","declined","no_answer","unreachable","voicemail","silent_pickup","network_error","call_failed"],"description":"Why a `failed` call failed. Appears alongside `outcome: failed` and is the authoritative field of the two.","uniqueKey":"failureReason","typeLabel":"enum\u003cstring>"},"failureReasonWithCode":{"type":"string","description":"`failureReason` with the carrier's SIP code appended when there was one. Switch on `failureReason`; show this.","example":"busy:486","uniqueKey":"failureReasonWithCode","typeLabel":"string"},"transcript":{"type":"array","description":"The conversation in order. Empty on calls that never connected, and on a connected call whose report has not been stored yet.","items":{"type":"object","properties":{"speaker":{"type":"string","enum":["agent","caller"],"uniqueKey":"transcript.items.[INDEX].speaker","typeLabel":"enum\u003cstring>"},"text":{"type":"string","uniqueKey":"transcript.items.[INDEX].text","typeLabel":"string"},"atSec":{"type":"integer","description":"Seconds into the recording this turn began, for lining the transcript up with `audioUrl`. Absent when the report carries no recording start time.","uniqueKey":"transcript.items.[INDEX].atSec","typeLabel":"integer"}},"uniqueKey":"transcript.items.[INDEX]","typeLabel":"object"},"uniqueKey":"transcript","typeLabel":"object[]"},"toolCalls":{"type":"array","description":"Tools the assistant invoked during the call, in order.","items":{"type":"object","properties":{"name":{"type":"string","uniqueKey":"toolCalls.items.[INDEX].name","typeLabel":"string"},"arguments":{"type":"object","additionalProperties":true,"description":"The arguments the model called the tool with.","uniqueKey":"toolCalls.items.[INDEX].arguments","typeLabel":"object"},"result":{"type":"string","description":"What the tool returned, JSON-stringified. Absent when the tool returned nothing.","uniqueKey":"toolCalls.items.[INDEX].result","typeLabel":"string"},"callId":{"type":"string","description":"Pairs the tool call with its result inside the agent's report.","uniqueKey":"toolCalls.items.[INDEX].callId","typeLabel":"string"},"atSec":{"type":"integer","description":"Seconds into the recording, as on transcript turns.","uniqueKey":"toolCalls.items.[INDEX].atSec","typeLabel":"integer"}},"uniqueKey":"toolCalls.items.[INDEX]","typeLabel":"object"},"uniqueKey":"toolCalls","typeLabel":"object[]"},"grade":{"type":"object","description":"The rubric grade, written by the post-call pipeline. Criterion titles and points are resolved into it, so rendering a scorecard needs no rubric lookup.","properties":{"rubricVersionId":{"type":"string","description":"The rubric version this call was graded against.","uniqueKey":"grade.rubricVersionId","typeLabel":"string"},"score":{"oneOf":[{"type":"integer","description":"Percent of the applicable points earned, 0 to 100. Rules marked N/A drop out, so 40 earned of 60 applicable is 67. `null` when no rule applied.","uniqueKey":"grade.score.oneOf.0","typeLabel":"integer"},{"type":"null","description":"Percent of the applicable points earned, 0 to 100. Rules marked N/A drop out, so 40 earned of 60 applicable is 67. `null` when no rule applied.","uniqueKey":"grade.score.oneOf.1","typeLabel":"null"}],"uniqueKey":"grade.score","typeLabel":"integer | null"},"criteria":{"type":"array","items":{"type":"object","properties":{"ruleId":{"type":"string","uniqueKey":"grade.criteria.items.[INDEX].ruleId","typeLabel":"string"},"title":{"type":"string","uniqueKey":"grade.criteria.items.[INDEX].title","typeLabel":"string"},"points":{"type":"integer","description":"The most this rule could earn.","uniqueKey":"grade.criteria.items.[INDEX].points","typeLabel":"integer"},"earned":{"type":"integer","description":"`points` on a pass, 0 on a fail or N/A.","uniqueKey":"grade.criteria.items.[INDEX].earned","typeLabel":"integer"},"passed":{"oneOf":[{"type":"boolean","description":"`null` when the rule did not apply to this call. Read `status` for the three-way answer.","uniqueKey":"grade.criteria.items.[INDEX].passed.oneOf.0","typeLabel":"boolean"},{"type":"null","description":"`null` when the rule did not apply to this call. Read `status` for the three-way answer.","uniqueKey":"grade.criteria.items.[INDEX].passed.oneOf.1","typeLabel":"null"}],"uniqueKey":"grade.criteria.items.[INDEX].passed","typeLabel":"boolean | null"},"status":{"type":"string","enum":["pass","fail","not_applicable"],"description":"Absent on calls graded before N/A existed.","uniqueKey":"grade.criteria.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","maxLength":500,"description":"Why the grader answered this way. Always present on `not_applicable`.","uniqueKey":"grade.criteria.items.[INDEX].reason","typeLabel":"string"},"evidence":{"type":"object","description":"The moment in the call the answer rests on. Can be absent.","properties":{"atSec":{"type":"integer","description":"Seconds into the recording, as on transcript turns.","uniqueKey":"grade.criteria.items.[INDEX].evidence.atSec","typeLabel":"integer"},"quote":{"type":"string","maxLength":500,"description":"Copied from the transcript.","uniqueKey":"grade.criteria.items.[INDEX].evidence.quote","typeLabel":"string"},"speaker":{"type":"string","enum":["agent","contact"],"uniqueKey":"grade.criteria.items.[INDEX].evidence.speaker","typeLabel":"enum\u003cstring>"}},"uniqueKey":"grade.criteria.items.[INDEX].evidence","typeLabel":"object"}},"uniqueKey":"grade.criteria.items.[INDEX]","typeLabel":"object"},"uniqueKey":"grade.criteria","typeLabel":"object[]"},"sentiment":{"type":"string","enum":["happy","neutral","annoyed"],"description":"How the caller sounded. Absent on calls graded before this was added.","uniqueKey":"grade.sentiment","typeLabel":"enum\u003cstring>"},"gradedAt":{"type":"string","format":"date-time","uniqueKey":"grade.gradedAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"grade","typeLabel":"object"},"summary":{"type":"object","description":"Call summary: how it went, in a headline and a few bullets, plus the facts that came up. In English. Not available for adhoc sessions.","properties":{"headline":{"type":"string","description":"One sentence, end state first.","example":"Farmer agreed to try one bottle of Cruiser on the next corn crop and asked for an expert callback.","isRequired":true,"uniqueKey":"summary.headline","typeLabel":"string"},"bullets":{"type":"array","description":"Usually three to five, in call order. Events, not values.","items":{"type":"string","uniqueKey":"summary.bullets.items.[INDEX]","typeLabel":"string"},"example":["Agent confirmed the farmer and introduced Cruiser seed treatment for corn","Farmer agreed to try one bottle on the next sowing","Farmer asked about rice pollination temperature and wanted an expert to call"],"isRequired":true,"uniqueKey":"summary.bullets","typeLabel":"string[]"},"facts":{"type":"array","description":"One per distinct fact, in display order. The first is the person's Decision or the Next Step when one exists.","items":{"type":"object","properties":{"label":{"type":"string","description":"One to three words, Title Case, e.g. `Decision`, `Delivery Address`, `Complaint Ref`.","example":"Decision","isRequired":true,"uniqueKey":"summary.facts.items.[INDEX].label","typeLabel":"string"},"value":{"type":"string","description":"Up to fifteen words, English, Latin script.","example":"Will try one bottle on the next corn crop","isRequired":true,"uniqueKey":"summary.facts.items.[INDEX].value","typeLabel":"string"}},"required":["label","value"],"uniqueKey":"summary.facts.items.[INDEX]","typeLabel":"object"},"isRequired":true,"uniqueKey":"summary.facts","typeLabel":"object[]"},"language":{"type":"string","enum":["en"],"isRequired":true,"uniqueKey":"summary.language","typeLabel":"enum\u003cstring>"},"promptVersion":{"type":"string","example":"call-summary-v1","isRequired":true,"uniqueKey":"summary.promptVersion","typeLabel":"string"},"model":{"type":"string","description":"The model that wrote it.","example":"gpt-5.4-2026-03-05","isRequired":true,"uniqueKey":"summary.model","typeLabel":"string"},"generatedAt":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"summary.generatedAt","typeLabel":"string\u003cdate-time>"}},"required":["headline","bullets","facts","language","promptVersion","model","generatedAt"],"uniqueKey":"summary","typeLabel":"object"},"conversion":{"type":"object","description":"The goal outcome recorded for this call. Absent when the call produced none.","properties":{"goalKind":{"type":"string","enum":["appointment","event","lead","order_confirmation","payment_reminder","outreach","reservation_confirmation"],"uniqueKey":"conversion.goalKind","typeLabel":"enum\u003cstring>"},"payload":{"oneOf":[{"type":"object","title":"Appointment","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"appointment","uniqueKey":"conversion.payload.oneOf.0.kind","typeLabel":"string"},"outcome":{"type":"string","uniqueKey":"conversion.payload.oneOf.0.outcome","typeLabel":"string"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.0.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.0","typeLabel":"Appointment · object"},{"type":"object","title":"RSVP","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"rsvp","uniqueKey":"conversion.payload.oneOf.1.kind","typeLabel":"string"},"outcome":{"type":"string","enum":["confirmed","maybe"],"uniqueKey":"conversion.payload.oneOf.1.outcome","typeLabel":"enum\u003cstring>"},"party":{"type":"integer","minimum":1,"description":"Headcount the caller is bringing, including themselves.","uniqueKey":"conversion.payload.oneOf.1.party","typeLabel":"integer"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.1.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.1","typeLabel":"RSVP · object"},{"type":"object","title":"Lead","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"lead","uniqueKey":"conversion.payload.oneOf.2.kind","typeLabel":"string"},"outcome":{"type":"string","uniqueKey":"conversion.payload.oneOf.2.outcome","typeLabel":"string"},"status":{"type":"string","enum":["qualified","callback","not_interested","wrong_person","needs_human"],"uniqueKey":"conversion.payload.oneOf.2.status","typeLabel":"enum\u003cstring>"},"interest":{"type":"string","uniqueKey":"conversion.payload.oneOf.2.interest","typeLabel":"string"},"nextStep":{"type":"string","uniqueKey":"conversion.payload.oneOf.2.nextStep","typeLabel":"string"},"notes":{"type":"string","uniqueKey":"conversion.payload.oneOf.2.notes","typeLabel":"string"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.2.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.2","typeLabel":"Lead · object"},{"type":"object","title":"Order confirmation","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"order_confirmation","uniqueKey":"conversion.payload.oneOf.3.kind","typeLabel":"string"},"status":{"type":"string","enum":["confirmed","cancelled","amended","address_incomplete","wrong_person","callback"],"uniqueKey":"conversion.payload.oneOf.3.status","typeLabel":"enum\u003cstring>"},"address":{"type":"string","description":"Delivery address as the caller gave or corrected it.","uniqueKey":"conversion.payload.oneOf.3.address","typeLabel":"string"},"orderId":{"type":"string","uniqueKey":"conversion.payload.oneOf.3.orderId","typeLabel":"string"},"orderValue":{"type":"object","properties":{"amount":{"type":"number","uniqueKey":"conversion.payload.oneOf.3.orderValue.amount","typeLabel":"number"},"currency":{"type":"string","uniqueKey":"conversion.payload.oneOf.3.orderValue.currency","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.3.orderValue","typeLabel":"object"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.3.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.3","typeLabel":"Order confirmation · object"},{"type":"object","title":"Payment reminder","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"payment_reminder","uniqueKey":"conversion.payload.oneOf.4.kind","typeLabel":"string"},"status":{"type":"string","enum":["will_pay","already_paid","dispute","callback","wrong_person"],"uniqueKey":"conversion.payload.oneOf.4.status","typeLabel":"enum\u003cstring>"},"promiseDate":{"type":"string","description":"The date the caller committed to pay by.","uniqueKey":"conversion.payload.oneOf.4.promiseDate","typeLabel":"string"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.4.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.4","typeLabel":"Payment reminder · object"},{"type":"object","title":"Outreach","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"outreach","uniqueKey":"conversion.payload.oneOf.5.kind","typeLabel":"string"},"status":{"type":"string","enum":["interested","callback","not_interested","wrong_person"],"uniqueKey":"conversion.payload.oneOf.5.status","typeLabel":"enum\u003cstring>"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.5.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.5","typeLabel":"Outreach · object"},{"type":"object","title":"Reservation confirmation","description":"What the agent got out of the call. `kind` tracks the campaign's `goalKind`, except that an `event` campaign records `rsvp` payloads. Every field but `kind` is best-effort — the agent omits whatever the caller never said.","properties":{"kind":{"type":"string","const":"reservation_confirmation","uniqueKey":"conversion.payload.oneOf.6.kind","typeLabel":"string"},"status":{"type":"string","enum":["confirmed","cancelled","rescheduled","wrong_person","callback"],"uniqueKey":"conversion.payload.oneOf.6.status","typeLabel":"enum\u003cstring>"},"party":{"type":"integer","minimum":1,"uniqueKey":"conversion.payload.oneOf.6.party","typeLabel":"integer"},"reservationTime":{"type":"string","uniqueKey":"conversion.payload.oneOf.6.reservationTime","typeLabel":"string"},"summary":{"type":"string","uniqueKey":"conversion.payload.oneOf.6.summary","typeLabel":"string"}},"uniqueKey":"conversion.payload.oneOf.6","typeLabel":"Reservation confirmation · object"}],"uniqueKey":"conversion.payload","typeLabel":"Appointment · object | RSVP · object | Lead · object | Order confirmation · object | Payment reminder · object | Outreach · object | Reservation confirmation · object"},"slotIso":{"type":"string","format":"date-time","description":"The time that was booked, for goals that book one.","uniqueKey":"conversion.slotIso","typeLabel":"string\u003cdate-time>"},"createdAt":{"type":"string","format":"date-time","uniqueKey":"conversion.createdAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"conversion","typeLabel":"object"},"callback":{"type":"object","description":"The contact asked to be called again on this call. Absent when they did not.","properties":{"kind":{"type":"string","enum":["human","later"],"description":"`human`: a person must call back. `later`: call again, and the assistant may do it. On a campaign, a `later` callback requeues the contact for `callbackAfter`. Callbacks from before kinds existed have no `kind` and are all for a person.","uniqueKey":"callback.kind","typeLabel":"enum\u003cstring>"},"reason":{"type":"string","description":"One line on why.","uniqueKey":"callback.reason","typeLabel":"string"},"status":{"type":"string","enum":["open","scheduled","done","failed"],"description":"`open`: a person must act. `scheduled`: the assistant calls at `callbackAfter`. `done`: a redial reached the contact, or a person closed it. `failed`: the redial cycle ended without reaching the contact. You can set `open` or `done` with [`PATCH /campaigns/callbacks/{callbackId}`](/api-reference/campaign-outcomes/update-a-callbacks-status).","uniqueKey":"callback.status","typeLabel":"enum\u003cstring>"},"callbackAfter":{"type":"string","format":"date-time","description":"When to call, as ISO-8601 with the offset of `timezone`, like `2026-10-29T15:00:00+05:00`. Both kinds get the time the contact named. When no time was said, a `later` callback gets two hours after the call, and a `human` callback has none. Absent when the time is tied to an event or more than 30 days away. Older callbacks can hold free text here.","uniqueKey":"callback.callbackAfter","typeLabel":"string\u003cdate-time>"},"requestedText":{"type":"string","description":"The contact's words that asked for the callback.","uniqueKey":"callback.requestedText","typeLabel":"string"},"timezone":{"type":"string","description":"The IANA zone `callbackAfter` was resolved in.","uniqueKey":"callback.timezone","typeLabel":"string"},"redial":{"type":"object","description":"`later` callbacks on campaign calls only. What became of the assistant's redial.","properties":{"status":{"type":"string","enum":["scheduled","disabled","limit_reached","time_unresolved","campaign_inactive","not_released","exhausted","skipped","campaign_closed"],"description":"`scheduled`: the contact is requeued for `at`. `disabled`: the campaign has `dialing.redialCallbacks: false`. `limit_reached`: the contact already had 3 dial cycles. `time_unresolved`: no time could be held. `campaign_inactive`: the campaign had stopped. `not_released`: the contact could not be requeued. `exhausted`, `skipped`: the redial cycle ended without reaching the contact, and the callback is `failed`. `campaign_closed`: the campaign closed before the redial, and the callback is `open` again for a person.","uniqueKey":"callback.redial.status","typeLabel":"enum\u003cstring>"},"at":{"type":"string","format":"date-time","description":"When the redial is due. Only with `scheduled`.","uniqueKey":"callback.redial.at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"callback.redial","typeLabel":"object"},"timeline":{"type":"array","description":"What happened to the callback, oldest first. Absent on older callbacks.","items":{"type":"object","description":"One entry in a callback's timeline.","properties":{"type":{"type":"string","enum":["created","redial","reached","failed","returned","status","note"],"description":"`created`: the call asked for it. `redial`: what became of the assistant's redial. `reached`: a redial reached the contact. `failed`: the redial cycle ran out. `returned`: the campaign closed first, so it is `open` again. `status`: someone set the status. `note`: someone wrote a note.","isRequired":true,"uniqueKey":"callback.timeline.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"at":{"type":"string","format":"date-time","isRequired":true,"uniqueKey":"callback.timeline.items.[INDEX].at","typeLabel":"string\u003cdate-time>"},"by":{"type":"string","description":"The identity that made a `status` change or `note`. Absent when the system did it.","uniqueKey":"callback.timeline.items.[INDEX].by","typeLabel":"string"},"status":{"type":"string","enum":["open","scheduled","done","failed"],"description":"`open`: a person must act. `scheduled`: the assistant calls at `callbackAfter`. `done`: a redial reached the contact, or a person closed it. `failed`: the redial cycle ended without reaching the contact. You can set `open` or `done` with [`PATCH /campaigns/callbacks/{callbackId}`](/api-reference/campaign-outcomes/update-a-callbacks-status).","uniqueKey":"callback.timeline.items.[INDEX].status","typeLabel":"enum\u003cstring>"},"redial":{"type":"object","description":"`later` callbacks on campaign calls only. What became of the assistant's redial.","properties":{"status":{"type":"string","enum":["scheduled","disabled","limit_reached","time_unresolved","campaign_inactive","not_released","exhausted","skipped","campaign_closed"],"description":"`scheduled`: the contact is requeued for `at`. `disabled`: the campaign has `dialing.redialCallbacks: false`. `limit_reached`: the contact already had 3 dial cycles. `time_unresolved`: no time could be held. `campaign_inactive`: the campaign had stopped. `not_released`: the contact could not be requeued. `exhausted`, `skipped`: the redial cycle ended without reaching the contact, and the callback is `failed`. `campaign_closed`: the campaign closed before the redial, and the callback is `open` again for a person.","uniqueKey":"callback.timeline.items.[INDEX].redial.status","typeLabel":"enum\u003cstring>"},"at":{"type":"string","format":"date-time","description":"When the redial is due. Only with `scheduled`.","uniqueKey":"callback.timeline.items.[INDEX].redial.at","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"callback.timeline.items.[INDEX].redial","typeLabel":"object"},"text":{"type":"string","description":"The note, on `note` events.","uniqueKey":"callback.timeline.items.[INDEX].text","typeLabel":"string"}},"required":["type","at"],"uniqueKey":"callback.timeline.items.[INDEX]","typeLabel":"object"},"uniqueKey":"callback.timeline","typeLabel":"object[]"},"createdAt":{"type":"string","format":"date-time","uniqueKey":"callback.createdAt","typeLabel":"string\u003cdate-time>"}},"uniqueKey":"callback","typeLabel":"object"},"audioUrl":{"type":"string","format":"uri","description":"Presigned link to the recording, valid for one hour. Minted without checking the recording exists, so a call that was never recorded still returns a link that 404s when fetched.","uniqueKey":"audioUrl","typeLabel":"string\u003curi>"}},"uniqueKey":"","typeLabel":"object"},"examples":{"completedCall":{"title":"completedCall","value":{"sessionId":"session_MjU2NjEzNTIteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4","realtimeAssistantId":"452dda41-xxxx-xxxx-xxxx-xxxxxxxxxxxx","channel":"telephony","direction":"outbound","state":"completed","connected":true,"toNumber":"+923001234567","fromNumber":"+924232591000","roomName":"call-25661352-xxxx-xxxx-xxxx-xxxxxxxxxxxx","participantIdentity":"callee-25661352","transportProvider":"twilio","variables":{"source":"assistant-test"},"createdAt":"2026-08-16T18:55:22.677Z","ringingAt":"2026-08-16T18:55:30.758Z","connectedAt":"2026-08-16T18:55:36.927Z","answeredAt":"2026-08-16T18:55:37.641Z","endedAt":"2026-08-16T18:56:17.411Z","durationSec":40,"transcript":[{"speaker":"caller","text":"ہیلو،","atSec":1},{"speaker":"agent","text":"ہیلو، میں ڈاکٹر عامرہ ہوں۔ میں خوابوں کی تعبیر اور ان کے پوشیدہ معنی سمجھنے میں آپ کی مدد کروں گی۔ آج کون سا خواب آپ کو لے کر آیا ہے؟","atSec":6},{"speaker":"caller","text":"ٹھیک ہے۔","atSec":7},{"speaker":"caller","text":"I was having a good dream. Do you know what a good dream is?","atSec":18},{"speaker":"agent","text":"جی ہاں، بالکل۔ اچھا خواب یا خوشگوار خواب وہ ہوتا ہے جس میں انسان کو سکون، خوشی، راحت یا امید محسوس ہو۔","atSec":25}],"toolCalls":[],"summary":{"headline":"Caller asked what a good dream means, got an explanation, and did not book a session.","bullets":["Caller opened by saying they had a good dream","Agent explained that a good dream leaves peace, happiness or hope","Call ended after the explanation with nothing arranged"],"facts":[{"label":"Next Step","value":"None"},{"label":"Topic","value":"Meaning of a good dream"}],"language":"en","promptVersion":"call-summary-v1","model":"gpt-5.4-2026-03-05","generatedAt":"2026-08-16T18:56:19.104Z"}}},"neverConnected":{"title":"neverConnected","value":{"sessionId":"session_Yzk5NjQyMDQteHh4eC14eHh4LXh4eHgteHh4eHh4eHh4eHh4","realtimeAssistantId":"452dda41-xxxx-xxxx-xxxx-xxxxxxxxxxxx","channel":"web","direction":"inbound","state":"created","connected":false,"outcome":"no_answer","roomName":"shifa-clinic-de-c9964204-xxxx-xxxx-xxxx-xxxxxxxxxxxx","participantIdentity":"عائشہ صدیقی","createdAt":"2026-08-18T05:14:08.525Z","transcript":[],"toolCalls":[]}}},"exampleType":"examples"}},"exampleType":"examples"},"95506d21-c4ef-4997-a4bf-9e255e414db6":{"description":"`include_audio_url` was neither `true` nor `false`.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"oneOf":[{"type":"string","description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"message.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"message","typeLabel":"string | string[]"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"statusCode":{"type":"integer","uniqueKey":"statusCode","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"example":{"message":"Validation failed (boolean string is expected)","error":"Bad Request","statusCode":400},"examples":{"Example":{"title":"Example","value":{"message":"Validation failed (boolean string is expected)","error":"Bad Request","statusCode":400}}},"exampleType":"examples"}},"exampleType":"examples"},"9392a71d-f7b3-430e-9f92-189791ef8583":{"description":"A bearer key was sent but is not recognized.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"oneOf":[{"type":"string","description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"message.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"message","typeLabel":"string | string[]"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"statusCode":{"type":"integer","uniqueKey":"statusCode","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"example":{"message":"invalid authorization","error":"Unauthorized","statusCode":401},"examples":{"Example":{"title":"Example","value":{"message":"invalid authorization","error":"Unauthorized","statusCode":401}}},"exampleType":"examples"}},"exampleType":"examples"},"bccef562-e0ab-42ee-8d94-b2921a645b21":{"description":"No API key sent, or the key lacks permission for this resource.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"oneOf":[{"type":"string","description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"message.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"message","typeLabel":"string | string[]"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"statusCode":{"type":"integer","uniqueKey":"statusCode","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"example":{"message":"Forbidden resource","error":"Forbidden","statusCode":403},"examples":{"Example":{"title":"Example","value":{"message":"Forbidden resource","error":"Forbidden","statusCode":403}}},"exampleType":"examples"}},"exampleType":"examples"},"d2d58c46-c38c-4d4e-a20e-6819f99cd2e9":{"description":"No session with that id in the API key's project.","content":{"application/json":{"schema":{"type":"object","properties":{"message":{"oneOf":[{"type":"string","description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.0","typeLabel":"string"},{"type":"array","items":{"type":"string","uniqueKey":"message.oneOf.1.items.[INDEX]","typeLabel":"string"},"description":"One message per failed field for validation errors, a single string otherwise.","uniqueKey":"message.oneOf.1","typeLabel":"string[]"}],"uniqueKey":"message","typeLabel":"string | string[]"},"error":{"type":"string","uniqueKey":"error","typeLabel":"string"},"statusCode":{"type":"integer","uniqueKey":"statusCode","typeLabel":"integer"}},"uniqueKey":"","typeLabel":"object"},"example":{"message":"Session not found: 00000000-0000-4000-8000-000000000000","error":"Not Found","statusCode":404},"examples":{"Example":{"title":"Example","value":{"message":"Session not found: 00000000-0000-4000-8000-000000000000","error":"Not Found","statusCode":404}}},"exampleType":"examples"}},"exampleType":"examples"}},"security":{"73bac4ee-98c5-4fa2-834c-9f180d41c637":{"apiKey":{"type":"http","scheme":"bearer","description":"Project API key (`sk_api_…`).","scopes":[],"schemeName":"apiKey"}}},"servers":{"f8e1e33f-9cf0-4bbb-b41e-9136c129f7ef":{"url":"https://api.upliftai.org/v1"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"Project API key (`sk_api_…`).","scopes":[],"schemeName":"apiKey"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Project API key (`sk_api_…`).","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"apiKey","name":"Authorization"}],"title":"apiKey"}]},"originalFileLocation":"voice-agents/api-reference/openapi.yaml"},"subdomain":"upliftai","siteName":"Uplift AI API Docs","title":"Get a call's transcript and outcomes - Uplift AI API Docs","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-28T06:54:41.193Z","originalFileLocation":"api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=\"light\";if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"light\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; grade, conversion and callback come from that same pipeline, so treat all three as optional. While a call is still live, poll /realtime-assistants/sessions/{sessionId} instead.\">\u003cmeta data-mint-head name=\"application-name\" content=\"Uplift AI API Docs\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Get a call\u0026#x27;s transcript and outcomes - Uplift AI API Docs\">\u003cmeta data-mint-head property=\"og:description\" content=\"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; grade, conversion and callback come from that same pipeline, so treat all three as optional. While a call is still live, poll /realtime-assistants/sessions/{sessionId} instead.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"Uplift AI API Docs\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.upliftai.org/api-reference/sessions-\u0026amp;-call-records/get-a-calls-transcript-and-outcomes\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://upliftai.mintlify.site/_mintlify/api/og/v2?division=Sessions+%26+call+records\u0026amp;title=Get+a+call%27s+transcript+and+outcomes\u0026amp;description=Read+this+after+a+call+ends.+The+transcript+comes+from+the+post-call+report%2C+so+it+is+empty+on+calls+that+never+connected+and+briefly+empty+on+one+that+just+hun\u0026amp;theme=bb6dd6d40a49e0d34c2227da\u0026amp;signature=ff140f0165621dc919ec906b4b5e35d5629f015f09916a82d4710f32b238b03a\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Get a call\u0026#x27;s transcript and outcomes - Uplift AI API Docs\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; grade, conversion and callback come from that same pipeline, so treat all three as optional. While a call is still live, poll /realtime-assistants/sessions/{sessionId} instead.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://upliftai.mintlify.site/_mintlify/api/og/v2?division=Sessions+%26+call+records\u0026amp;title=Get+a+call%27s+transcript+and+outcomes\u0026amp;description=Read+this+after+a+call+ends.+The+transcript+comes+from+the+post-call+report%2C+so+it+is+empty+on+calls+that+never+connected+and+briefly+empty+on+one+that+just+hun\u0026amp;theme=bb6dd6d40a49e0d34c2227da\u0026amp;signature=ff140f0165621dc919ec906b4b5e35d5629f015f09916a82d4710f32b238b03a\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/upliftai/JKzTglt2sBZGZsC-/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"Uplift AI API Docs\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#16A34A\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.upliftai.org/api-reference/sessions-\u0026amp;-call-records/get-a-calls-transcript-and-outcomes\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/sessions-%26-call-records/get-a-calls-transcript-and-outcomes.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.upliftai.org/#organization\",\"name\":\"Uplift AI API Docs\",\"url\":\"https://docs.upliftai.org\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/upliftai/2tcJSpA9F8g1W_V1/logo/logo.png?fit=max\u0026auto=format\u0026n=2tcJSpA9F8g1W_V1\u0026q=85\u0026s=c3823c19a41e66e704751aa27b97cde9\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.upliftai.org#website\",\"name\":\"Uplift AI API Docs\",\"url\":\"https://docs.upliftai.org\",\"publisher\":{\"@id\":\"https://docs.upliftai.org/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes#webpage\",\"url\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes\",\"name\":\"Get a call's transcript and outcomes\",\"description\":\"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; grade, conversion and callback come from that same pipeline, so treat all three as optional. While a call is still live, poll /realtime-assistants/sessions/{sessionId} instead.\",\"dateModified\":\"2026-10-28T06:54:41.193Z\",\"isPartOf\":{\"@id\":\"https://docs.upliftai.org#website\"},\"breadcrumb\":{\"@id\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"API Reference\",\"item\":\"https://docs.upliftai.org/voice-agents/api-reference/limits\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Sessions \u0026 call records\",\"item\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/list-an-assistants-sessions\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Get a call's transcript and outcomes\",\"item\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes#apireference\",\"headline\":\"Get a call's transcript and outcomes\",\"name\":\"Get a call's transcript and outcomes\",\"description\":\"Read this after a call ends. The transcript comes from the post-call report, so it is empty on calls that never connected and briefly empty on one that just hung up; grade, conversion and callback come from that same pipeline, so treat all three as optional. While a call is still live, poll /realtime-assistants/sessions/{sessionId} instead.\",\"url\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes\",\"mainEntityOfPage\":{\"@id\":\"https://docs.upliftai.org/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes#webpage\"},\"dateModified\":\"2026-10-28T06:54:41.193Z\",\"publisher\":{\"@id\":\"https://docs.upliftai.org/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.upliftai.org#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"Uplift AI API Docs\",\"publisher\":{\"@type\":\"Organization\",\"name\":\"Uplift AI API Docs\"},\"provider\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","agentPointerHref":"/api-reference/sessions-%26-call-records/get-a-calls-transcript-and-outcomes.md","siteName":"Uplift AI API Docs","nav":{"global":null,"tabs":[{"tab":"Orator API","pages":[{"title":"Orator API","href":"/introduction"}]},{"tab":"Voice Agents","groups":[{"group":"Getting started","pages":[{"title":"Overview","href":"/voice-agents/getting-started/overview"},{"title":"Quickstart: Web","href":"/voice-agents/getting-started/quickstart-web"},{"title":"Quickstart: Phone","href":"/voice-agents/getting-started/quickstart-phone"}]},{"group":"Concepts","pages":[{"title":"How it works","href":"/voice-agents/concepts/how-it-works"},{"title":"Tools overview","href":"/voice-agents/concepts/tools-overview"},{"title":"Phone call states","href":"/voice-agents/concepts/phone-call-states"},{"title":"Pricing","href":"/voice-agents/concepts/pricing"}]},{"group":"Assistants","pages":[{"title":"Working with assistants","href":"/voice-agents/assistants/working-with-assistants"},{"title":"Draft and publish","href":"/voice-agents/assistants/versions"},{"title":"Transient vs stored assistants","href":"/voice-agents/assistants/transient-vs-stored"},{"title":"Provider \u0026 model reference","href":"/voice-agents/assistants/providers-and-models"},{"title":"Recommended stack","href":"/voice-agents/assistants/recommended-stack"},{"title":"Voice prompting","href":"/voice-agents/assistants/voice-prompting"},{"title":"Build, refine \u0026 simulate","href":"/voice-agents/assistants/build-refine-simulate"},{"title":"Scorecards","href":"/voice-agents/assistants/scorecards"}]},{"group":"Tools","pages":[{"title":"Client tools","href":"/voice-agents/tools/client-tools"},{"title":"Webhook tools","href":"/voice-agents/tools/webhook-tools"},{"title":"End call","href":"/voice-agents/tools/system/end-call"}]},{"group":"Personalization","pages":[{"title":"Variables","href":"/voice-agents/personalization/variables"},{"title":"Per-call instructions","href":"/voice-agents/personalization/per-call-instructions"}]},{"group":"Calling","pages":[{"title":"Outbound calls","href":"/voice-agents/calling/outbound"},{"title":"Inbound calls","href":"/voice-agents/calling/inbound"},{"title":"Phone numbers \u0026 concurrency","href":"/voice-agents/calling/concurrency"},{"title":"Call end reasons","href":"/voice-agents/calling/call-end-reasons"},{"title":"Session details \u0026 transcripts","href":"/voice-agents/calling/session-details"},{"title":"Live listen","href":"/voice-agents/calling/live-listen"}]},{"group":"Campaigns","pages":[{"title":"Getting started with batch calling","href":"/voice-agents/campaigns/getting-started"},{"title":"[ ] Static vs continuous campaigns","hidden":true,"href":"/voice-agents/campaigns/static-vs-continuous"},{"title":"[ ] Static campaigns","hidden":true,"href":"/voice-agents/campaigns/static"},{"title":"[ ] Continuous campaigns","hidden":true,"href":"/voice-agents/campaigns/continuous"},{"title":"[ ] Contacts","hidden":true,"href":"/voice-agents/campaigns/contacts"},{"title":"[ ] Scheduling \u0026 retries","hidden":true,"href":"/voice-agents/campaigns/scheduling-and-retries"},{"title":"[ ] Goals \u0026 scorecards","hidden":true,"href":"/voice-agents/campaigns/goals-and-scorecards"},{"title":"[ ] Results \u0026 stats","hidden":true,"href":"/voice-agents/campaigns/results"}]},{"group":"Webhooks","pages":[{"title":"Webhooks","href":"/voice-agents/webhooks/overview"},{"title":"Event reference","href":"/voice-agents/webhooks/events"}]},{"group":"Frontend","pages":[{"title":"[ ] Architecture","hidden":true,"href":"/voice-agents/frontend/architecture"},{"title":"[ ] React","hidden":true,"href":"/voice-agents/frontend/react"},{"title":"[ ] Widget embed","hidden":true,"href":"/voice-agents/frontend/widget"},{"title":"[ ] Monitoring UI","hidden":true,"href":"/voice-agents/frontend/monitoring-ui"}]},{"group":"Testing","pages":[{"title":"Simulating conversations","href":"/voice-agents/testing/simulation"}]},{"group":"Guides","pages":[{"title":"[ ] Appointment scheduling","hidden":true,"href":"/voice-agents/guides/appointment-scheduling"},{"title":"[ ] Event invitation","hidden":true,"href":"/voice-agents/guides/event-invitation"},{"title":"[ ] Sales / lead qualification","hidden":true,"href":"/voice-agents/guides/lead-qualification"},{"title":"[ ] Payment reminder","hidden":true,"href":"/voice-agents/guides/payment-reminder"},{"title":"[ ] Order confirmation","hidden":true,"href":"/voice-agents/guides/order-confirmation"}]},{"group":"API Reference","pages":[{"title":"Phone numbers \u0026 limits","href":"/voice-agents/api-reference/limits"},{"group":"Assistants","pages":[{"title":"Create an assistant","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants","href":"/api-reference/assistants/create-an-assistant"},{"title":"List assistants","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants","href":"/api-reference/assistants/list-assistants"},{"title":"Get an assistant","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/{realtimeAssistantId}","href":"/api-reference/assistants/get-an-assistant"},{"title":"Update an assistant","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/{realtimeAssistantId}","href":"/api-reference/assistants/update-an-assistant"},{"title":"Delete an assistant","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml delete /realtime-assistants/{realtimeAssistantId}","href":"/api-reference/assistants/delete-an-assistant"},{"title":"Publish an assistant version","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/{realtimeAssistantId}/publish","href":"/api-reference/assistants/publish-an-assistant-version"},{"title":"List published versions","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/{realtimeAssistantId}/versions","href":"/api-reference/assistants/list-published-versions"},{"title":"Get an assistant's publish state","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/{realtimeAssistantId}/metadata","href":"/api-reference/assistants/get-an-assistants-publish-state"}]},{"group":"Authoring an assistant","pages":[{"title":"Build an assistant from a brief","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/builds","href":"/api-reference/authoring-an-assistant/build-an-assistant-from-a-brief"},{"title":"Poll a build's progress","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/builds/status/{buildId}","href":"/api-reference/authoring-an-assistant/poll-a-builds-progress"},{"title":"Rehearse a call against a persona","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/builds/{assistantId}/simulate","href":"/api-reference/authoring-an-assistant/rehearse-a-call-against-a-persona"},{"title":"Refine a built assistant's prompt","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/builds/{assistantId}/refine","href":"/api-reference/authoring-an-assistant/refine-a-built-assistants-prompt"},{"title":"Get an assistant's build record","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/builds/{assistantId}","href":"/api-reference/authoring-an-assistant/get-an-assistants-build-record"}]},{"group":"Starting a conversation","pages":[{"title":"Create a web session token","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/{realtimeAssistantId}/session","href":"/api-reference/starting-a-conversation/create-a-web-session-token"},{"title":"Open a session without an API key","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/{realtimeAssistantId}/public-session","href":"/api-reference/starting-a-conversation/open-a-session-without-an-api-key"},{"title":"Start a session from inline config","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/adhoc/session","href":"/api-reference/starting-a-conversation/start-a-session-from-inline-config"},{"title":"Dispatch a call from this assistant","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/{realtimeAssistantId}/call","href":"/api-reference/starting-a-conversation/dispatch-a-call-from-this-assistant"}]},{"group":"Sessions \u0026 call records","pages":[{"title":"List an assistant's sessions","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/{realtimeAssistantId}/sessions","href":"/api-reference/sessions-\u0026-call-records/list-an-assistants-sessions"},{"title":"Get a session's status","description":"Session metadata — where one browser session or phone call stands right now. Poll this while a call is in flight; once it ends, read the [session detail](/api-reference/sessions-%26-call-records/get-a-calls-transcript-and-outcomes) for the transcript, tool calls, and grade.","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/sessions/{sessionId}","href":"/api-reference/sessions-\u0026-call-records/get-a-sessions-status"},{"title":"Get a call's transcript and outcomes","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /realtime-assistants/sessions/{sessionId}/detail","href":"/api-reference/sessions-\u0026-call-records/get-a-calls-transcript-and-outcomes"},{"title":"Listen in on a live call","description":"Get a LiveKit token for the room a live call is already running in. The listener joins hidden and subscribe-only — they can hear the call but not speak into it — and the token expires ten minutes after it is issued. Live transcription arrives on the `lk.transcription` text stream from the moment you connect, with nothing backfilled.","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /realtime-assistants/sessions/{sessionId}/listen","href":"/api-reference/sessions-\u0026-call-records/listen-in-on-a-live-call"}]},{"group":"Campaigns","pages":[{"title":"Create a campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns","href":"/api-reference/campaigns/create-a-campaign"},{"title":"List campaigns","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns","href":"/api-reference/campaigns/list-campaigns"},{"title":"Get a campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns/{campaignId}","href":"/api-reference/campaigns/get-a-campaign"},{"title":"Update a campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml patch /campaigns/{campaignId}","href":"/api-reference/campaigns/update-a-campaign"},{"title":"Schedule a campaign launch","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/{campaignId}/schedule","href":"/api-reference/campaigns/schedule-a-campaign-launch"},{"title":"Launch a campaign now","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/{campaignId}/launch","href":"/api-reference/campaigns/launch-a-campaign-now"},{"title":"Append contacts to a campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/{campaignId}/contacts","href":"/api-reference/campaigns/append-contacts-to-a-campaign"},{"title":"Pause campaign dialing","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/{campaignId}/pause","href":"/api-reference/campaigns/pause-campaign-dialing"},{"title":"Resume a paused campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/{campaignId}/resume","href":"/api-reference/campaigns/resume-a-paused-campaign"},{"title":"Close a continuous campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/{campaignId}/close","href":"/api-reference/campaigns/close-a-continuous-campaign"}]},{"group":"Campaign outcomes","pages":[{"title":"Aggregate stats for a campaign","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns/{campaignId}/stats","href":"/api-reference/campaign-outcomes/aggregate-stats-for-a-campaign"},{"title":"List a campaign's outcomes","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns/{campaignId}/results","href":"/api-reference/campaign-outcomes/list-a-campaigns-outcomes"},{"title":"List a campaign's calls","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns/{campaignId}/calls","href":"/api-reference/campaign-outcomes/list-a-campaigns-calls"},{"title":"List a campaign's callback requests","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns/{campaignId}/callbacks","href":"/api-reference/campaign-outcomes/list-a-campaigns-callback-requests"},{"title":"Update a callback's status","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml patch /campaigns/callbacks/{callbackId}","href":"/api-reference/campaign-outcomes/update-a-callbacks-status"},{"title":"Add a note to a callback","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /campaigns/callbacks/{callbackId}/notes","href":"/api-reference/campaign-outcomes/add-a-note-to-a-callback"},{"title":"List a campaign's conversion records","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /campaigns/{campaignId}/conversions","href":"/api-reference/campaign-outcomes/list-a-campaigns-conversion-records"}]},{"group":"Contacts","pages":[{"title":"Upload a contact file","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /contact-lists/uploads","href":"/api-reference/contacts/upload-a-contact-file"},{"title":"Re-preview an upload with a mapping","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /contact-lists/uploads/{uploadId}/preview","href":"/api-reference/contacts/re-preview-an-upload-with-a-mapping"},{"title":"Dry-run a contact import","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /contact-sources/preview","href":"/api-reference/contacts/dry-run-a-contact-import"},{"title":"Create a contact list","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /contact-lists","href":"/api-reference/contacts/create-a-contact-list"},{"title":"List contact lists","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /contact-lists","href":"/api-reference/contacts/list-contact-lists"},{"title":"Get a contact list's metadata","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /contact-lists/{listId}","href":"/api-reference/contacts/get-a-contact-lists-metadata"},{"title":"Page through a list's contacts","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /contact-lists/{listId}/contacts","href":"/api-reference/contacts/page-through-a-lists-contacts"},{"group":"Google Sheet sources","pages":[{"title":"Register a Google Sheet as a source","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /contact-sources","href":"/api-reference/google-sheet-sources/register-a-google-sheet-as-a-source"},{"title":"List registered contact sources","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /contact-sources","href":"/api-reference/google-sheet-sources/list-registered-contact-sources"},{"title":"Get a contact source's metadata","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml get /contact-sources/{sourceId}","href":"/api-reference/google-sheet-sources/get-a-contact-sources-metadata"},{"title":"Re-check a registered sheet","deprecated":null,"version":null,"openapi":"/voice-agents/api-reference/openapi.yaml post /contact-sources/{sourceId}/preview","href":"/api-reference/google-sheet-sources/re-check-a-registered-sheet"}]}]},{"group":"Integrations \u0026 delivery health","pages":[{"title":"Webhooks on the portal","href":"/voice-agents/api-reference/webhooks-on-the-portal"}]}]}]},{"tab":"Integration API","hidden":true,"pages":[{"title":"Integration API","href":"/voice-agents/api-reference/integration-api"}]},{"tab":"Realtime Assistants","hidden":true,"pages":[{"title":"Realtime Assistants","href":"/assistants/introduction"}]},{"tab":"Tutorials","pages":[{"title":"Tutorials","href":"/tutorials/livekit-voice-agent"}]},{"tab":"Syngenta Assistant","hidden":true,"pages":[{"title":"Syngenta Assistant","href":"/syngenta/authentication"}]}]},"basePath":"","title":"Get a call's transcript and outcomes - Uplift AI API Docs","buildId":"dpl_596ePT575z4qnAFksq1biRW97aLY","deploymentId":"dpl_596ePT575z4qnAFksq1biRW97aLY","dynamics":["c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["OpenApiReferenceProvider-C9Wu0MeN.js","utils-jWgu-6Qf.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-DBD8f9qn.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BGuX1ui5.js","snippetPresets-Evy63nQB.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","conditional-requirements-CFM0id0Q.js","ApiExamples-BQHO1lnV.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-B6C8m-t_.js","shallow-BG4cT0fH.js","getApiPlaygroundDisplay-CgEPrE-D.js","CodeSnippet-CU8JyZ9N.js","CodeSnippets-BnxHU32T.js","Page-D6S0Yh6q.js","getPastedJson-CwiYOonh.js","icon-DYDpWmDf.js","MethodPill-C-J-l7_c.js","DuplicateIcon-B6ARwg9w.js","createIcon-Dsv4MtDq.js","DynamicMarkdown-CtasenyM.js","SectionHeading-YNcgYwjB.js","axios-vUo_bRtp.js","Markdown-CwLx6PAg.js","clsx-C3kuh_dz.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CmKHfscc.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-U3mI6Ljh.js"]}