Get Session Transcript By Id
Return a session's transcript, and whether it is complete.
Transcript records reach the logs database through an asynchronous pipeline, so a read taken immediately after a session ends can return a short record. transcript_complete is true only when everything the session reported writing is present, across both the spoken transcript and the tool activity in actions. A caller that needs the whole record should re-request with exponential backoff until it is true, or until its own time limit passes, keeping the last response either way.
A time limit is required rather than optional. transcript_complete never turns true for a session still in progress, for a session on a channel that reports no expected count (only voice reports one today), or for a session that ended before the field was introduced - so a caller polling without a limit would never stop.
/api/v1/sessions/transcript/{session_id}Authentication
Syllable-API-KeyrequiredSend Syllable-API-Key in the header.
Need a credential? Create or manage an API token in the Syllable Console.
Parameters
Path parameters
session_id
string
path
required
Responses
200Successful Response
application/json
response
SessionTranscriptionResponse
required
4 fields
session_idstringrequiredInternal ID of the session
transcriptionSessionText[]requiredTranscriptions of all messages in the session
Item schema
itemsSessionTextrequiredInformation about a given message from a user to an agent or vice-versa.
5 fields
timestampstring (date-time)requiredTimestamp of the message
langstring | nulloptionalISO 639 code of the language used for the message (may appear as "unset" if was not conclusively determined)
sourcestring | nulloptionalWhether the user or agent sent the message
textstring | nulloptionalContent of the message
stt_confidenceTranscriptConfidence | nulloptionalThe STT provider's confidence for a user utterance. Absent on agent turns, and on user turns whose backend reported nothing -- absence means "not captured", never "the provider was certain this was wrong". NOT one comparable quantity: read provider and utterance_source before interpreting a value, and do not aggregate across providers. Deepgram reports a genuine acoustic confidence and a per-word breakdown; Google reports an utterance score its own documentation disclaims and no words; on Deepgram Flux the utterance score is the weakest word, computed by us rather than reported.
6 options
providerstringrequiredmodelstring | nulloptionalutterancenumber | nulloptionalutterance_sourceenum<string> | nulloptional["provider","derived_min"]wordsTranscriptWordConfidence[] | nulloptionalItem schema
itemsTranscriptWordConfidencerequiredPer-word STT confidence. word prefers the provider's punctuated form so the stored words read the same way as the transcript they came from.
4 fields
wordstringrequiredconfidencenumber | nulloptionalstartnumber | nulloptionalendnumber | nulloptionalwords_truncatedboolean | nulloptionalactionsSessionAction[]requiredTool invocations that occurred during the session
Item schema
itemsSessionActionrequiredInformation about a given tool invocation as part of a session.
6 fields
timestampstring (date-time)requiredTimestamp of the tool invocation
tool_namestring | nulloptionalName of the tool that was invoked
tool_requeststring | nulloptionalRequest sent to the tool API, if applicable
tool_resultstring | nulloptionalResponse received from the tool API, if applicable
tool_errorstring | nulloptionalError received from the tool API, if applicable
duration_msnumber | nulloptionalHow long the tool invocation took, in milliseconds
transcript_completebooleanoptionalTrue when every record the session reported writing is present, across both the spoken transcript and the tool activity in actions. False means the record cannot be confirmed complete. Callers should re-request until this is true, or until their own time limit passes. A limit is required rather than advisable, because three of the cases behind a False never turn true: a session still in progress, a session whose channel reports no expected count - only voice does today, so this is every web chat, SMS and email session - and any session that ended before this field was introduced.
falseResponse example
{
"session_id": "string",
"transcription": [
{
"timestamp": "string",
"lang": "string",
"source": "string",
"text": "string",
"stt_confidence": "string"
}
],
"actions": [
{
"timestamp": "string",
"tool_name": "string",
"tool_request": "string",
"tool_result": "string",
"tool_error": "string",
"duration_ms": "string"
}
],
"transcript_complete": false
}422Validation Error
application/json
response
HTTPValidationError
required
1 field
detailValidationError[]optionalItem schema
itemsValidationErrorrequired3 fields
locstring | integer[]requiredItem schema
itemsstring | integerrequired2 options
Option 1stringrequiredOption 2integerrequiredmsgstringrequiredtypestringrequiredResponse example
{
"detail": [
{
"loc": [
"string"
],
"msg": "string",
"type": "string"
}
]
}
