sdk.fetch(context_mode="conversation-summary").
Poll completion with sdk.memories.status(ingestion_id) or sdk.memories.wait_for_completion(ingestion_id).
Parameters
str
required
The client’s own call/conversation id. Any string is accepted — it is not validated as a UUID (unlike
record_message). The server coerces it and echoes the original back as external_conversation_id. Reuse a stable id per call (e.g. your telephony provider’s call id, or "{phone}:{call_start_iso}").str
required
Caller identity — e.g. an E.164 phone number for a voice call.
str | List[TranscriptTurn]
required
The conversation content. A plain string is split by the server on the turn grammar; a
List[TranscriptTurn] is preferred because it preserves per-turn timestamps and speaker labels.str
Required on B2B (strict-isolation) instances; omit on B2C (
equals_customer), where the server collapses it from user_id.str
Free-form label, ≤ 64 chars (e.g.
"voice", "text", "video").Dict[str, Any]
Your own per-call analysis JSON (≤ 64 KB). Stored verbatim (returned by conversation-summary fetches and shown in the dashboard) and fed to extraction as high-confidence hints.
Dict[str, Any]
Open-ended metadata (≤ 64 KB).
datetime
Conversation start time.
datetime
Conversation end time.
Returns
ATranscriptIngestResponse.
str
The server-coerced (UUID-form) conversation id.
str
The original id you supplied, echoed verbatim.
UUID
Handle for
sdk.memories.status() / wait_for_completion(). Always set on success — never null, even on the duplicate branch.str
"queued" (recorded + enqueued) or "duplicate" (an identical transcript was already pushed).int
Number of turns persisted.
str
"in_progress" (compaction enqueued), "already_compacted" (duplicate where the summary already exists), or "skipped" (no turns to summarize).datetime
When the push was accepted.
.raw — the untyped response dict, for forward compatibility with fields a newer server may add.
Idempotency
The push is idempotent on(conversation_id, transcript):
- Same transcript, same id →
status="duplicate"with the originalingestion_id. Retries are free. - Different transcript, same id →
TranscriptConflictError(HTTP 409). A call’s transcript is immutable; mint a newconversation_idfor a new call.
Example
Raises
InvalidInputError: empty transcript, oversizedanalysis/metadata, or a B2B push missingcustomer_id(HTTP 400/422).TranscriptConflictError: a different transcript was already ingested under thisconversation_id(HTTP 409). Subclass ofConflictError.RateLimitError/InsufficientCreditsError: as applicable.AuthenticationError: when the API key is missing or invalid.
See also
- context.fetch (conversation-summary mode) — the call-start read.
- user.get_profile
- memories.status / memories.wait_for_completion