Skip to main content

Start voice recording

POST /server/v1/talkrec/start Authentication: required (see Overview) Start voice recording for a channel. The server joins the channel as an audience member and records passively, with a separate track per speaker and automatic segmentation based on media frames, cutting the audio into “one utterance = one voice segment”; each segment is a separate file with the speaker and start/end times.
  • The channel must already be open; otherwise the “Channel is not open” error is returned
  • Only one voice recording runs per channel at a time: calling again returns the task_id of the existing task and doesn’t join the channel a second time
  • No client changes needed: the server splits segments automatically by speech and silence, without relying on any state reported by the client
Starting is asynchronous: a successful response means only that the request was accepted; the task becomes in progress after the voice recording gateway joins the channel. Watch task_status in “Get voice recording task details”, or handle the talkrec_task event callback. Request parameters
string
required
Channel (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only) Example: fire
string
Channel title, used only for lists and console display (max length 100) Example: Line 3 repair intercom
string
Task initiator ID. A user ID from your own business, used only for lookup; not validated on the RTC side (max length 100) Example: 1001
string
Task initiator name (max length 100) Example: Alice
Request example:
Response parameters
string
ID of this voice recording task, used to stop the task, query details, and filter voice segments by task
Response example:

Stop voice recording

POST /server/v1/talkrec/stop Authentication: required (see Overview) Stop voice recording. On stop, the server closes every unfinished utterance into a complete voice segment, so the last few segments may appear in the voice segment list only after this call returns. Voice segments already produced are not deleted and can still be queried and played. Request parameters
string
Task ID Example: sxjgwy
string
Channel (required when TaskId is not set) (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only) Example: fire
Request example:
Response parameters data is null Response example:

Get voice recording task details

POST /server/v1/talkrec/detail Authentication: required (see Overview) Query the details of a voice recording task: status, start and end times, and the number and total size of voice segments produced. With task_id it queries by task; with only channel it returns the channel’s unfinished voice recording first, or the most recent one if all have ended; data is null if the channel has never had a voice recording. Use task_status to see how far the task has progressed (0 pending, 1 in progress, 3 ended abnormally, 4 ended normally); on failure, err_desc gives the reason. Request parameters
string
Task ID Example: sxjgwy
string
Channel (required when TaskId is not set) (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only) Example: fire
Request example:
Response parameters
string
Task ID
string
Channel Example: fire
string
Channel title
string
Task initiator ID
string
Task initiator name
integer
Task status: 0 pending, 1 in progress, 3 ended abnormally, 4 ended normally
string
Error description
integer
Task start time, Unix timestamp in seconds Example: 1718194666
integer
Task end time, Unix timestamp in seconds; 0 means not ended
integer
Number of voice segments produced
integer
Total bytes of voice segments
integer
Task creation time, Unix timestamp in seconds Example: 1718194666
integer
Task last-modified time, Unix timestamp in seconds Example: 1718194705
Response example:

List voice segments

POST /server/v1/talkrec/list-record Authentication: required (see Overview) List voice segments with pagination; each item is one utterance. In intercom scenarios a single segment is usually only a few seconds long, and one active channel can produce tens of thousands of segments a day. Always pass task_id or channel to narrow the scope; don’t page through everything without filters. After getting the list, use “Batch get voice segment playback URLs” to fetch this page’s playback URLs in one go, which is much faster than fetching them one by one; keeping each page within 50 items matches the batch endpoint’s limit exactly. Request parameters
string
Voice recording task ID; pass it to view only the segments of one voice recording; empty means no filter Example: sxjgwy
string
Channel; empty means no filter (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only) Example: fire
string
Speaker ID; empty means no filter (max length 100) Example: 1001
integer
Start time, Unix timestamp in seconds, filtered by utterance start time; 0 means no limit Example: 1718194666
integer
End time, Unix timestamp in seconds; 0 means no limit Example: 1718799878
General search
string
Sort order (sortable fields: began_at, duration_ms, vod_size)
integer
Page number, starting from 1 Example: 1
integer
Page size Example: 10
Request example:
Response parameters
string
Voice segment ID, used to get the playback URL
string
ID of the voice recording task it belongs to
string
Channel Example: fire
string
Speaker ID Example: 1001
string
Speaker’s display name Example: Alice
integer
Segment size (bytes)
integer
Segment duration (milliseconds) Example: 5200
integer
Utterance start time, Unix timestamp in seconds Example: 1718194666
integer
Utterance end time, Unix timestamp in seconds Example: 1718194671
string
Audio codec Example: opus
integer
Sample rate Example: 48000
integer
Segment close reason: 0 unknown, 1 normal end (talk button released), 2 split on timeout, 3 user left, 4 task stopped, 5 idle timeout (fallback)
integer
Record creation time, Unix timestamp in seconds Example: 1718194672
Response example:

Get a voice segment’s playback URL

POST /server/v1/talkrec/vod-url Authentication: required (see Overview) Get the playback URL of a single voice segment; it can be played directly with <audio> (Opus/Ogg format). The URL expires (2 hours). Don’t cache it long term or store it in your database; get a new one before each playback. Request parameters
string
required
Voice segment ID, taken from the voice segment list Example: sxjgwy
boolean
Whether to return internal network URLs, for purely internal deployments or dedicated-line access; public network URLs are returned by default
Request example:
Response parameters
string
Voice segment ID
string
Presigned playback URL, valid for 2 hours
integer
Segment size (bytes)
integer
Segment duration (milliseconds)
Response example:

Batch get voice segment playback URLs

POST /server/v1/talkrec/vod-url/batch Authentication: required (see Overview) Get voice segment playback URLs in bulk, so the voice segment list can fetch all URLs on the page at once. Up to 50 IDs per request. Unlike the single-item endpoint, this one doesn’t fail as a whole when one item can’t be fetched—that item’s addr is an empty string (for example, the file has been cleaned up) and the rest are returned as usual. Request parameters
array<string>
required
List of voice segment IDs, up to 50 per request (max length 50) Example: ["sxjgwy","sxjgwz"]
boolean
Whether to return internal network URLs, for purely internal deployments or dedicated-line access; public network URLs are returned by default
Request example:
Response parameters
string
Voice segment ID
string
Presigned playback URL, valid for 2 hours
integer
Segment size (bytes)
integer
Segment duration (milliseconds)
Response example:

Delete a voice segment

POST /server/v1/talkrec/del-record Authentication: required (see Overview) Delete a voice segment. After deletion it no longer appears in the voice segment list and its playback URL can no longer be fetched. The audio file itself is reclaimed asynchronously by a scheduled job on the server and doesn’t affect this endpoint’s response. Request parameters
string
required
Voice segment ID, taken from the voice segment list Example: sxjgwy
Request example:
Response parameters data is null Response example: