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
talkrec_task event callback.
Request parameters
string
required
Channel (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only)
Example:
firestring
Channel title, used only for lists and console display (max length 100)
Example:
Line 3 repair intercomstring
Task initiator ID. A user ID from your own business, used only for lookup; not validated on the RTC side (max length 100)
Example:
1001string
Task initiator name (max length 100)
Example:
Alicestring
ID of this voice recording task, used to stop the task, query details, and filter voice segments by task
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:
sxjgwystring
Channel (required when TaskId is not set) (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only)
Example:
firedata 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:
sxjgwystring
Channel (required when TaskId is not set) (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only)
Example:
firestring
Task ID
string
Channel
Example:
firestring
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:
1718194666integer
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:
1718194666integer
Task last-modified time, Unix timestamp in seconds
Example:
1718194705List 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:
sxjgwystring
Channel; empty means no filter (up to 64 bytes; letters, digits, underscores (_), and hyphens (-) only)
Example:
firestring
Speaker ID; empty means no filter (max length 100)
Example:
1001integer
Start time, Unix timestamp in seconds, filtered by utterance start time; 0 means no limit
Example:
1718194666integer
End time, Unix timestamp in seconds; 0 means no limit
Example:
1718799878array<string>
General search
string
Sort order (sortable fields: began_at, duration_ms, vod_size)
integer
Page number, starting from 1
Example:
1integer
Page size
Example:
10string
Voice segment ID, used to get the playback URL
string
ID of the voice recording task it belongs to
string
Channel
Example:
firestring
Speaker ID
Example:
1001string
Speaker’s display name
Example:
Aliceinteger
Segment size (bytes)
integer
Segment duration (milliseconds)
Example:
5200integer
Utterance start time, Unix timestamp in seconds
Example:
1718194666integer
Utterance end time, Unix timestamp in seconds
Example:
1718194671string
Audio codec
Example:
opusinteger
Sample rate
Example:
48000integer
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:
1718194672Get 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:
sxjgwyboolean
Whether to return internal network URLs, for purely internal deployments or dedicated-line access; public network URLs are returned by default
string
Voice segment ID
string
Presigned playback URL, valid for 2 hours
integer
Segment size (bytes)
integer
Segment duration (milliseconds)
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
string
Voice segment ID
string
Presigned playback URL, valid for 2 hours
integer
Segment size (bytes)
integer
Segment duration (milliseconds)
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:
sxjgwydata is null
Response example: