How identities map in your app
Your application owns clinician authentication. Suki does not provide a separate clinician login for your users or receive their clinic passwords. The clinician signs in through your existing identity provider (IdP). After authentication, your backend uses the Partner Token issued by your IdP to authenticate with Suki. Depending on the authentication mode configured for your integration, your backend may also need to provide aprovider_id configured during onboarding.
After successful Suki Login, your application uses the Suki Token (sdp_suki_token) for subsequent authenticated REST and WebSocket calls.
Authentication flow
The overall flow is: The exact fields sent to Register and Login depend on the authentication mode configured for your integration. Refer to Standard, Bearer, and Single Auth Token authentication guides for more details.What you are building
Your authentication flow connects the signed-in clinician in your app to authenticated Suki API and SDK calls: Your clinician login → Partner Token → Suki Register / Login → Suki Token → Authenticated Suki API calls This flow applies when a clinician registers or logs in and when they later use authenticated Ambient, Dictation, or Form filling functionality.How to wire authentication into your product
How the identities relate
These identifiers have different purposes. Do not treat them as interchangeable.Authentication modes
The values your backend sends depend on the authentication mode configured for your integration.Keep provider mapping in your backend
When your authentication mode requiresprovider_id, use the stable clinician identifier agreed during onboarding. That value is your system’s provider identifier (for example the ID from your EHR), not a separate Suki-issued Doctor ID.
Keep the same provider_id for a clinician across Register, Login, and later sdp_provider_id headers when your mode requires them.
For example:
For Standard authentication, Suki derives clinician identity from the Partner Token, so you do not send provider_id on Register or Login. See Standard partner authentication.
Your backend should also handle the Partner Token and Suki Token according to your application’s authentication architecture. The Suki Token returned by Login is used for subsequent authenticated Suki requests.
For a working example of this authentication split, see the Ambient API starter.
How authentication works
The diagram and steps below show the SDK token-exchange path (Web SDK, Mobile SDK, and similar). For Partner REST APIs, your backend calls Register and Login, then sendssdp_suki_token on later requests. See How identities map in your app for that path.
Flow diagram:
Below is a diagram of the authentication flow for Partner Token exchange with Suki.
Flow steps
These steps follow the SDK path. Partner API integrations use Register and Login from your backend instead of SDK initialization. See Provider authentication.User Signs In
partnerToken).Identity Provider Issues a Partner Token JWT
partnerToken (Partner Token). It must be a standard JWT that Suki can verify with your public keys.Token requirements:- Signed with the RS256 algorithm.
- Issued by your identity provider after user authentication.
- Includes user identifier claims that Suki can verify.
- Includes
exp,iss,aud, and a user identifier claim such assub,email, or a custom claim you registered during onboarding.
Your App Initializes the Suki SDK with the Partner Token
partnerToken and your partnerId. The SDK sends these values to Suki’s backend for validation. You use your existing authentication system for the user; Suki trusts that system through token exchange rather than creating separate user accounts.SDK Sends the Partner Token to the Suki Backend
Suki Backend Validates the Token Using Your JWKS Endpoint
- Uses your
partnerIdto find your partner configuration. - Fetches your public keys from your registered JWKS endpoint (or another public-key sharing method you configured during onboarding).
- Verifies the token’s digital signature with those keys.
- Confirms the token has not expired and contains the required claims.
SDK Stores the Token Internally
SDK Ready for Use
User Requests a Suki Feature and the App Calls an SDK Method
SDK Makes an Authorized Request to the Suki Backend
Suki Backend Returns a Result; SDK Returns It to the App