Skip to content

Schemas ​

The objects the control API reads and returns, named as the OpenAPI document names them. Fields marked ? may be absent.

AddQueueMemberRequest ​

FieldTypeDescription
skills?string[]At most 32 items.
priority?integer0–100. Default 0.
pausedUntil?string (date-time) | null
identitystring1–200 characters.

Application ​

FieldTypeDescription
idstring (uuid)
slugstring
namestring
statusstringOne of active, suspended.
settingsApplicationSettingsThe platform defaults this tenant runs with. Nothing in it is a tenant domain concept.
createdAtstring (date-time)
updatedAtstring (date-time)

ApplicationKey ​

FieldTypeDescription
idstring (uuid)
apiKeystringMatches ^tlk_(live|test)_.
labelstring
statusstringOne of active, revoked.
lastUsedAtstring (date-time) | null
createdAtstring (date-time)
revokedAtstring (date-time) | null

ApplicationKeyCreated ​

FieldTypeDescription
idstring (uuid)
apiKeystringMatches ^tlk_(live|test)_.
apiSecretstringShown once. Matches ^tlsk_.
labelstring
createdAtstring (date-time)
warningstring

ApplicationKeyPage ​

FieldTypeDescription
dataApplicationKey[]
nextCursorstring | nullThe cursor for the next page; null on the last.

ApplicationSettings ​

The platform defaults this tenant runs with. Nothing in it is a tenant domain concept.

FieldTypeDescription
maxParticipants?integer
defaultRoomMode?stringFixed for the room's life. p2p is two seats. One of p2p, sfu.
ringTimeoutSec?integer
emptyTimeoutSec?integer
departureTimeoutSec?integer
recordingPolicy?stringWhether and when a room may be recorded; fixed at the room's creation. One of off, on_demand, always.
recordingRequiresConsent?booleanWhat a room takes when it does not say.
recordingRetentionDays?integerDays a recording's files are kept; 90 unless set. 1–3650.
duplicateIdentityPolicy?stringOne of reject, evict.
grantCeiling?objectWhat any token of this tenant may be granted; it only narrows.
metering?MeteringSettingsMetering and quotas, validated on write. A quota left out is not enforced. Over a quota is quota_exhausted; reaching a percentage in thresholds sends usage.threshold once per quota, percentage and period (the UTC month for minutes, the UTC day for the concurrency quotas).

Call ​

FieldTypeDescription
sidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
typestringOne of direct, queue, meeting.
fromstringThe identity that placed the call.
tostring[]The identities it rang.
mediastringOne of audio, video.
statusstringOne of ringing, active, completed, no_answer, rejected, cancelled, failed.
queueIdstring (uuid) | null
createdAtstring (date-time)
ringStartedAtstring (date-time) | null
answeredAtstring (date-time) | null
endedAtstring (date-time) | null
durationSecinteger | nullFrom answer to end; null for a call never answered.
billableSecinteger | nullThe participants' billable seconds between answer and end, summed and rounded up to the tenant's increment — about twice durationSec for a 1:1 call, and 0 for one whose media never flowed. Null for a call never answered.
endReasonstring | nullNull until the call ends. The call's own record, the same for both sides: hangup when the identity that placed the call hung up, remote_hangup when the other side did. Every reason is described with the call.ended webhook. One of hangup, remote_hangup, no_answer, rejected, cancelled, busy, reconnect_timeout, transport_failure, evicted, quota_exhausted, node_failure, max_duration.
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
invites?Invite[]On a read of one call, and in the answers of POST /v1/calls and …/end.

CallAnsweredData ​

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
bystringThe identity that answered.
answeredAtstring (date-time)

CallDetail ​

FieldTypeDescription
sidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
typestringOne of direct, queue, meeting.
fromstringThe identity that placed the call.
tostring[]The identities it rang.
mediastringOne of audio, video.
statusstringOne of ringing, active, completed, no_answer, rejected, cancelled, failed.
queueIdstring (uuid) | null
createdAtstring (date-time)
ringStartedAtstring (date-time) | null
answeredAtstring (date-time) | null
endedAtstring (date-time) | null
durationSecinteger | nullFrom answer to end; null for a call never answered.
billableSecinteger | nullThe participants' billable seconds between answer and end, summed and rounded up to the tenant's increment — about twice durationSec for a 1:1 call, and 0 for one whose media never flowed. Null for a call never answered.
endReasonstring | nullNull until the call ends. The call's own record, the same for both sides: hangup when the identity that placed the call hung up, remote_hangup when the other side did. Every reason is described with the call.ended webhook. One of hangup, remote_hangup, no_answer, rejected, cancelled, busy, reconnect_timeout, transport_failure, evicted, quota_exhausted, node_failure, max_duration.
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
invitesInvite[]On a read of one call, and in the answers of POST /v1/calls and …/end.

