Skip to main content
Quick summary
Suki provides transcripts, note content, and structured data from every ambient session. When your product also needs the source audio, fetch temporary presigned URLs after the session ends.

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.
Ambient session recordings are supported by: Ambient APIs
Suki provides transcripts, clinical notes, and structured data for Ambient sessions. If your workflow also requires access to the source audio, you can retrieve the recording using the Get Ambient session recording API. The API returns a temporary presigned URL for the session recording. Your application can use the URL to play or download the recording in WAV format. Audio retrieval is optional. You do not need to retrieve the recording to:
  • End an Ambient session
  • Retrieve Ambient content
  • Approve a note
  • Save a note to an EHR
Use audio retrieval only when your application needs to provide clinicians or other authorized users with access to the source recording.

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 recordings includes expires_at so 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 includes expires_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.
The recording file stays available for 7 days from the session date. After that window, the API returns 410 and you cannot retrieve new URLs for that session. If your organization needs long-term storage, download the WAV within 7 days and store it in your own system.
  • 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_at on each item in recordings. 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 new presigned_url and the same download mode (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_streamable is false, call the endpoint again with download=true instead of using streaming mode.
  • For multi-chunk sessions, refresh per chunk in recordings and use sequence_number to 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_streamable is false. Request download=true instead.
  • 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.
Suki logs each recording access for compliance and security. Ensure your use meets your organization’s compliance requirements.

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.
Most products only need the Transcript and note content from Load the note. Add source audio when clinicians need to listen to the original conversation or when your workflow requires source audio to be archived.
Use a streaming URL (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.
Add Listen to the note review or audit experience after the Ambient session ends. Avoid placing playback controls next to Start Ambient on the live visit screen, where the recording is still in progress.
Restrict playback and downloads to users who are authorized to access the visit’s audio. Treat recording URLs as protected clinical media and apply the same access controls you use for other sensitive clinical content.
Treat recordings as secondary to the note workflow. Do not make this mandatory for approve, sign, or chart save.

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

Call the recording API with download=false, then stream the WAV URL in your player so clinicians can seek and scrub.

Verify Notes Against Audio

Load the session recording next to the note or transcript UI so clinicians can jump to the relevant part of the visit.

Archive Audio for Compliance

Request the recording with download=true within the 7-day availability window and store the WAV in your own system.

Playback for Uploaded Sessions

After an uploaded session completes, use the same recording API. If you receive a temporary 404, wait for processing and retry.

Multi-Chunk Recordings

Read the recordings array and use sequence_number to play or assemble chunks in order.

Refresh Expired Playback URLs

Watch 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. 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.
1

Show Note Review First

Open note review after Ambient ends and content is available. Let the clinician read the note before offering audio.
2

Show an Optional Listen Control

Place Listen near note review or audit actions. Do not place it next to Start Ambient on the live visit screen.
3

Fetch a Temporary URL on Demand

When the clinician taps Listen, call Get Ambient session recording. Pass the presigned URL to your player. Choose stream vs download with the download query parameter.
4

Refresh If the URL Expires

Watch expires_at. If playback fails because the URL expired, call the recording endpoint again for a fresh URL. See URL validity and refresh.
Presigned URLs expire on the schedule in URL validity and refresh. Do not treat them as permanent chart links. When playback fails or expires_at has passed, call the recording endpoint again for a fresh URL.

Implement Recording API in your application

1

Finish Ambient Capture

End the session and confirm processing as needed. Recording access applies to the ambient session you already captured. See Complete an ambient visit.
2

Fetch Presigned URLs

Call Get Ambient session recording when the clinician opens Listen or your archive job runs. Use the download parameter: omitted or false for streaming (playback), true for full file download.
3

Play or Store in Your Product

Use the temporary URL in your player or archive path. If the response includes multiple items in 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 a recordings array. Each item represents one recording chunk for the session.
array
List of recordings for the session. Each item contains a presigned URL and metadata.
boolean
Whether the returned URLs support streaming with Range requests. If false, use download=true to get a download URL instead.

Example code

When the clinician opens Listen, call GET 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.

Best practices

  • Stream for playback: Use streaming when building a player so users can seek to any part of the recording.
  • Download for archival: Use download=true when you need to store the file long-term within your compliance policy.
  • Handle 404 on uploaded sessions: If you get 404 for a session where audio was uploaded, the recording may still be processing. Wait and retry.
  • Do not retry on 410: When you get 410, the recording is permanently unavailable.
  • Refresh URLs when needed: Request a new URL when expires_at has passed or playback fails.
  • Use access responsibly: All access is logged; ensure your use meets your compliance requirements.

FAQs

For sessions longer than 15 minutes, the streaming URL is valid for the full session length plus 10 minutes. This lets you play the entire recording without the URL expiring mid-playback.
Recordings are returned in WAV format. Use them in standard media players or HTML5 audio elements for playback.
Yes. Some sessions return multiple recordings. Read the recordings array and use sequence_number to play or assemble chunks in order. If is_streamable is false, use download=true instead.
Recordings are available for 7 days from the session date. After that, the recording is no longer accessible. Download within the 7-day window if you need long-term storage.
For sessions where audio was uploaded (not streamed in real time), the recording may still be processing. Wait and retry. If the session is older than 7 days, you will get 410 instead, which means the recording is permanently unavailable.

Next steps

Get Ambient session recording - Request and response fields for presigned URLs. Load the note - Retrieve note content and transcript without source audio. Complete an ambient visit - Finish capture before you fetch recording URLs.
Last modified on August 20, 2026