Use the Recording API to offer listen-back or downloading capabilities for ambient session generated audio after the visit is complete using temporary presigned URLs.
- End an Ambient session
- Retrieve Ambient content
- Approve a note
- Save a note to an EHR
When to add listen-back or downloading capabilities to your application
Integrate Recording API into your application’s note review flow when your organization requires it to help clinicians:- Review a section of the conversation when the generated note does not look right.
- Verify what was said without leaving the patient chart.
- Support an existing audit or compliance workflow that requires access to the source recording.
- Meet organizational requirements or service-level agreements that require access to recorded audio.
What your application needs to handle
If you add Recording API to your product, your application should handle:- Listen-back controls: Add a listen or playback action button where clinicians review the note or visit. Keep this separate from the live recording experience.
- Recording URL retrieval: Retrieve the recording URL using the Get Ambient session recording API when the audio is available.
- Temporary URL handling: Presigned URLs expire after a short time. Each item in
recordingsincludesexpires_atso your application knows when the URL is no longer valid. When the URL expires or playback fails, call Get Ambient session recording again for a new URL. See URL validity and refresh for expiry times and refresh rules. - Access control: Restrict access for downloading or listening to the recording according to your application’s authorization model and the user’s access level.
URL validity and refresh
Each presigned URL is valid for a limited time. The Get Ambient session recording response includesexpires_at (Unix timestamp) on every item in recordings. Use it to refresh before playback fails, or to recover when a player request returns an error.
Recommended flow for integration
- Call Get Ambient session recording API asynchronously when the clinician opens your listen-back or downloading capabilities action button or when your archive job runs, not long before, and cache the URL for later.
- Watch
expires_aton each item inrecordings. Request a new URL before it passes, or immediately when playback or download fails. - When a presigned URL expires, call the recording endpoint again with the same
ambient_session_id. Use the newpresigned_urland the samedownloadmode (stream or full file) you used before. - On 404, wait and retry. The recording may still be processing (common for uploaded audio).
- On 410, stop retrying. The session is past the 7-day retention window.
- If
is_streamableisfalse, call the endpoint again withdownload=trueinstead of using streaming mode. - For multi-chunk sessions, refresh per chunk in
recordingsand usesequence_numberto keep playback order.
Wrong behavior
- Do not save presigned URLs as permanent chart links, EHR fields, or shared URLs. They expire and will break for other users.
- Do not treat 404 the same as 410. 404 can be temporary; 410 means the recording is gone for good.
- Do not keep retrying the recording API after 410. No new URL will be issued for that session.
- Do not use streaming URLs when
is_streamableisfalse. Requestdownload=trueinstead. - Do not block approve, sign, or chart save on a successful recording fetch. Audio listen-back is optional.
- Do not assume the presigned URL outlives the recording file. Even a fresh URL only works while the session is within the 7-day window.
What you need to decide before you build
Before building a listen-back or recording download feature, consider whether your workflow actually requires access to the source audio. For most chart review workflows, transcripts and note content are sufficient. Add source audio when clinicians need to listen to the original visit recording or when your organization needs to retain the recording as a WAV file for an approved workflow.Do You Need Audio or Only the Transcript?
Do You Need Audio or Only the Transcript?
Stream the Recording or Download the File
Stream the Recording or Download the File
download omitted or false) when your application plays the recording in an audio player. Use download=true when your application needs to retrieve the complete WAV file, such as for an approved archival workflow.Where Should Playback Appear
Where Should Playback Appear
Who Can Access the Recording
Who Can Access the Recording
Common use cases
Design session audio access around whether your application needs in-app playback, note verification, or longer-term storage. Request a temporary recording URL, then stream or download the WAV file before the presigned URL expires.In-App Visit Playback
download=false, then stream the WAV URL in your player so clinicians can seek and scrub.Verify Notes Against Audio
Archive Audio for Compliance
download=true within the 7-day availability window and store the WAV in your own system.Playback for Uploaded Sessions
Multi-Chunk Recordings
recordings array and use sequence_number to play or assemble chunks in order.Refresh Expired Playback URLs
expires_at. When the URL expires mid-playback, call the recording endpoint again for a fresh URL.How recordings fit the visit
Recording access runs parallel to note retrieval. After the ambient session ends and processing completes, your application can fetch presigned URLs while the clinician reviews the note. Approve, sign, and save to the EHR do not depend on playback.Recommended UI patterns
Place Listen on the same screen where the clinician reviews the generated note or runs an audit. Keep playback separate from the live Ambient recorder.Show Note Review First
Show an Optional Listen Control
Fetch a Temporary URL on Demand
download query parameter.Refresh If the URL Expires
expires_at. If playback fails because the URL expired, call the recording endpoint again for a fresh URL. See URL validity and refresh.Implement Recording API in your application
Finish Ambient Capture
Fetch Presigned URLs
download parameter: omitted or false for streaming (playback), true for full file download.Play or Store in Your Product
recordings, use sequence_number to play or assemble chunks in order. If is_streamable is false, request URLs with download=true. Refresh the URL if it expires.Response structure
When the request succeeds, the API returns arecordings array. Each item represents one recording chunk for the session.
false, use download=true to get a download URL instead.Example code
When the clinician opens Listen, callGET https://sdp.suki.ai/api/v1/ambient/session/{ambient_session_id}/recording with your Partner Token headers. Pass the presigned_url from the response to your player. The examples below request streaming URLs by default (download omitted). Add ?download=true when you need the full WAV file.
- TypeScript
- Python
Best practices
FAQs
What Is the Difference Between Streaming and Download
What Is the Difference Between Streaming and Download
Why Does the Streaming URL Last Longer for Long Sessions
Why Does the Streaming URL Last Longer for Long Sessions
What Audio Format Is Returned
What Audio Format Is Returned
Can a Session Have Multiple Recordings
Can a Session Have Multiple Recordings
recordings array and use sequence_number to play or assemble chunks in order. If is_streamable is false, use download=true instead.How Long Are Recordings Available
How Long Are Recordings Available
What If I Get 404 When Requesting a Recording
What If I Get 404 When Requesting a Recording