CallEndedData ​

Carried by call.ended, call.missed, call.rejected and call.cancelled. billableSec is the participants' billable seconds in the call, null for a call never answered — the field a tenant's billing reads.

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
endReasonstringWhy a call ended: the call's own record, the same whichever side reads it. hangup — the identity that placed the call hung up (a queue call's caller included); remote_hangup — the other side hung up: the callee, or the member who answered a queue call. A participant whose connection was lost and did not come back in time, or who was removed from the room, counts as hanging up. no_answer — nobody answered before the ring timeout, nobody could be reached, or a queue gave up; rejected — the callee declined; cancelled — the caller gave up while it rang; evicted — the room was ended, through this API or by a participant allowed to end it; quota_exhausted — a quota or an identity's credit ran out; node_failure — a server failed and the call could not be carried over; max_duration — the room reached its longest allowed duration. busy, reconnect_timeout and transport_failure are not recorded today. The web SDK's callEnded reports hangup and remote_hangup from the client's own side instead: hangup when that client hung up. One of hangup, remote_hangup, no_answer, rejected, cancelled, busy, reconnect_timeout, transport_failure, evicted, quota_exhausted, node_failure, max_duration.
durationSecinteger | nullFrom answer to end; null for a call never answered.
billableSecinteger | nullParticipant seconds in the call, rounded up to the increment; null for a call never answered.
endedAtstring (date-time)

CallEvent ​

FieldTypeDescription
atstring (date-time)
typestring
participantSidstring | null
payloadobject

CallEventPage ​

FieldTypeDescription
dataCallEvent[]
nextCursorstring | nullThe cursor for the next page; null on the last.

CallPage ​

FieldTypeDescription
dataCall[]
nextCursorstring | nullThe cursor for the next page; null on the last.

CallRingingData ​

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
tostring[]
mediastringOne of audio, video.
needsPushbooleanTrue when no device of the invitee's could be reached — the tenant's cue to push from its own token store.

CreateApplicationKeyRequest ​

FieldTypeDescription
label?stringAt most 60 characters.
env?stringOne of live, test. Default "live".

CreateApplicationRequest ​

FieldTypeDescription
slugstring2–40 characters. Matches ^[a-z0-9][a-z0-9-]*$.
namestring1–120 characters.
settings?ApplicationSettingsThe platform defaults this tenant runs with. Nothing in it is a tenant domain concept.

CreateCallRequest ​

FieldTypeDescription
fromstringThe identity the call is placed for. 1–200 characters.
to?string[]The identities to ring. One today; more is 501 unsupported. 1–16 items.
queue?stringA queue’s slug or id, instead of to. 1–200 characters.
requiredSkills?string[]With queue, the skills a member must hold to be offered the call. At most 16 items.
media?stringOne of audio, video. Default "audio".
ringTimeoutSec?integer5–120. Default 30.
roomMetadata?objectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.

CreateQueueRequest ​

FieldTypeDescription
strategy?stringOne of fair_share, round_robin, longest_idle, least_busy, skill_priority, pinned.
ringTimeoutSec?integer5–120. Default 30.
redirectDelayMs?integer0–60000. Default 2000.
maxAttempts?integer1–100. Default 20.
maxWaitSec?integer10–3600. Default 300.
overflowAction?stringvoicemail is in the schema and refused until the platform records calls. One of fail, webhook, push_offline_agents.
settings?QueueSettings
slugstringMatches ^[a-z0-9][a-z0-9_-]{0,62}$.

CreateRoomRequest ​

FieldTypeDescription
name?stringUnique among live rooms; the sid when absent. 1–200 characters.
mode?stringFixed for the room's life. p2p is two seats. One of p2p, sfu. Default "sfu".
maxParticipants?integer50 unless given; a p2p room is 2. 2–100.
emptyTimeoutSec?integerHow long the room lives empty, before anyone joins and after the last leaves. 1–86400. Default 60.
departureTimeoutSec?integerHow long a dropped participant keeps its seat; 20 s in sfu, 60 s in p2p, unless given. 1–600.
metadata?objectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
recordingPolicy?stringon_demand: recorded when POST /v1/rooms/{sid}/recordings asks. always: recorded from the first join, and again on a new media server if the room moves. The application's setting when absent, else off; a p2p room cannot be recorded, so anything but off is refused there. One of off, on_demand, always.
recordingRequiresConsent?booleanRecord a participant only once its client acknowledged the recording, which its user chooses to. The application's setting when absent, else false.

