Overview
It exposes a ready-made API client class which manages the process of constructing requests to the Turnkey API and authenticating them with a valid API key. Furthermore, it exposes API proxies that forward requests from your application’s client that need to be signed by parent organizations API key. Use the@turnkey/sdk-server package to handle
server-side interactions for applications that interact with the Turnkey API.
Installation
Initializing
Parameters
TurnkeySDKServerConfig
required
An object containing configuration settings for the Server Client.
string
required
The root organization that requests will be made from unless otherwise specified
string
required
The base URL that API requests will be sent to (use
https://api.turnkey.com when making requests to Turnkey’s API)
string
The API Private Key to sign requests with (this will normally be the API Private Key to your root
organization)
string
The API Public Key associated with the configured API Private Key above
Creating clients
Calls to Turnkey’s API must be signed with a valid credential (often referred to in the docs as stamping) from the user initiating the API call. When using the Server SDK, the user initiating the API call is normally your root organization, and the API call is authenticated with the API keypair you create on the Turnkey dashboard.apiClient()
The apiClient method returns an instance of the TurnkeyApiClient which will sign requests with
the injected apiPrivateKey, and apiPublicKey credentials.
Creating API proxies
There are certain actions that are initiated by users, but require the activity to be signed by the root organization itself. Examples of this include the initial creation of the usersubOrganization or sending an email to a user with a login credential as part of an emailAuth
flow.
These can be implemented in your backend by creating an apiClient and handling requests from your
browser application at different routes, but we have also provided a convenience method for doing
this by having allowing a single apiProxy to handle requests at a single route and automatically
sign specific user actions with the root organization’s credentials.
expressProxyHandler()
TheexpressProxyHandler() method creates a proxy handler designed as a middleware for Express
applications. It provides an API endpoint that forwards requests to the Turnkey API server.
2. nextProxyHandler()
ThenextProxyHandler() method creates a proxy handler designed as a middleware for Next.js
applications. It provides an API endpoint that forwards requests to the Turnkey API server.
TurnkeyServerClient
The@turnkey/sdk-server exposes NextJS Server Actions. These server actions can be used to
facilitate implementing common authentication flows.
sendOtp()
Initiate an OTP authentication flow for either an EMAIL or SMS.
Parameters
SendOtpRequest
required
An object containing the parameters to initiate an
EMAIL or SMS OTP authentication flow.string
required
The ID of the sub organization for the given request.
string
required
The type of OTP request, either
EMAIL or SMS.string
required
The contact information (email or phone number) where the OTP will be sent.
string
required
The public key or other identifier used for rate limiting and logging.
string
Use to customize the SMS message.
EmailCustomization
Use to customize the OTP email content.
string
Provide a custom email address which will be used as the sender.
number
Optionally specify the OTP length.
boolean
Optionally specify whether to use alphanumeric codes. Defaults to true.
verifyOtp()
Verify the OTP Code sent to the user via EMAIL or SMS.
Parameters
VerifyOtpRequest
required
An object containing the parameters to verify an OTP authentication attempt.
string
required
The ID returned by
sendOtp() representing the OTP attempt.string
required
The OTP code entered by the user.
number
Optional. The session lifetime in seconds. Defaults to 900 seconds (15 minutes).
createOauthSession()
Complete an OAuth authentication flow after obtaining an OIDC token from the OAuth provider. This
creates a Turnkey session bound to the provided public key.
Parameters
CreateOauthSessionRequest
required
An object containing the parameters to create a Turnkey session via OIDC.
string
required
The ID of the sub organization for the authenticated user.
string
required
The OIDC token received from the third-party provider.
string
required
The public key to bind the session to (used for stamping requests).
number
Optional. Session lifetime in seconds. Defaults to 900 seconds (15 minutes).
sendCredential()
Send a login credential to a user’s email address.
Parameters
InitEmailAuthRequest
required
An object containing the parameters to send a login credential via email.
string
required
The email address provided by the user.
string
required
The public key of the target user.
string
required
The ID of the sub organization for the given request.
string
The name of the API Key.
string
IP Address, iframePublicKey, or other unique identifier used for rate limiting.
number
Specify the length of the session in seconds. Defaults to 900 seconds or 15 minutes.
boolean
Invalidate all pre-existing sessions. Defaults to
false.EmailCustomization
An option to customize the email.
string
Provide a custom email address which will be used as the sender of the email.