API Reference
API Reference

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.

GET/api/v1/sessions/transcript/{session_id}

Authentication

Syllable-API-Keyrequired

Send 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_idstringrequired

Internal ID of the session

transcriptionSessionText[]required

Transcriptions of all messages in the session

Item schema
itemsSessionTextrequired

Information about a given message from a user to an agent or vice-versa.

5 fields
timestampstring (date-time)required

Timestamp of the message

langstring | nulloptional

ISO 639 code of the language used for the message (may appear as "unset" if was not conclusively determined)

sourcestring | nulloptional

Whether the user or agent sent the message

textstring | nulloptional

Content of the message

stt_confidenceTranscriptConfidence | nulloptional

The 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
providerstringrequired
modelstring | nulloptional
utterancenumber | nulloptional
utterance_sourceenum<string> | nulloptional
Allowed values ["provider","derived_min"]
wordsTranscriptWordConfidence[] | nulloptional
Item schema
itemsTranscriptWordConfidencerequired

Per-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
wordstringrequired
confidencenumber | nulloptional
startnumber | nulloptional
endnumber | nulloptional
words_truncatedboolean | nulloptional
actionsSessionAction[]required

Tool invocations that occurred during the session

Item schema
itemsSessionActionrequired

Information about a given tool invocation as part of a session.

6 fields
timestampstring (date-time)required

Timestamp of the tool invocation

tool_namestring | nulloptional

Name of the tool that was invoked

tool_requeststring | nulloptional

Request sent to the tool API, if applicable

tool_resultstring | nulloptional

Response received from the tool API, if applicable

tool_errorstring | nulloptional

Error received from the tool API, if applicable

duration_msnumber | nulloptional

How long the tool invocation took, in milliseconds

transcript_completebooleanoptional

True 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.

Default false
Response 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[]optional
Item schema
itemsValidationErrorrequired
3 fields
locstring | integer[]required
Item schema
itemsstring | integerrequired
2 options
Option 1stringrequired
Option 2integerrequired
msgstringrequired
typestringrequired
Response example
{
  "detail": [
    {
      "loc": [
        "string"
      ],
      "msg": "string",
      "type": "string"
    }
  ]
}