CreateWebhookRequest ​

FieldTypeDescription
urlstringhttps, on the public internet. 1–2048 characters.
events?string[]Each one of room.started, room.finished, participant.joined, participant.left, call.ringing, call.answered, call.ended, call.missed, call.rejected, call.cancelled, queue.entered, queue.assigned, queue.abandoned, queue.overflowed, recording.started, recording.finished, recording.failed, usage.threshold, *. 1–19 items. Default ["*"].

CreditAccount ​

FieldTypeDescription
identitystring
balanceintegerCredits.
updatedAtstring (date-time)

CreditEntryRequest ​

FieldTypeDescription
deltaintegerWhole credits, signed. -1000000000000–1000000000000.
reasonstringOne of grant, refund, expiry, adjust.
idempotencyKeystring1–200 characters.
refType?string1–60 characters.
refId?string1–200 characters.

CreditEntryResult ​

FieldTypeDescription
identitystring
balanceinteger | nullThe balance after the entry.
entryLedgerEntry
replayedbooleanTrue when the key had already written this entry.

Delivery ​

FieldTypeDescription
idstringThe delivery's X-Talkline-Delivery.
eventstringOne of room.started, room.finished, participant.joined, participant.left, call.ringing, call.answered, call.ended, call.missed, call.rejected, call.cancelled, queue.entered, queue.assigned, queue.abandoned, queue.overflowed, recording.started, recording.finished, recording.failed, usage.threshold.
statusstringOne of pending, delivered, failed, abandoned.
attemptsinteger0–7.
lastStatusCodeinteger | null
lastErrorstring | null
nextAttemptAtstring (date-time) | nullSet while pending.
deliveredAtstring (date-time) | null
createdAtstring (date-time)
payloadWebhookEnvelopeEvery delivery's body. Deliveries are at least once: the receiver is idempotent on id, which is the X-Talkline-Delivery header and stable across retries.

DeliveryPage ​

FieldTypeDescription
dataDelivery[]
nextCursorstring | nullThe cursor for the next page; null on the last.

Device ​

FieldTypeDescription
identitystring
deviceIdstringThe tenant's own handle for the install.
platformstringOne of web, android, ios.
pushProviderstringOne of fcm, apns_voip, web_push, none.
pushTokenstring | null
voipTokenstring | nulliOS PushKit; not the APNs alert token.
sdkVersionstring | null
appVersionstring | null
osVersionstring | null
modelstring | null
lastSeenAtstring (date-time)
createdAtstring (date-time)
updatedAtstring (date-time)

DevicePage ​

FieldTypeDescription
dataDevice[]
nextCursorstring | nullThe cursor for the next page; null on the last.

Grants ​

What a participant may do. Every name is one the model has; any other is refused rather than ignored.

FieldTypeDescription
roomJoin?boolean
room?stringA room sid or name. At most 200 characters.
roomCreate?boolean
roomAdmin?booleanMute and evict others, end the room.
roomList?boolean
canPublish?boolean
canSubscribe?boolean
canPublishData?boolean
canPublishSources?string[]Each one of microphone, camera, screen, screen_audio.
hidden?booleanIn the room and invisible to the others — a supervisor.
recorder?boolean
canUpdateOwnMetadata?booleanDefault false.

Health ​

FieldTypeDescription
statusstringOne of ok, degraded.
databasestringok, or the error.
redisstringok, or the error.

IceServers ​

FieldTypeDescription
iceServersobject[]
  iceServers[].urlsstring[]
  iceServers[].username?string
  iceServers[].credential?string
ttlSecinteger

IdentitySettings ​

FieldTypeDescription
identitystring
displayNamestring | null
availabilitystringWhat the person chose. Presence is what the platform sees. One of available, away, dnd.
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
updatedAtstring (date-time)

Introspection ​

