New to Suki?Consider following our comprehensive Learning path for a structured, step-by-step journey from onboarding to production deployment with progress tracking and time estimates.
- Set up authentication with Suki developer tools
- Choose and integrate your preferred SDK or API
- Create your first ambient session with patient information
- Record and stream audio for at least 1 minute
- Retrieve a fully structured with
Before you begin
To integrate your application with Suki developer tools, you must meet the following requirements:OAuth-compliant authentication system
For secure user management
JWT tokens with consistent user identifiers
For user authentication
Publicly accessible JWKS endpoint
For token validation
ES6 compatible browser
Modern browser support (for Web SDK)
- : Unique identifier provided by Suki that you will use to authenticate our SDKs and APIs.
How authentication works
Suki supports the following public key sharing authentication mechanisms. You will use your own identity provider to issue the token.- Stored Secret - You provide your public key to Suki, and we store it securely in our database as an encrypted file.
- JWKS URL: You host your public keys at a public JSON Web Key Set () endpoint, and Suki fetches them dynamically to verify tokens.
- Okta - You use Okta as your Identity Provider, and Suki obtains the public key from your Okta issuer URL.
- JWT Assertion - You share your public key as a signed JWT that follows the RFC 7523 standard. Suki then verifies this JWT using our public key.
Step 1: Choose your use case and workflow
Select the integration method that best fits your application requirements: Refer to the Choose your workflow to help you decide.Step 2: Get started
Select a workflow below to get started. For ambient workflows, choose Web SDK, Mobile SDK, or Ambient APIs. For form filling workflows, choose the appropriate integration method.- Ambient Workflow
- Form Filling Workflow
Web SDK
Best for: React/JavaScript web applicationsPre-built UI components with automatic state management
Mobile SDK
Best for: Native iOS applicationsNative framework optimized for mobile audio capture
Ambient APIs
Best for: Custom implementationsMaximum flexibility with direct API control
Headless Web SDK and Dictation SDK are additional integration options on Suki for Partners (Beta). Use the quickstarts below for install steps and configuration.
- Web SDK
- Mobile SDK
- Ambient APIs
Initialize SDK
Install
@suki-sdk/core with @suki-sdk/js or @suki-sdk/react. Wrap your app with SukiProvider, create SukiAuthManager with your partner and provider values, then pass authManager into initialize() or init(). For details, see Web SDK Quickstart and Migrating to Web SDK v3.Mount UI
In the same component where you initialized the SDK, mount the
SukiAssistant component with encounter data:Start recording
Click the recording button in the Suki web SDK UI to start capturing the conversation.
Record for at least 1 minute
Record a test conversation. The session should be at least 1 minute long for note generation to occur.
For complete web SDK capabilities, refer to the Web SDK section of the documentation.
Verify success
After completing your first session, you should see:- For Web SDK
- For Mobile SDK
- For Ambient APIs
- The generated clinical note automatically appears in the Suki UI panel
- Sections are organized according to your LOINC configuration
- Transcript is available within the UI
Step 3: Advanced configuration (optional but recommended)
Configure the generated note in many ways. For example, to generate a customized clinical note, refer to the LOINC codes to define the sections you want to generate.Success checklist
Before moving to production, ensure you have successfully completed these steps:Authentication Works
Authentication Works
- Successfully call the
/api/v1/auth/loginendpoint - You receive a valid
suki_tokenin the response - Your JWT token is properly formatted and not expired
- Your JWKS endpoint is publicly accessible
Session Creation Works
Session Creation Works
- Create an ambient session with patient information
- You receive an
ambient_session_idin the response - The session status is valid (not
FAILED)
Audio streaming works
Audio streaming works
- WebSocket connection establishes successfully
- Audio chunks are being sent to Suki
- No connection errors or timeouts occur
- Session duration is at least 1 minute
Content Retrieval Works
Content Retrieval Works
- Fetch session content using the
ambient_session_id - Response includes structured
summaryarray with clinical content - Response includes a complete
transcriptof the conversation - Session status shows
COMPLETED(notSKIPPEDorFAILED)
Integration Quality
Integration Quality
- Generated notes are accurate and clinically relevant
- Transcript content is accurate and complete
- LOINC sections match your requested configuration
- Error handling is implemented for all API calls
Troubleshooting
- Common issues
- Getting help
Authentication Failed - 401 Unauthorized
Authentication Failed - 401 Unauthorized
Session Creation Failed
Session Creation Failed
Problem: Cannot create ambient session or receive error responseSolution:
- Confirm you have a valid
suki_tokenfrom the login endpoint - Use
sdp_suki_tokenheader (notAuthorization: Bearer) for all API calls - Verify
ambient_session_idandencounter_idare at most 36 characters () when you set them, where applicable. - Check that
multilingualis a boolean value (true/false) - Verify your partner account has the necessary permissions for ambient sessions
WebSocket Connection Failed
WebSocket Connection Failed
Problem: WebSocket connection fails or immediately disconnectsSolution:
- Verify you’re using the correct WebSocket URL:
wss://sdp.suki-stage.com/ws/stream - For browser clients, ensure you’re using
Sec-WebSocket-Protocolheader with format:SukiAmbientAuth,<ambient_session_id>,<sdp_suki_token> - For non-browser clients, include both
sdp_suki_tokenandambient_session_idas separate headers in the WebSocket upgrade request - Check network connectivity and firewall settings allow WebSocket connections
- Ensure your
suki_tokenhasn’t expired (valid for 1 hour)
Session status shows SKIPPED
Session status shows SKIPPED
Problem: Session completes but status is
SKIPPED and no note is generatedSolution:- Ensure your session duration is at least 1 minute long
- Verify audio is being properly captured and streamed
- Check that audio chunks contain actual speech (not silence)
- Confirm WebSocket connection remained stable throughout the session
A
SKIPPED status is expected for sessions shorter than 1 minute or with no audible speech. This is not a system error.Audio Not Processing
Audio Not Processing
Problem: Audio streams but transcript is empty or note not generatedSolution:
- Verify audio format is correct (PCM, 16-bit, 16kHz mono recommended)
- Ensure audio chunks are the correct size (100ms chunks recommended)
- Check that you end the stream with an AUDIO message whose
datais Base64 of bytesEOF(valueRU9G), then close the WebSocket and call the session end REST endpoint - Verify microphone permissions are granted in your application
- Test with a known working audio sample first
Content Retrieval Returns Empty or Incomplete Data
Content Retrieval Returns Empty or Incomplete Data
Problem: Session completes but content endpoint returns no data or incomplete noteSolution:
- Wait at least 5-10 seconds after ending the session before retrieving content
- Check the session
status- it should beCOMPLETED, notPROCESSING - Verify you’re using the correct
ambient_session_idin the URL path - Use
sdp_suki_tokenheader (notAuthorization: Bearer) - Ensure your
suki_tokenis still valid (valid for 1 hour) - Check if session was
SKIPPEDdue to short duration (less than 1 minute) - Verify you called the
/endendpoint to trigger note generation