Skip to main content



The @turnkey/http package is a fully-typed lower-level HTTP client for developers integrating with Turnkey.


To get started install the @turnkey/http client.

npm i @turnkey/http


Create a new client for use in your JavaScript/Typescript applications.

You can initialize a new TurnkeyClient using the TurnkeyClient constructor. The TurnkeyClient serves as your entry point to interact with the Turnkey API.



An object containing configuration settings for the client.


The base URL for the Turnkey API. Note: An error Missing base URL. Please verify env vars. will be thrown if a value is not provided.


An instance of a stamper class (e.g. ApiKeyStamper) used to create signatures for authenticating API requests.

Currently Turnkey provides 3 stampers:

  • applications signing requests with Passkeys or webauthn devices should use @turnkey/webauthn-stamper
  • applications signing requests with API keys should use @turnkey/api-key-stamper
  • applications that need to sign requests within an iframe, particularly when handling sensitive operations like Recovery and Auth, or Key or Wallet Export, should use the @turnkey/iframe-stamper.

You can also implement the TStamper interface yourself. For more information on implementing a custom stamper checkout the API Design docs.



type THttpConfig = {
baseUrl: string;


interface TStamper {
stamp: (input: string) => Promise<TStamp>;


import { TurnkeyClient } from "@turnkey/http"
import { ApiKeyStamper } from "@turnkey/api-key-stamper"

// Following best practices, define parameters in your .env file
const baseUrl = process.env.TURNKEY_BASE_URL || ""
const apiPublicKey = process.env.TURNKEY_API_PUBLIC_KEY
const apiPrivateKey = process.env.TURNKEY_API_PRIVATE_KEY

// Initialize the API key stamper
const stamper = new ApiKeyStamper({ apiPublicKey, apiPrivateKey})

// Initialize the Turnkey client and then you're ready to use the Turnkey client! 🎉
const client = new TurnkeyClient({ baseUrl }, stamper)