Skip to main content
POST
End Realtime Transcription

Authorizations

Authorization
string
header
required

API key in format {id}.{secret}.

The notes an endpoint returns depend on the key type. A user key reaches the notes that user can see in the app, including notes in their own private folders. A system key (workspace or organization, no user identity) reaches only notes that sit in a folder shared with all workspace members. Notes in a private folder, in a folder shared with only some members, or in no folder at all fall outside a system key's read scope, and scopes do not widen that boundary.

List and search endpoints drop out-of-scope notes from the response without an error. Single-note reads and their sub-resources return 404, the same response as a deleted note. See What notes a system key reads.

Path Parameters

id
string
required

The session id returned from Create Realtime Transcription.

Response

The session after the request.

A realtime transcription session. Results are delivered only over the WebSocket at wsUrl, not through this resource. See WebSocket protocol.

id
string
required

Session ID.

Example:

"Rt7Yq2PbX9cDk"

workspaceGuid
string
required

Workspace the session belongs to. Concurrent sessions are counted per workspace.

Example:

"Wk8sQ2mLx1aB7"

status
enum<string>
required
  • OPEN: Tiro accepts audio. You can connect and reconnect. The session holds a concurrent slot
  • ENDED: The session is over. You cannot reconnect

New values can appear. Treat an unknown value as not ENDED.

Available options:
OPEN,
ENDED
Example:

"OPEN"

wsUrl
string
required

WebSocket URL to connect to. Use it as returned. Do not build or hard-code the host or path.

Example:

"wss://api.tiro.ooo/v1/external/realtime-transcriptions/Rt7Yq2PbX9cDk/stream"

maxDurationMs
integer<int64>
required

Maximum session length, counted from the first connection. Currently 10,800,000 (3 hours).

Example:

10800000

audioDurationMs
integer<int64>
required

Audio length Tiro has received so far, including connections that already closed.

Example:

0

createdAt
string<date-time>
required

When the session was created.

Example:

"2026-11-05T09:00:00Z"

apiKeyId
string | null

Public ID of the API key that created the session, matching apiKeyId from GET /v1/external/auth/me. null only when Tiro can no longer find that key.

Example:

"tk_8f2a91c0d3e4"

endReason
enum<string> | null

Why the session ended. null while OPEN.

  • CLIENT_REQUESTED: WebSocket session.end or End Realtime Transcription
  • IDLE_TIMEOUT: No audio for 15 minutes
  • MAX_DURATION: 3 hours since the first connection
  • INTERNAL_ERROR: Tiro could not continue the session

New values can appear. Treat an unknown value as a normal end.

Available options:
CLIENT_REQUESTED,
IDLE_TIMEOUT,
MAX_DURATION,
INTERNAL_ERROR
Example:

null

streamToken
string

Token for the WebSocket Authorization: Bearer header. Present only in the Create Realtime Transcription response. Opaque, up to 512 characters. Valid for this session while it is OPEN.

Example:

"rtt_5Hq3..."

transcriptionLocale
string | null

Transcription locale applied to the session. null means auto detection.

Example:

"ko_KR"

translationLocale
string | null

Translation locale. null means no translation.

Example:

"en_US"

endedAt
string<date-time> | null

When the session ended. null while OPEN.

Example:

null