Kraken Subaccounts API

Subaccount creation and inter-account transfers

Operations 4

Each operation below carries the questions people ask an LLM about it and the instructions they give an agent to run it. Generated by API Evangelist overlay

POST /private/CreateSubaccount Create Subaccount #
POST /private/AccountTransfer Account Transfer #
POST /0/private/CreateSubaccount Create a subaccount · Kraken Create Subaccount #
Ask an LLM
“How do I add a subaccount under my master account?”
“What do I need to provide to create a new subaccount?”
Tell an agent
Create a subaccount named {username} with email {email}.
Set up subaccount {username} for {email}.
POST /0/private/AccountTransfer Move funds between master and subaccount · Kraken Account Transfer #
Ask an LLM
“How do I move funds from my master account to a subaccount?”
“Can I transfer an asset back from a subaccount to the master?”
Tell an agent
Transfer {amount} {asset} from {from} to {to}.
Move {amount} {asset} from master account {from} to subaccount {to}.

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/kraken:kraken-subaccounts-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

kraken-subaccounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Kraken Subaccounts API
  x-refined-note:
  - x-generated-from differs across the merged source definitions and was not carried
  - x-last-validated differs across the merged source definitions and was not carried
  version: '1.0'
  description: 'Operations tagged Subaccounts across 2 of this provider''s published API definitions: kraken-openapi.json, kraken-spot-rest-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.kraken.com/0
  description: Production Server
- url: https://api.kraken.com
  description: Kraken Spot REST production endpoint
- url: https://colo-london.vip-api.kraken.com
  description: Kraken Spot REST colocation endpoint (London VIP)
tags:
- name: Subaccounts
  description: Subaccounts are currently only available to institutional clients. Please contact your Account Manager for more details.
paths:
  /private/CreateSubaccount:
    post:
      summary: Create Subaccount
      description: 'Create a trading subaccount. **Note:** `CreateSubaccount` must be called using an API key from the master account.


        **API Key Permissions Required:** `Funds permissions - Withdraw`'
      tags:
      - Subaccounts
      operationId: createSubaccount
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - nonce
              - email
              - username
              properties:
                nonce:
                  $ref: '#/components/schemas/nonce'
                username:
                  type: string
                  description: Username for the subaccount
                email:
                  type: string
                  description: Email address for the subaccount
              example:
                nonce: 1695828271
                username: abc123
                email: abc123@gmail.com
      responses:
        '200':
          description: Subaccount created.
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: boolean
                    description: Whether subaccount creation was successful or not.
                  error:
                    $ref: '#/components/schemas/error'
                example:
                  error: []
                  result: true
      security:
      - API-Key: []
        API-Sign: []
    servers:
    - url: https://api.kraken.com/0
      description: Production Server
  /private/AccountTransfer:
    post:
      summary: Account Transfer
      description: 'Transfer funds to and from master and subaccounts. **Note:** `AccountTransfer` must be called using an API key from the master account.


        **API Key Permissions Required:** `Funds permissions - Withdraw`'
      tags:
      - Subaccounts
      operationId: accountTransfer
      requestBody:
        required: true
        content:
          application/json:
            schema:
              required:
              - nonce
              - asset
              - amount
              - from
              - to
              properties:
                nonce:
                  $ref: '#/components/schemas/nonce'
                asset:
                  type: string
                  description: Asset being transferred
                asset_class:
                  description: Specify the asset class of the asset being transferred
                  type: string
                  enum:
                  - currency
                  - tokenized_asset
                  default: currency
                amount:
                  type: string
                  description: Amount of asset to transfer
                from:
                  type: string
                  description: Public account ID of the source account (Example ABCD 1234 EFGH 5678)
                to:
                  type: string
                  description: Public account ID of the destination account (Example ABCD 1234 EFGH 5678)
              example:
                nonce: 1695828271
                asset: XBT
                from: ABCD 1234 EFGH 5678
                to: IJKL 0987 MNOP 6543
                amount: '2.54'
      responses:
        '200':
          description: Funds transferred between accounts.
          content:
            application/json:
              schema:
                properties:
                  result:
                    type: object
                    properties:
                      transfer_id:
                        type: string
                        description: Transfer ID
                      status:
                        type: string
                        description: Transfer status, either `"pending"` or `"complete"`
                  error:
                    $ref: '#/components/schemas/error'
                example:
                  error: []
                  result:
                    transfer_id: TOH3AS2-LPCWR8-JDQGEU
                    status: complete
      security:
      - API-Key: []
        API-Sign: []
    servers:
    - url: https://api.kraken.com/0
      description: Production Server
  /0/private/CreateSubaccount:
    post:
      operationId: post0PrivateCreateSubaccount
      summary: Kraken Create Subaccount
      description: Creates a new subaccount under the master account (institutional / pro feature).
      tags:
      - Subaccounts
      security:
      - kraken_signature: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/CreateSubaccountRequest'
            examples:
              createSubaccountRequestExample:
                summary: Default createSubaccount request
                x-microcks-default: true
                value:
                  nonce: 1717000000000
                  otp: '123456'
                  username: subaccount-01
                  email: trader@example.com
      responses:
        '200':
          description: Subaccount creation result
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateSubaccountResponse'
              examples:
                createSubaccount200Example:
                  summary: Default createSubaccount 200 response
                  x-microcks-default: true
                  value:
                    error: []
                    result: true
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      x-operation-id-source: normalized
      x-operation-id-original: createSubaccount
    servers:
    - url: https://api.kraken.com
      description: Kraken Spot REST production endpoint
    - url: https://colo-london.vip-api.kraken.com
      description: Kraken Spot REST colocation endpoint (London VIP)
  /0/private/AccountTransfer:
    post:
      operationId: post0PrivateAccountTransfer
      summary: Kraken Account Transfer
      description: Transfers an asset between the master account and a subaccount.
      tags:
      - Subaccounts
      security:
      - kraken_signature: []
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AccountTransferRequest'
            examples:
              accountTransferRequestExample:
                summary: Default accountTransfer request
                x-microcks-default: true
                value:
                  nonce: 1717000000000
                  otp: '123456'
                  asset: XBT
                  amount: '0.01'
                  from: string
                  to: string
      responses:
        '200':
          description: Transfer acknowledgement
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AccountTransferResponse'
              examples:
                accountTransfer200Example:
                  summary: Default accountTransfer 200 response
                  x-microcks-default: true
                  value:
                    error: []
                    result: {}
      x-microcks-operation:
        delay: 0
        dispatcher: FALLBACK
      x-operation-id-source: normalized
      x-operation-id-original: accountTransfer
    servers:
    - url: https://api.kraken.com
      description: Kraken Spot REST production endpoint
    - url: https://colo-london.vip-api.kraken.com
      description: Kraken Spot REST colocation endpoint (London VIP)