FieldTypeDescription
identitystring
name?string
ref?string
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
expiresAtstring (date-time)
requestedGrantsobjectThe token's grants claim as it was minted.
grantsobjectWhat the server grants — never wider than asked.
  grants.roomJoin?boolean
  grants.room?stringA room sid or name. At most 200 characters.
  grants.roomCreate?boolean
  grants.roomAdmin?booleanMute and evict others, end the room.
  grants.roomList?boolean
  grants.canPublish?boolean
  grants.canSubscribe?boolean
  grants.canPublishData?boolean
  grants.canPublishSources?string[]Each one of microphone, camera, screen, screen_audio.
  grants.hidden?booleanIn the room and invisible to the others — a supervisor.
  grants.recorder?boolean
  grants.canUpdateOwnMetadata?booleanDefault false.

IntrospectRequest ​

FieldTypeDescription
tokenstring1–8192 characters.

Invite ​

FieldTypeDescription
identitystring
statestringOne of ringing, accepted, rejected, cancelled, timeout, unreachable.
attemptinteger
devicesNotifiedany[]Which of the invitee's installs were told, and how.
createdAtstring (date-time)
respondedAtstring (date-time) | null
rejectReasonstring | nullThe invitee's own words, unread by the platform.

LedgerEntry ​

FieldTypeDescription
idstringMatches ^[0-9]+$.
deltainteger
reasonstringOne of grant, consume, refund, expiry, adjust.
refTypestring | null
refIdstring | null
idempotencyKeystring
createdAtstring (date-time)

LedgerPage ​

FieldTypeDescription
dataLedgerEntry[]
nextCursorstring | nullThe cursor for the next page; null on the last.

MeteringSettings ​

Metering and quotas, validated on write. A quota left out is not enforced. Over a quota is quota_exhausted; reaching a percentage in thresholds sends usage.threshold once per quota, percentage and period (the UTC month for minutes, the UTC day for the concurrency quotas).

FieldTypeDescription
billingIncrementSec?integerA call's billableSec is rounded up to this; 60 bills by the started minute. 1–3600. Default 1.
quotas?object
  quotas.maxConcurrentRooms?integerLive rooms, at room creation. At least 1.
  quotas.maxParticipantsPerRoom?integerSeats in one room, at join. At least 1.
  quotas.maxConcurrentParticipants?integerSeats across the application, at join. At least 1.
  quotas.maxMonthlyMinutes?integerBillable minutes of seats started this UTC month, at join. At least 1.
  quotas.maxRecordingGb?integerGigabytes of recordings held — not yet deleted by retention — checked when a recording starts. At least 1.
thresholds?integer[]Default [80,100].

MintedToken ​

FieldTypeDescription
tokenstring
grantsGrantsWhat a participant may do. Every name is one the model has; any other is refused rather than ignored.
notestring

MintTokenRequest ​

FieldTypeDescription
identitystringBecomes the token's sub. 1–200 characters.
name?stringAt most 120 characters.
ref?stringAt most 120 characters.
metadata?objectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
grants?object{ roomJoin: true, canSubscribe: true } unless given.
  grants.roomJoin?boolean
  grants.room?stringA room sid or name. At most 200 characters.
  grants.roomCreate?boolean
  grants.roomAdmin?booleanMute and evict others, end the room.
  grants.roomList?boolean
  grants.canPublish?boolean
  grants.canSubscribe?boolean
  grants.canPublishData?boolean
  grants.canPublishSources?string[]Each one of microphone, camera, screen, screen_audio.
  grants.hidden?booleanIn the room and invisible to the others — a supervisor.
  grants.recorder?boolean
  grants.canUpdateOwnMetadata?booleanDefault false.
ttlSec?integer1–600. Default 300.

Participant ​

FieldTypeDescription
sidstringMatches ^PT_[0-9a-f]{20}$.
identitystring
refstring | nullThe token's ref.
namestring | null
kindstringOne of standard, agent, egress, bridge.
statestringOne of joining, active, disconnected, left.
hiddenboolean
grantsGrantsWhat a participant may do. Every name is one the model has; any other is refused rather than ignored.
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
joinedAtstring (date-time)
leftAtstring (date-time) | null
disconnectReasonstring | nullOne of client_leave, server_evict, timeout, transport_failure, duplicate_identity, quota.
tracksTrack[]

ParticipantPage ​

FieldTypeDescription
dataParticipant[]
nextCursorstring | nullThe cursor for the next page; null on the last.

PresenceEntry ​

FieldTypeDescription
identitystring
statestringOne of offline, online, in_call.
availabilitystringWhat the person chose. Presence is what the platform sees. One of available, away, dnd.
lastSeenAtstring (date-time) | nullThe last heartbeat; null for an identity never seen.

PresenceList ​

FieldTypeDescription
dataPresenceEntry[]

PresencePage ​

