Turnkey Wallets API

HD wallets and wallet accounts.

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/turnkey-wallets-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

turnkey-wallets-api-openapi.yml Raw ↑
openapi: 3.0.1
info:
  title: Turnkey Organizations Wallets API
  description: 'Turnkey is secure wallet infrastructure: an API-first key-management and signing platform that generates private keys and signs payloads inside verifiable secure enclaves (TEEs). The public API is an RPC-style REST API under https://api.turnkey.com/public/v1 split into two families - read-only `query` endpoints and state-changing `submit` activity endpoints. Every request is an HTTP POST carrying an `X-Stamp` (or `X-Stamp-Webauthn`) header containing a digital signature over the exact JSON POST body. The stamp is verified by Turnkey''s secure enclaves before the request is processed and checked against the organization''s policy engine.'
  termsOfService: https://www.turnkey.com/legal/terms
  contact:
    name: Turnkey Support
    url: https://docs.turnkey.com
  version: '1.0'
servers:
- url: https://api.turnkey.com
security:
- apiStamp: []
tags:
- name: Wallets
  description: HD wallets and wallet accounts.
paths:
  /public/v1/submit/create_wallet:
    post:
      operationId: createWallet
      tags:
      - Wallets
      summary: Create a wallet
      description: Creates an HD wallet and derives the requested wallet accounts. Submitted as an activity of type ACTIVITY_TYPE_CREATE_WALLET.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletRequest'
      responses:
        '200':
          description: Activity accepted/completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityResponse'
  /public/v1/submit/create_wallet_accounts:
    post:
      operationId: createWalletAccounts
      tags:
      - Wallets
      summary: Create wallet accounts
      description: Derives additional wallet accounts from an existing wallet. Activity type ACTIVITY_TYPE_CREATE_WALLET_ACCOUNTS.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateWalletAccountsRequest'
      responses:
        '200':
          description: Activity accepted/completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityResponse'
  /public/v1/submit/export_wallet:
    post:
      operationId: exportWallet
      tags:
      - Wallets
      summary: Export a wallet
      description: Exports a wallet's mnemonic encrypted to a caller-supplied target public key. Activity type ACTIVITY_TYPE_EXPORT_WALLET.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitActivityEnvelope'
      responses:
        '200':
          description: Activity accepted/completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityResponse'
  /public/v1/submit/import_wallet:
    post:
      operationId: importWallet
      tags:
      - Wallets
      summary: Import a wallet
      description: Imports an externally generated mnemonic into a wallet. Activity type ACTIVITY_TYPE_IMPORT_WALLET.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SubmitActivityEnvelope'
      responses:
        '200':
          description: Activity accepted/completed.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ActivityResponse'
  /public/v1/query/list_wallets:
    post:
      operationId: listWallets
      tags:
      - Wallets
      summary: List wallets
      description: Lists the wallets in an organization.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/OrganizationScopedQuery'
      responses:
        '200':
          description: List of wallets.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListWalletsResponse'
  /public/v1/query/get_wallet:
    post:
      operationId: getWallet
      tags:
      - Wallets
      summary: Get a wallet
      description: Fetches a single wallet by id.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GetWalletRequest'
      responses:
        '200':
          description: Wallet.
          content:
            application/json:
              schema:
                type: object
  /public/v1/query/list_wallet_accounts:
    post:
      operationId: listWalletAccounts
      tags:
      - Wallets
      summary: List wallet accounts
      description: Lists the derived accounts of a wallet.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ListWalletAccountsRequest'
      responses:
        '200':
          description: List of wallet accounts.
          content:
            application/json:
              schema:
                type: object