components:
  schemas:
    nonce:
      description: Nonce used in construction of `API-Sign` header
      type: integer
      format: int64
    error:
      type: array
      items:
        description: Kraken API error
        type: string
        example: EGeneral:Invalid arguments
    AccountTransferResponse:
      allOf:
      - $ref: '#/components/schemas/BaseEnvelope'
      - type: object
        properties:
          result:
            type: object
            properties:
              transfer_id:
                type: string
                example: OQCLML-BW3P3-BUCMWZ
              status:
                type: string
                example: string
            example: {}
    AccountTransferRequest:
      allOf:
      - $ref: '#/components/schemas/NoncedRequest'
      - type: object
        required:
        - asset
        - amount
        - from
        - to
        properties:
          asset:
            type: string
            example: XBT
          amount:
            type: string
            example: '0.01'
          from:
            type: string
            description: Master account email or subaccount username.
            example: string
          to:
            type: string
            example: string
    NoncedRequest:
      type: object
      description: All private requests include an incrementing nonce. Optionally an OTP for two-factor-protected keys.
      required:
      - nonce
      properties:
        nonce:
          type: integer
          format: int64
          example: 1717000000000
        otp:
          type: string
          description: Two-factor password / OTP if the key is OTP-protected.
          example: '123456'
    BaseEnvelope:
      type: object
      properties:
        error:
          type: array
          items:
            type: string
          description: Array of error strings; empty on success.
          example: []
        result:
          description: Endpoint-specific result object.
          example: string
      required:
      - error
    CreateSubaccountResponse:
      allOf:
      - $ref: '#/components/schemas/BaseEnvelope'
      - type: object
        properties:
          result:
            type: boolean
            example: true
    CreateSubaccountRequest:
      allOf:
      - $ref: '#/components/schemas/NoncedRequest'
      - type: object
        required:
        - username
        - email
        properties:
          username:
            type: string
            example: subaccount-01
          email:
            type: string
            format: email
            example: trader@example.com
  securitySchemes:
    API-Key:
      type: apiKey
      description: The "API-Key" header should contain your API key.
      name: API-Key
      in: header
    API-Sign:
      type: apiKey
      description: Authenticated requests should be signed with the "API-Sign" header, using a signature generated with your private key, nonce, encoded payload, and URI path.
      name: API-Sign
      in: header
    API-Nonce:
      type: apiKey
      description: The "API-Nonce" header should contain an always-increasing 64-bit integer, most commonly a Unix timestamp in milliseconds. Each request must use a nonce greater than the nonce of the previous request signed with the same API key.
      name: API-Nonce
      in: header
    API-OTP:
      type: apiKey
      description: The "API-OTP" header should contain your two-factor authentication one-time password. Required only if 2FA is configured for the API key.
      name: API-OTP
      in: header
    kraken_signature:
      type: apiKey
      in: header
      name: API-Key
      description: 'Kraken signs private REST requests with two headers: `API-Key` (your public API key) and `API-Sign` (HMAC-SHA512 of the URI path plus SHA256(nonce + POST body), keyed by the base64-decoded secret). All private endpoints must include an incrementing `nonce` in the POST body.'
x-refined-from:
- kraken-openapi.json
- kraken-spot-rest-openapi.yml
x-tagGroups:
- name: Public Endpoints
  tags:
  - Market Data
  - Transparency
- name: Authenticated Endpoints
  tags:
  - Account Data
  - Trading
  - funding-beta
  - Funding
  - Subaccounts
  - Earn