FieldTypeDescription
dataPresenceEntry[]
nextCursorstring | nullThe cursor for the next page; null on the last.

Problem ​

RFC 9457. Branch on code; detail is for a log, never for a user.

FieldTypeDescription
typestring (uri)
titlestring
statusinteger
codestringThe machine-readable error. x-talkline-status gives the HTTP status each one travels with. Codes shared with the protocol are the same string over either transport. One of validation_failed, token_ttl_too_long, unauthenticated, token_expired, token_replayed, token_not_yet_valid, permission_denied, app_suspended, not_found, room_not_found, identity_not_found, conflict, room_full, room_closed, duplicate_identity, already_answered, payload_too_large, rate_limited, internal, unsupported, sfu_unavailable, signaling_unavailable, recording_unavailable, quota_exhausted.
detailstring
instance?stringThe request's path and query.

Queue ​

FieldTypeDescription
idstring (uuid)
slugstring
strategystringOne of fair_share, round_robin, longest_idle, least_busy, skill_priority, pinned.
ringTimeoutSecinteger
redirectDelayMsinteger
maxAttemptsinteger
maxWaitSecinteger
overflowActionstringvoicemail is in the schema and refused until the platform records calls. One of fail, webhook, push_offline_agents.
settingsQueueSettings
createdAtstring (date-time)
updatedAtstring (date-time)

QueueAbandonedData ​

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
queueIdstring (uuid)
queueSlugstring | nullNull when the queue was deleted under the entry.
callerstring
requiredSkillsstring[]
enqueuedAtstring (date-time)
attemptsintegerMembers offered the call before the caller left. At least 0.
abandonedAtstring (date-time)

QueueAssignedData ​

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
queueIdstring (uuid)
queueSlugstring | nullNull when the queue was deleted under the entry.
callerstring
requiredSkillsstring[]
enqueuedAtstring (date-time)
attemptsintegerMembers offered the call, the one who answered included. At least 1.
assignedIdentitystring
assignedAtstring (date-time)

QueueEnteredData ​

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
queueIdstring (uuid)
queueSlugstring | nullNull when the queue was deleted under the entry.
callerstring
requiredSkillsstring[]
enqueuedAtstring (date-time)

QueueEntry ​

FieldTypeDescription
callSidstringMatches ^CS_.
callerstring
statestringOne of waiting, assigned, abandoned, overflowed, no_agents.
requiredSkillsstring[]
attemptsinteger
enqueuedAtstring (date-time)
assignedAtstring (date-time) | null
abandonedAtstring (date-time) | null
assignedIdentitystring | null

QueueEntryPage ​

FieldTypeDescription
dataQueueEntry[]
nextCursorstring | nullThe cursor for the next page; null on the last.

QueueExplanation ​

FieldTypeDescription
queueIdstring (uuid)
strategystringOne of fair_share, round_robin, longest_idle, least_busy, skill_priority, pinned.
callerstring
agentstring
atstring (date-time)
eligibleboolean
excludedBystring | nullOne of self, paused, offline, unavailable, busy, tried, skill_mismatch, not_pinned.
positioninteger | null
ofintegerHow many members are eligible.
scorenumber | null
factorsobject | null
inputsobject
  inputs.onlineboolean
  inputs.availabilitystringWhat the person chose. Presence is what the platform sees. One of available, away, dnd.
  inputs.activeCallsinteger
  inputs.pausedUntilstring (date-time) | null
  inputs.skillsstring[]
  inputs.priorityinteger
  inputs.lastAssignedAtstring (date-time) | null
  inputs.completedTodayinteger
  inputs.rejectedCallerTodayboolean

QueueMember ​

FieldTypeDescription
identitystring
skillsstring[]
priorityintegerLower is preferred.
pausedUntilstring (date-time) | null
createdAtstring (date-time)
updatedAtstring (date-time)

QueueMemberPage ​

FieldTypeDescription
dataQueueMember[]
nextCursorstring | nullThe cursor for the next page; null on the last.

QueueOverflowedData ​

FieldTypeDescription
callSidstringMatches ^CS_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
queueIdstring (uuid)
queueSlugstring | nullNull when the queue was deleted under the entry.
callerstring
requiredSkillsstring[]
enqueuedAtstring (date-time)
attemptsintegerMembers offered the call before nobody was left. At least 0.
overflowedAtstring (date-time)

QueuePage ​

FieldTypeDescription
dataQueue[]
nextCursorstring | nullThe cursor for the next page; null on the last.