components:
  schemas:
    ListWalletsResponse:
      type: object
      properties:
        wallets:
          type: array
          items:
            type: object
            properties:
              walletId:
                type: string
              walletName:
                type: string
              createdAt:
                type: object
              updatedAt:
                type: object
    WalletAccountParams:
      type: object
      required:
      - curve
      - pathFormat
      - path
      - addressFormat
      properties:
        curve:
          type: string
          enum:
          - CURVE_SECP256K1
          - CURVE_ED25519
          - CURVE_P256
        pathFormat:
          type: string
          enum:
          - PATH_FORMAT_BIP32
        path:
          type: string
          example: m/44'/60'/0'/0/0
        addressFormat:
          type: string
          example: ADDRESS_FORMAT_ETHEREUM
    CreateWalletParams:
      type: object
      required:
      - walletName
      - accounts
      properties:
        walletName:
          type: string
        accounts:
          type: array
          items:
            $ref: '#/components/schemas/WalletAccountParams'
        mnemonicLength:
          type: integer
          enum:
          - 12
          - 15
          - 18
          - 21
          - 24
          default: 12
    ActivityResponse:
      type: object
      description: Standard activity envelope returned by submit and query endpoints.
      properties:
        activity:
          type: object
          properties:
            id:
              type: string
            organizationId:
              type: string
            status:
              type: string
              enum:
              - ACTIVITY_STATUS_CREATED
              - ACTIVITY_STATUS_PENDING
              - ACTIVITY_STATUS_COMPLETED
              - ACTIVITY_STATUS_FAILED
              - ACTIVITY_STATUS_CONSENSUS_NEEDED
              - ACTIVITY_STATUS_REJECTED
            type:
              type: string
            result:
              type: object
              description: Activity-specific result, e.g. createWalletResult {walletId, addresses[]} or signTransactionResult {signedTransaction} or signRawPayloadResult {r, s, v}.
    CreateWalletAccountsRequest:
      allOf:
      - $ref: '#/components/schemas/SubmitActivityEnvelope'
      - type: object
        properties:
          parameters:
            type: object
            required:
            - walletId
            - accounts
            properties:
              walletId:
                type: string
              accounts:
                type: array
                items:
                  $ref: '#/components/schemas/WalletAccountParams'
    GetWalletRequest:
      type: object
      required:
      - organizationId
      - walletId
      properties:
        organizationId:
          type: string
        walletId:
          type: string
    ListWalletAccountsRequest:
      type: object
      required:
      - organizationId
      - walletId
      properties:
        organizationId:
          type: string
        walletId:
          type: string
        paginationOptions:
          type: object
    CreateWalletRequest:
      allOf:
      - $ref: '#/components/schemas/SubmitActivityEnvelope'
      - type: object
        properties:
          type:
            type: string
            enum:
            - ACTIVITY_TYPE_CREATE_WALLET
          parameters:
            $ref: '#/components/schemas/CreateWalletParams'
    OrganizationScopedQuery:
      type: object
      required:
      - organizationId
      properties:
        organizationId:
          type: string
    SubmitActivityEnvelope:
      type: object
      description: Common envelope for all submit (mutation) activities. The `type` selects the activity and `parameters` carries the activity-specific body.
      required:
      - type
      - timestampMs
      - organizationId
      - parameters
      properties:
        type:
          type: string
          description: The ACTIVITY_TYPE_* discriminator for this activity.
          example: ACTIVITY_TYPE_CREATE_WALLET
        timestampMs:
          type: string
          description: Client timestamp in milliseconds, replay-protected.
          example: '1746736509954'
        organizationId:
          type: string
          description: The organization or sub-organization id the activity targets.
        parameters:
          type: object
          description: Activity-specific parameters.
  securitySchemes:
    apiStamp:
      type: apiKey
      in: header
      name: X-Stamp
      description: Base64URL-encoded JSON stamp `{publicKey, signature, scheme}` where `signature` is a DER-encoded, hex-encoded signature over the exact JSON POST body produced by the registered API key. `scheme` is one of SIGNATURE_SCHEME_TK_API_P256, SIGNATURE_SCHEME_TK_API_SECP256K1, SIGNATURE_SCHEME_TK_API_ED25519, or SIGNATURE_SCHEME_TK_API_SECP256K1_EIP191. Passkey-stamped requests use the alternate `X-Stamp-Webauthn` header carrying a WebAuthn assertion `{credentialId, authenticatorData, clientDataJson, signature}` (plain JSON, not base64URL-encoded) over a SHA256 hash of the POST body.
    webauthnStamp:
      type: apiKey
      in: header
      name: X-Stamp-Webauthn
      description: Plain-JSON WebAuthn assertion stamp for passkey-authenticated requests.