Get a short-lived playback link for one session's saved audio
Returns metadata about the saved audio for one bridge session plus a playback_url you can put straight into an <audio src>. Requires the voice:bridge scope.
⛔ THE AUDIO IS THE AGENT-TO-BUSINESS LEG ONLY, AND THAT IS NOT A FOOTNOTE. Recording stops before the consumer is dialed, so the consumer's voice was NEVER CAPTURED and is not in the file. Every response says so twice, in audio_scope, which is always the literal string agent_to_business_only, and in note. DO NOT LABEL THIS "call recording" OR "the call" IN YOUR OWN UI. The consumer on that call never agreed to anything with you or with us, several U.S. states require all-party consent, and an implied-but-false scope is the part that creates liability. If you need a phrase, use "agent-to-business audio".
⛔ playback_url IS NOT AN OBJECT-STORE LINK AND MUST NOT BE TREATED AS A PERMANENT ADDRESS. It points at our host and carries an opaque token bound to your organization, this session and this one recording, valid for playback_ttl_seconds (900, fifteen minutes) from the moment of this call. It is revocable by us and it is not a credential you can store: DO NOT persist it, email it, or write it into a ticket. Re-request this endpoint whenever you need to play the audio again; that is one authenticated call and it is the intended flow. There is no sliding window, a token does not renew itself because you kept listening.
A SESSION WITH NO AUDIO IS A 200, NOT A 404. audio_available: false with playback_url: null means nothing was recorded for that call, which is the ORDINARY case: recording is a per-deployment opt-in and most sessions have none. A 404 means the session id is not one of yours (or does not exist), the two are deliberately not distinguishable, so a 404 never tells you whether some other organization owns that id.
recording_duration_sec IS THE LENGTH OF THE SAVED AUDIO, NOT THE LENGTH OF THE CALL AND NOT THE BILLED INTERVAL. It measures one leg. It is the SAME FIELD, BY THE SAME NAME AND THE SAME TYPE, that GET /voice/bridge and GET /voice/bridge/{id} already publish, so one duration column in your code works across all three. For billing use joined_seconds on /voice/bridge/usage; for wall-clock timings use the timings block on /voice/bridge/{id}. A call can be recorded for 41 seconds and never join anybody.
THIS ENDPOINT IS OFF UNLESS ASKOTTO_BRIDGE_RECORDING_PLAYBACK IS SET ON THE DEPLOYMENT, AND WHILE IT IS OFF IT ANSWERS 404, the same 404 as a session you do not own. That is deliberate: an off feature must not be distinguishable from a call you have no audio for, or the endpoint reports the existence of other people's recordings.
Request
- Base URL: https://corebee.ai/api/v1
- URL: https://corebee.ai/api/v1/voice/bridge/{id}/recording
- Auth: HTTP bearer
Path parameters
Bridge session id (integer).
Response
OK. Audio metadata, and a playback link when audio exists.
Example response
{
"data": {
"recording_duration_sec": 41
}
}Changes
No recorded changes to this operation across all 1 revision of this API.