QueueSettings ​

FieldTypeDescription
weights?objectfair_share factor weights. Unset factors keep their defaults.
  weights.completed_today?number
  weights.rejected_this_caller_today?number
  weights.active_calls?number
  weights.idle_seconds?number
  weights.tier?number
completed_call_weight?numberRead as weights.completed_today.
rejection_penalty?numberRead as weights.rejected_this_caller_today.
allow_concurrent?booleanAlso offer calls to members already in a call. Off by default: a member in a call is skipped as busy.
pinned_identity?stringThe one identity a pinned queue offers to. 1–200 characters.

QueueSimulation ​

FieldTypeDescription
queueIdstring (uuid)
strategystringOne of fair_share, round_robin, longest_idle, least_busy, skill_priority, pinned.
callerstring
requiredSkillsstring[]
atstring (date-time)
decisionobject
  decision.kindstringOne of offer, overflow, exhausted.
  decision.agent?string
  decision.action?string
  decision.reason?string
rankedobject[]
  ranked[].positioninteger
  ranked[].identitystring
  ranked[].scorenumberLowest wins.
  ranked[].factorsobject
excludedobject[]
  excluded[].identitystring
  excluded[].reasonstringOne of self, paused, offline, unavailable, busy, tried, skill_mismatch, not_pinned.

QueueStats ​

FieldTypeDescription
waitinginteger
oldestWaitingSincestring (date-time) | null
membersinteger
onlineinteger
eligibleNowintegerMembers a call could be offered to now.
todayobject
  today.assignedinteger
  today.abandonedinteger
  today.unansweredintegerEnded with nobody eligible, or the loop spent.
  today.averageWaitSecnumber | null

Recording ​

FieldTypeDescription
sidstringMatches ^RC_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
statusstringstarting and active while it records; stopping and processing while its files are finished and uploaded; then complete, or failed — stopped by something other than a request, or never started — with whatever it captured (partial). One of starting, active, stopping, processing, complete, failed.
layoutstringEvery recording is per_track today. One of per_track, composite, audio_only.
consentRequiredbooleanParticipants were recorded only once they acknowledged it.
partialbooleanStopped by something other than a request; its files are what it captured before.
errorstring | nullWhy a failed recording stopped — node_failed, egress_restarted, start_failed: … — for a log.
startedAtstring (date-time)
endedAtstring (date-time) | null
durationSecinteger | null
sizeBytesinteger | nullWritten so far while it runs; stored once finished.
storageKeystring | nullThe prefix every file and the timeline are under, once uploaded.
expiresAtstring (date-time) | nullWhen retention deletes its files.
deletedAtstring (date-time) | nullWhen retention deleted them; the record stays.
filesRecordingFile[]

RecordingFile ​

One track's file, Opus and VP8 or VP9 in WebM, H.264 in Matroska, copied as the publisher sent it. Placed in time by offsetMs from the recording's start; the timeline says when each participant joined and left, muted and spoke.

FieldTypeDescription
trackSidstringMatches ^TR_[0-9a-f]{20}$.
identitystring
participantSidstringMatches ^PT_[0-9a-f]{20}$.
kindstringOne of audio, video.
sourcestringOne of microphone, camera, screen, screen_audio.
filestringTR_….webm; TR_…-2.webm for a track whose stream was replaced mid-recording.
keystringThe object's key in the store.
mimestring
sizeBytesinteger
offsetMsintegerMilliseconds from the recording's start to the file's first media.
durationMsinteger
sha256stringOf the bytes stored, hex.

RecordingFinishedData ​

Carried by recording.finished and recording.failed: the recording as GET /v1/recordings/{sid} shows it, its sid named recordingSid.

FieldTypeDescription
recordingSidstringMatches ^RC_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
statusstringstarting and active while it records; stopping and processing while its files are finished and uploaded; then complete, or failed — stopped by something other than a request, or never started — with whatever it captured (partial). One of starting, active, stopping, processing, complete, failed.
layoutstringOne of per_track, composite, audio_only.
consentRequiredboolean
partialboolean
errorstring | null
startedAtstring (date-time)
endedAtstring (date-time) | null
durationSecinteger | null
sizeBytesinteger | null
storageKeystring | null
expiresAtstring (date-time) | null
deletedAtstring (date-time) | null
filesRecordingFile[]

RecordingPage ​

FieldTypeDescription
dataRecording[]
nextCursorstring | nullThe cursor for the next page; null on the last.

RecordingStartedData ​

FieldTypeDescription
recordingSidstringMatches ^RC_[0-9a-f]{20}$.
roomSidstringMatches ^RM_[0-9a-f]{20}$.
consentRequiredboolean
startedAtstring (date-time)

RecordingUrls ​

FieldTypeDescription
expiresAtstring (date-time)
urlsobject[]
  urls[].filestring
  urls[].urlstring (uri)

RevokedApplicationKey ​

FieldTypeDescription
idstring (uuid)
apiKeystring
status"revoked"One of revoked.
revokedAtstring (date-time)

Room ​

FieldTypeDescription
sidstringMatches ^RM_[0-9a-f]{20}$.
namestringUnique among the tenant's live rooms; the sid when none was given.
modestringFixed for the room's life. p2p is two seats. One of p2p, sfu.
maxParticipantsinteger
emptyTimeoutSecinteger
departureTimeoutSecinteger
recordingPolicystringWhether and when a room may be recorded; fixed at the room's creation. One of off, on_demand, always.
recordingRequiresConsentbooleanA participant is recorded only once it acknowledged the recording.
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
numParticipantsintegerSeats not yet left.
createdAtstring (date-time)
startedAtstring (date-time) | null
endedAtstring (date-time) | null
endReasonstring | nullOne of empty, api, max_duration, node_failure, quota.
participants?Participant[]On a read of one room only.

RoomDetail ​

FieldTypeDescription
sidstringMatches ^RM_[0-9a-f]{20}$.
namestringUnique among the tenant's live rooms; the sid when none was given.
modestringFixed for the room's life. p2p is two seats. One of p2p, sfu.
maxParticipantsinteger
emptyTimeoutSecinteger
departureTimeoutSecinteger
recordingPolicystringWhether and when a room may be recorded; fixed at the room's creation. One of off, on_demand, always.
recordingRequiresConsentbooleanA participant is recorded only once it acknowledged the recording.
metadataobjectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
numParticipantsintegerSeats not yet left.
createdAtstring (date-time)
startedAtstring (date-time) | null
endedAtstring (date-time) | null
endReasonstring | nullOne of empty, api, max_duration, node_failure, quota.
participantsParticipant[]On a read of one room only.

RoomFinishedData ​

FieldTypeDescription
roomSidstringMatches ^RM_[0-9a-f]{20}$.

RoomPage ​

FieldTypeDescription
dataRoom[]
nextCursorstring | nullThe cursor for the next page; null on the last.

SendDataRequest ​

FieldTypeDescription
payloadstringAt most 15 360 bytes once decoded.
topic?stringAt most 100 characters.
to?string[]Identities. Absent or empty — everyone in the room. At most 200 items.
reliable?booleanDefault true.

SendDataResult ​

FieldTypeDescription
recipientsintegerHow many seats it was sent to.

Track ​

FieldTypeDescription
sidstringMatches ^TR_[0-9a-f]{20}$.
kindstringOne of audio, video.
sourcestringOne of microphone, camera, screen, screen_audio.
mimestring
simulcastLayersinteger
mutedboolean
namestring | null
startedAtstring (date-time)
endedAtstring (date-time) | null

UpdateApplicationRequest ​

FieldTypeDescription
name?string1–120 characters.
status?stringOne of active, suspended.
settings?ApplicationSettingsThe platform defaults this tenant runs with. Nothing in it is a tenant domain concept.

UpdateParticipantRequest ​

FieldTypeDescription
grants?GrantsWhat a participant may do. Every name is one the model has; any other is refused rather than ignored.
metadata?objectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.
mutedTracks?string[]Track sids to mute, in sfu rooms. A muted track stays muted until its publisher unmutes it. At most 16 items.

UpdateQueueMemberRequest ​

FieldTypeDescription
skills?string[]At most 32 items.
priority?integer0–100. Default 0.
pausedUntil?string (date-time) | null

UpdateQueueRequest ​

FieldTypeDescription
strategy?stringOne of fair_share, round_robin, longest_idle, least_busy, skill_priority, pinned.
ringTimeoutSec?integer5–120. Default 30.
redirectDelayMs?integer0–60000. Default 2000.
maxAttempts?integer1–100. Default 20.
maxWaitSec?integer10–3600. Default 300.
overflowAction?stringvoicemail is in the schema and refused until the platform records calls. One of fail, webhook, push_offline_agents.
settings?QueueSettings

UpdateWebhookRequest ​

FieldTypeDescription
url?string1–2048 characters.
events?string[]Each one of room.started, room.finished, participant.joined, participant.left, call.ringing, call.answered, call.ended, call.missed, call.rejected, call.cancelled, queue.entered, queue.assigned, queue.abandoned, queue.overflowed, recording.started, recording.finished, recording.failed, usage.threshold, *. 1–19 items.
status?stringactive resumes a paused or failing endpoint. One of active, paused.

UpsertDeviceRequest ​

FieldTypeDescription
platformstringOne of web, android, ios.
pushProvider?stringOne of fcm, apns_voip, web_push, none. Default "none".
pushToken?string1–4096 characters.
voipToken?stringiOS PushKit; not the APNs alert token. 1–4096 characters.
sdkVersion?stringAt most 40 characters.
appVersion?stringAt most 40 characters.
osVersion?stringAt most 60 characters.
model?stringAt most 80 characters.

UpsertIdentityRequest ​

FieldTypeDescription
displayName?stringAt most 120 characters.
availability?stringWhat the person chose. Presence is what the platform sees. One of available, away, dnd. Default "available".
metadata?objectThe tenant's own JSON, at most 4 096 bytes as UTF-8. The platform never reads it.

UsageGroup ​

FieldTypeDescription
keystringThe day (YYYY-MM-DD, UTC), the identity, or the room sid.
seatsintegerSeats counted: one per participant per joining.
connectedSecintegerJoin to departure, the departure grace included.
billableSecintegerConnected, less the time before media first flowed and the time lost past the grace.
publishedAudioSecintegerUnmuted audio track lifetimes; sfu rooms only.
publishedVideoSecintegerUnmuted video track lifetimes; sfu rooms only.
sfuSecintegerConnected seconds in sfu rooms; 0 in p2p.
recordedSecinteger
sfuEgressBytesinteger
turnBytesRelayedintegerReconciled from TURN hourly; see turnBytesFinal.
finalbooleanFalse while a seat in the group is live (counted to the last flush).
turnBytesFinalbooleanFalse until every seat in the group has been reconciled.

UsagePage ​

FieldTypeDescription
fromstring (date-time)
tostring (date-time)
groupBystringOne of day, identity, room.
dataUsageGroup[]
nextCursorstring | nullThe cursor for the next page; null on the last.

UsageRates ​

FieldTypeDescription
ratesobjectCredits per unit — a second, or a byte — by dimension.

WebhookEndpoint ​

FieldTypeDescription
idstring (uuid)
urlstring (uri)
eventsstring[]* is every event, including those added later. Each one of room.started, room.finished, participant.joined, participant.left, call.ringing, call.answered, call.ended, call.missed, call.rejected, call.cancelled, queue.entered, queue.assigned, queue.abandoned, queue.overflowed, recording.started, recording.finished, recording.failed, usage.threshold, *.
statusstringfailing is the platform's to set, after twenty consecutive failed attempts. One of active, paused, failing.
createdAtstring (date-time)
updatedAtstring (date-time)
secret?stringThe signing secret — in the answers to registration and rotation, and nowhere else. Matches ^whsec_.

WebhookEndpointPage ​

FieldTypeDescription
dataWebhookEndpoint[]
nextCursorstring | nullThe cursor for the next page; null on the last.

WebhookEndpointWithSecret ​

FieldTypeDescription
idstring (uuid)
urlstring (uri)
eventsstring[]* is every event, including those added later. Each one of room.started, room.finished, participant.joined, participant.left, call.ringing, call.answered, call.ended, call.missed, call.rejected, call.cancelled, queue.entered, queue.assigned, queue.abandoned, queue.overflowed, recording.started, recording.finished, recording.failed, usage.threshold, *.
statusstringfailing is the platform's to set, after twenty consecutive failed attempts. One of active, paused, failing.
createdAtstring (date-time)
updatedAtstring (date-time)
secretstringThe signing secret — in the answers to registration and rotation, and nowhere else. Matches ^whsec_.

WebhookEnvelope ​

Every delivery's body. Deliveries are at least once: the receiver is idempotent on id, which is the X-Talkline-Delivery header and stable across retries.

FieldTypeDescription
idstring
eventstringOne of room.started, room.finished, participant.joined, participant.left, call.ringing, call.answered, call.ended, call.missed, call.rejected, call.cancelled, queue.entered, queue.assigned, queue.abandoned, queue.overflowed, recording.started, recording.finished, recording.failed, usage.threshold.
createdAtstring (date-time)
dataobjectThe event's fields, times as ISO 8601.

Talkline documentation