useAmbient, then optionally set which microphone to use, how often audio data is sent to your app, and what to do if another product ends the session.
Configuration
Configure the hook with these parameters:Pass the unique session identifier you received from the
useAmbient hook. This links the recording to the session you created.Optional:
MediaDeviceInfo.deviceId for a microphone. When set, the recording uses that microphone. When omitted or empty, the browser default microphone is used. Your app owns device enumeration and selection UI. Refer to Select a microphone.Optional: Provide a callback function that receives audio chunks as they become available. The SDK calls this function whenever a batch of audio data is ready. Use this to draw real-time waveforms, visualizers, or other audio visualizations in your UI.
Optional: Called after another Suki product cancels or ends the live session. The SDK already stops the microphone, deletes local audio metadata, and resets the stream. Update your UI only. Do not call
cancel(), submit(), cancelRemote(), or endRemote() for this direction.What it returns
The hook returns control methods and status information you use to manage recording and update your UI.Actions (methods)
Use these methods to control the recording workflow:Call this to begin recording audio. Applies
config.audio.deviceId when capture starts. Call this when the user clicks a “Start Recording” button.Call this to pause recording temporarily. Resume later with
resume(). Call this when the user clicks a “Pause” button.Call this to resume a paused recording. Applies the current
config.audio.deviceId when capture starts again. Call this when the user clicks a “Resume” button.Call this to stop recording and cancel the session. Call this when the user clicks a “Cancel” or “Discard” button.
Call this to finish recording and submit the session for note generation. Call this when the user clicks a “Finish” or “Submit” button.
Call this to send patient, provider, and visit metadata to Suki. The function sends context information that helps Suki generate more accurate clinical notes. Call this after
start() but before submit() for best results. On success the promise resolves with no return value. On failure it throws.Cancels a remote ambient session that is blocking create in another modality. Pass the blocking session id from a
sessionAlreadyExists create error, not the hook’s local ambientSessionId.Ends a remote ambient session that is blocking create in another modality so captured audio can be processed. Pass the blocking session id from a
sessionAlreadyExists create error.State (data)
Use these values to control your UI and show the current session state:Server-side session lifecycle. Common values:
"created"(ready to start)"submitted"(recording finished, processing)"completed"(note generated), and"cancelled"
null or undefined before the store has session state. For the full union, refer to AmbientSessionStatus. Do not use this field alone for recording versus paused UI.Whether the session is online or offline.
null until the SDK reports a session type.Session context
ThesetSessionContext method lets you send patient, provider, and visit information to Suki. This context helps Suki’s AI generate more accurate and relevant clinical notes.
What is session context?
Session context is metadata about the patient visit that improves note quality. Include:- Patient details: Date of birth, sex, optional
patient_id, and optional structuredname. - Provider information: Specialty, role.
- Visit information: Visit type, encounter type, reason for visit, chief complaint.
- Clinical sections: LOINC codes for specific sections you want in the note.
- Diagnoses: Pre-existing or current diagnoses with codes and descriptions.
When to use it
CallsetSessionContext after calling start() but before calling submit(). Providing context early helps the AI understand the clinical scenario and generate better notes.
Session context structure
- An empty
nameobject is dropped and is not sent. - Name values are passed through as provided. The Headless Web SDK does not force normalization.
- Web SDK handoff: If you capture audio in Headless but the clinician reviews the note in the Web SDK, send
patient_idand structurednamewithsetSessionContext. Suki uses those fields to fill in the patient header in the Web SDK. See Seed patient context for Web SDK handoff.
Success and errors
On success,setSessionContext resolves with no return value (Promise<void>). PlatformClient.setSessionContext throws AmbientSessionError with code: "ContextUpdateFailed". setSessionContext from useAmbientSession throws that failure as a string. See the Error handling guide for details.