Are you a Suki partner?To use any Suki API or SDK, you must be a Suki partner. Contact the partnership team to begin the onboarding process. They help you set up your authentication system and get started with the Suki APIs and SDKs.
Already a Suki partner and looking for how to authenticate providers and users against the Suki REST APIs (register and login for Suki Token)? Refer to the Provider authentication guide for more details.
- Recommended: Use OAuth 2.0 / OpenID Connect so your identity provider signs users in and issues a JWT Partner Token.
- Share your public keys with Suki (a JWKS URL is recommended) so Suki can verify that token.
- Pass the Partner Token (JWT) to Suki when you initialize an SDK or call Partner APIs.
- Receive access from Suki after verification, then call Ambient, Form filling, Dictation, and related modalities.
Prerequisites
Before you begin, ensure you have:Authentication System
Recommended: OAuth 2.0 / OpenID Connect that issues a JWT (ID token) as the Partner Token. Custom systems that mint RS256 JWTs are also supported.
User Identifier
JWTs that include at least one consistent user identifier claim (like
sub or email).Public Key Endpoint
A public URL where Suki can fetch your IDP public keys to verify Partner Tokens.
Completed Onboarding
Completed Partner onboarding and registered your JWKS endpoint URL (or other public-key method) with Suki.
How authentication works
Suki uses a federated authentication model called token exchange. Rather than maintaining its own user accounts and passwords, Suki trusts the identity provider you already use. When your identity provider confirms a user’s identity, it issues a signed token that Suki validates and exchanges for access. This means you manage user accounts and login in one place, and Suki verifies each user through the token you send. Mental model for authentication:- A user signs in to your application using your identity provider.
- Your system generates a JWT for that user (known as the Partner Token).
- You send the generated Partner Token (JWT) to Suki when you initialize an SDK, or as
partner_tokenon Partner API auth calls. - Suki verifies the token using your public keys and grants access.
Key concepts
Identity provider (IDP)
An Identity Provider is the system that handles user authentication for your application. When users sign in, your IDP verifies their credentials and confirms their identity. This can be a third-party service like Okta or Azure AD, or a system you built yourself to handle user authentication.Partner Token (JWT)
The Partner Token (JWT) is a JWT that your identity provider creates after successfully authenticating a user. You pass this token to Suki’s SDKs or APIs to prove the user’s identity. In SDK configuration this is often namedpartnerToken. In Partner API request bodies it is partner_token.
Requirements for the Partner Token:
- Must be signed using the RS256 algorithm (RSA Signature with SHA-256)
- Must be issued by your identity provider after user authentication
- Must include user identifier claims that Suki can verify
exp- Token expiration time (Unix timestamp). The token must not be expired when you send it to Suki.iss- Token issuer (usually your identity provider’s URL or identifier).aud- Token audience (who the token is intended for).- User Identifier - A claim that uniquely identifies the user, such as
sub,email, or a custom claim likeuserId.
During onboarding, you must inform Suki which identifier field your tokens use. If your tokens have multiple identifiers, specify which one is the primary identifier.
Recommended path: OAuth 2.0 with a JWT and JWKS URL
For Partner authentication, use OAuth 2.0 or OpenID Connect so your identity provider signs users in and issues a JWT (usually an ID token). Pass that JWT to Suki as the Partner Token. Register a public JWKS URL during onboarding so Suki can fetch your IDP public keys and verify the token signature.OAuth 2.0 / OpenID Connect
Use OAuth 2.0 or OpenID Connect so your identity provider (for example Okta or Azure AD) handles user login and issues an ID token (a JWT). Pass that ID token to Suki as the Partner Token (partnerToken in SDKs, partner_token on Partner API auth calls).
Why this is secure:
- Your identity provider handles authentication
- Neither Suki nor your app handles user passwords
- Tokens are cryptographically signed and verified
JWKS URL
A JWKS (JSON Web Key Set) URL is a public HTTPS endpoint where Suki fetches your identity provider public keys. Suki uses those keys to verify that your Partner Token was signed by your IDP and has not been tampered with. During onboarding, register this JWKS URL with Suki. When you send a Partner Token, Suki uses your Partner ID to look up that URL and verify the token signature. Example partner JWKS URL:https://your-idp.example.com/.well-known/jwks.json
Example JWKS response:
JSON
How to find your JWKS URL?
If you use Okta, Auth0, AWS Cognito, Azure AD, or Google Identity, they provide this URL automatically. Where to find it?- Check your identity provider’s developer console → application settings → JWKS or OpenID Connect configuration
- Often listed in OpenID discovery at:
https://your-idp-domain/.well-known/openid-configuration(look forjwks_uri) - If you can’t find it, contact your identity provider or watch this Tutorial video
Other public key sharing methods
If you cannot host a JWKS URL, Suki also supports these methods during onboarding. Prefer JWKS URL with OAuth 2.0 whenever you can.Using a custom authentication system
If you do not use OAuth 2.0, you can still mint JWTs with your own authentication system. Those tokens must meet the Partner Token requirements (RS256, required claims, standard JWT format), and you must still share public keys with Suki (preferably via a JWKS URL).- Signed with the RS256 algorithm (RSA Signature with SHA-256)
- Include all required claims
- Properly formatted as a standard JWT
When you pass a Partner Token to Suki, we use your Partner ID to find your registered public-key method (usually a JWKS URL) and verify the token’s signature. We trust that you have properly authenticated the user.
Partner authentication flow steps
For the diagram and a detailed walkthrough of the Partner authentication flow, refer to the Partner authentication flow guide. For Partner API register and login, refer to Provider authentication.User Signs In
A user signs in to your application using your identity provider. After successful authentication, your IDP issues a JWT (Partner Token).
Send the Partner Token to Suki
SDKs: Your application initializes the Suki SDK with the Partner Token and your Partner ID. The SDK sends these to Suki’s backend for validation.Partner APIs: Your application calls Register (once per new user if needed) and Login with
partner_id and partner_token (and provider_id when your partner type requires it).Token Validation
Suki validates your token:
- Uses your Partner ID to find your partner configuration
- Fetches your public keys from your registered JWKS endpoint (or your configured public-key method)
- Verifies the token’s digital signature using those keys
- Confirms the token has not expired and contains required claims
Receive Suki Token
If validation succeeds, Suki returns a Suki-specific token.SDKs: The SDK stores this token securely, includes it in API requests, and refreshes it when needed. You do not manage the token yourself.Partner APIs: Use the returned
suki_token as the sdp_suki_token header on subsequent REST and WebSocket calls. The token is valid for 1 hour. Call Login again with a valid Partner Token to refresh it.Ready to Use
Your application can now use Suki’s APIs and SDKs for Ambient, Form filling, Dictation, and related workflows.
Troubleshooting
Common authentication issues and how to fix them:Missing User Identifier
Missing User Identifier
Error: 400 Bad Request - “Missing required identifier claim”Fix:
- Check that your Partner Token includes the user identifier claim you specified during onboarding
- Ensure the identifier value is not empty or null
- If your token structure changed, contact Suki support to update your configuration
Invalid or Expired Token
Invalid or Expired Token
Error: 401 Unauthorized - “Token validation failed”Fix:
- Verify your application generates valid JWTs
- Check the
expclaim to ensure the token hasn’t expired - Confirm all required claims (
exp,iss,aud, user identifier) are present - Use jwt.io to decode and inspect your token
JWKS Endpoint Not Accessible
JWKS Endpoint Not Accessible
Error: 502 Bad Gateway or timeoutFix:
- Ensure your JWKS endpoint URL is publicly accessible over HTTPS
- Check firewall rules or IP restrictions that might block Suki’s servers
- Test the URL in a browser or with
curlto confirm it’s reachable
Wrong Partner ID
Wrong Partner ID
Error: 400 Bad Request - “Unknown partner identifier”Fix:
- Verify the Partner ID you’re using matches the one Suki provided during onboarding
- Check that your JWKS URL in Suki’s system matches your actual endpoint URL
Malformed Token
Malformed Token
Error: 400 Bad Request - “Malformed token”Fix:
- Ensure the token follows standard JWT format:
header.payload.signature - Verify the token is properly Base64URL encoded
- Check that the
algin the header matches your signing algorithm (should be RS256)
Key Rotation Issues
Key Rotation Issues
Error: Authentication fails after previously workingFix:
- If you rotated your signing keys, update your JWKS endpoint with the new public keys
- Verify the
kid(Key ID) in your JWT header matches a key in your JWKS endpoint - Ensure old keys remain available during the transition period
