fireblocks Exchange Accounts API

The Exchange Accounts API from fireblocks — 7 operation(s) for exchange accounts.

Operations 8

GET /exchange_accounts List exchange accounts #
POST /exchange_accounts Add an Exchange Account #
GET /exchange_accounts/paged List connected exchange accounts #
GET /exchange_accounts/{exchangeAccountId} Get a specific exchange account #
POST /exchange_accounts/{exchangeAccountId}/internal_transfer Internal transfer for exchange accounts #
POST /exchange_accounts/{exchangeAccountId}/convert Convert exchange account funds #
GET /exchange_accounts/{exchangeAccountId}/{assetId} Get an asset for an exchange account #
GET /exchange_accounts/credentials_public_key Get public key to encrypt exchange credentials #

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/fireblocks-exchange-accounts-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 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

fireblocks-exchange-accounts-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Fireblocks Blockchains and Assets Approval Requests Exchange Accounts API
  description: 'Fireblocks provides a suite of applications to manage digital asset operations and a complete development platform to build your business on the blockchain.


    - Visit our website for more information: [Fireblocks Website](https://fireblocks.com)

    - Visit our developer docs: [Fireblocks DevPortal](https://developers.fireblocks.com)

    '
  version: 1.8.0
  contact:
    email: developers@fireblocks.com
servers:
- url: https://api.fireblocks.io/v1
  description: Fireblocks Production Environment Base URL
- url: https://sandbox-api.fireblocks.io/v1
  description: Fireblocks Sandbox Environment Base URL
security: []
tags:
- name: Exchange Accounts
paths:
  /exchange_accounts:
    get:
      x-internal: true
      deprecated: true
      summary: List exchange accounts
      description: 'DEPRECATED - Please use the `/exchange_accounts/paged` endpoint.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Exchange Accounts
      x-readme:
        code-samples:
        - language: javascript
          code: const exchangeAccounts = await fireblocks.getExchangeAccounts();
          name: Fireblocks SDK Javascript example
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExchangeAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccounts
      x-codeSamples:
      - lang: python
        label: Python
        source: exchangeAccounts = fireblocks.get_exchange_accounts()
      - lang: javascript
        label: Javascript
        source: const exchangeAccounts = await fireblocks.getExchangeAccounts();
    post:
      summary: Add an Exchange Account
      operationId: addExchangeAccount
      description: "Add an exchange account to exchanges. \n\nNote: This endpoint currently only supports the following exchanges `INDEPENDENT_RESERVE`,`BIT`, `BITHUMB`, `BITSO`, `CRYPTOCOM`, `BYBIT_V2`, `WHITEBIT`, `HITBTC`, `GEMINI`, `HUOBI`, `GATEIO`, `COINHAKO`, `BULLISH`, `BITGET`, and `LUNO`\n\nTo add an exchange account, please use the following [guide](https://developers.fireblocks.com/docs/add-an-exchange-account).\n"
      tags:
      - Exchange Accounts
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<AddExchangeAccountResponse>> = fireblocks.exchangeAccounts.addExchangeAccount(exchangeAccountsApiAddExchangeAccountRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<AddExchangeAccountResponse>> response = fireblocks.exchangeAccounts().addExchangeAccount(addExchangeAccountRequest, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.exchange_accounts.add_exchange_account(add_exchange_account_request, idempotency_key);
          name: Fireblocks SDK Python example
      parameters:
      - $ref: '#/components/parameters/X-Idempotency-Key'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddExchangeAccountRequest'
      responses:
        '201':
          description: An Exchange Account identifier object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AddExchangeAccountResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<AddExchangeAccountResponse>> = fireblocks.exchangeAccounts.addExchangeAccount(exchangeAccountsApiAddExchangeAccountRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<AddExchangeAccountResponse>> response = fireblocks.exchangeAccounts().addExchangeAccount(addExchangeAccountRequest, idempotencyKey);
      - lang: Python
        source: response = fireblocks.exchange_accounts.add_exchange_account(add_exchange_account_request, idempotency_key);
  /exchange_accounts/paged:
    get:
      operationId: getPagedExchangeAccounts
      summary: List connected exchange accounts
      description: 'Returns a list of the connected exchange accounts in your workspace.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Exchange Accounts
      x-readme:
        code-samples:
        - language: javascript
          code: const exchangeAccounts = await fireblocks.getExchangeAccountsPaged();
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<GetPagedExchangeAccountsResponse>> = fireblocks.exchangeAccounts.getPagedExchangeAccounts(exchangeAccountsApiGetPagedExchangeAccountsRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<List<ExchangeAccountsPaged>>> response = fireblocks.exchangeAccounts().getPagedExchangeAccounts(limit, before, after);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.exchange_accounts.get_paged_exchange_accounts(limit, before, after);
          name: Fireblocks SDK Python example
      parameters:
      - in: query
        name: before
        required: false
        schema:
          type: string
      - in: query
        name: after
        required: false
        schema:
          type: string
      - in: query
        name: limit
        description: number of exchanges per page
        required: true
        schema:
          type: number
          minimum: 1
          maximum: 5
          default: 3
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetPagedExchangeAccountsResponse'
        default:
          $ref: '#/components/responses/Error'
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<GetPagedExchangeAccountsResponse>> = fireblocks.exchangeAccounts.getPagedExchangeAccounts(exchangeAccountsApiGetPagedExchangeAccountsRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<List<ExchangeAccountsPaged>>> response = fireblocks.exchangeAccounts().getPagedExchangeAccounts(limit, before, after);
      - lang: Python
        source: response = fireblocks.exchange_accounts.get_paged_exchange_accounts(limit, before, after);
  /exchange_accounts/{exchangeAccountId}:
    get:
      summary: Get a specific exchange account
      description: 'Returns an exchange account by ID.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Exchange Accounts
      x-readme:
        code-samples:
        - language: javascript
          code: const exchnageAccount = await fireblocks.get_exchange_account(exchangeAccountId);
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<ExchangeAccount>> = fireblocks.exchangeAccounts.getExchangeAccount(exchangeAccountsApiGetExchangeAccountRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<ExchangeAccount>> response = fireblocks.exchangeAccounts().getExchangeAccount(exchangeAccountId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.exchange_accounts.get_exchange_account(exchange_account_id);
          name: Fireblocks SDK Python example
      parameters:
      - in: path
        name: exchangeAccountId
        required: true
        description: The ID of the exchange account to return
        schema:
          type: string
      responses:
        '200':
          description: An ExchangeAccount object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeAccount'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccount
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<ExchangeAccount>> = fireblocks.exchangeAccounts.getExchangeAccount(exchangeAccountsApiGetExchangeAccountRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<ExchangeAccount>> response = fireblocks.exchangeAccounts().getExchangeAccount(exchangeAccountId);
      - lang: Python
        source: response = fireblocks.exchange_accounts.get_exchange_account(exchange_account_id);
  /exchange_accounts/{exchangeAccountId}/internal_transfer:
    post:
      summary: Internal transfer for exchange accounts
      description: 'Transfers funds between trading accounts under the same exchange account.

        Learn more about Fireblocks Exchange Connectivity in the following [guide](https://developers.fireblocks.com/docs/connect-to-exchanges-and-fiat-providers).

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Exchange Accounts
      parameters:
      - in: path
        name: exchangeAccountId
        required: true
        description: The ID of the exchange account to return
        schema:
          type: string
      - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '201':
          description: Transfer succeeded
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InternalTransferResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateInternalTransferRequest'
      operationId: internalTransfer
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<InternalTransferResponse>> = fireblocks.exchangeAccounts.internalTransfer(exchangeAccountsApiInternalTransferRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<InternalTransferResponse>> response = fireblocks.exchangeAccounts().internalTransfer(exchangeAccountId, createInternalTransferRequest, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.exchange_accounts.internal_transfer(exchange_account_id, create_internal_transfer_request, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<InternalTransferResponse>> = fireblocks.exchangeAccounts.internalTransfer(exchangeAccountsApiInternalTransferRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<InternalTransferResponse>> response = fireblocks.exchangeAccounts().internalTransfer(exchangeAccountId, createInternalTransferRequest, idempotencyKey);
      - lang: Python
        source: response = fireblocks.exchange_accounts.internal_transfer(exchange_account_id, create_internal_transfer_request, idempotency_key);
  /exchange_accounts/{exchangeAccountId}/convert:
    post:
      summary: Convert exchange account funds
      description: 'Convert exchange account funds from the source asset to the destination asset. Coinbase (USD to USDC, USDC to USD) and Bitso (MXN to USD) are supported conversions.

        Learn more about Fireblocks Exchange Connectivity in the following [guide](https://developers.fireblocks.com/docs/connect-to-exchanges-and-fiat-providers).

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Exchange Accounts
      parameters:
      - in: path
        name: exchangeAccountId
        required: true
        description: The ID of the exchange account. Please make sure the exchange supports conversions. To find the ID of your exchange account, use GET/exchange_accounts.
        schema:
          type: string
      - $ref: '#/components/parameters/X-Idempotency-Key'
      responses:
        '200':
          description: Conversion successful
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ConvertAssetsResponse'
        default:
          $ref: '#/components/responses/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ConvertAssetsRequest'
      operationId: convertAssets
      x-readme:
        code-samples:
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<ConvertAssetsResponse>> = fireblocks.exchangeAccounts.convertAssets(exchangeAccountsApiConvertAssetsRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<ConvertAssetsResponse>> response = fireblocks.exchangeAccounts().convertAssets(exchangeAccountId, convertAssetsRequest, idempotencyKey);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.exchange_accounts.convert_assets(exchange_account_id, convert_assets_request, idempotency_key);
          name: Fireblocks SDK Python example
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<ConvertAssetsResponse>> = fireblocks.exchangeAccounts.convertAssets(exchangeAccountsApiConvertAssetsRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<ConvertAssetsResponse>> response = fireblocks.exchangeAccounts().convertAssets(exchangeAccountId, convertAssetsRequest, idempotencyKey);
      - lang: Python
        source: response = fireblocks.exchange_accounts.convert_assets(exchange_account_id, convert_assets_request, idempotency_key);
  /exchange_accounts/{exchangeAccountId}/{assetId}:
    get:
      summary: Get an asset for an exchange account
      description: 'Returns an asset for an exchange account.

        </br>Endpoint Permission: Admin, Non-Signing Admin.'
      tags:
      - Exchange Accounts
      x-readme:
        code-samples:
        - language: javascript
          code: const exchangeAsset = await fireblocks.getExchangeAsset(exchangeAccountId, assetId);
          name: Fireblocks SDK Javascript example
        - language: typescript
          code: 'const response: Promise<FireblocksResponse<ExchangeAsset>> = fireblocks.exchangeAccounts.getExchangeAccountAsset(exchangeAccountsApiGetExchangeAccountAssetRequest);'
          name: Fireblocks SDK TypeScript example
        - language: java
          code: CompletableFuture<ApiResponse<ExchangeAsset>> response = fireblocks.exchangeAccounts().getExchangeAccountAsset(exchangeAccountId, assetId);
          name: Fireblocks SDK Java example
        - language: python
          code: response = fireblocks.exchange_accounts.get_exchange_account_asset(exchange_account_id, asset_id);
          name: Fireblocks SDK Python example
      parameters:
      - in: path
        name: exchangeAccountId
        required: true
        description: The ID of the exchange account to return
        schema:
          type: string
      - in: path
        name: assetId
        required: true
        description: The ID of the asset to return
        schema:
          type: string
      responses:
        '200':
          description: An ExchangeAccountAsset object
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExchangeAsset'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccountAsset
      x-codeSamples:
      - lang: TypeScript
        source: 'const response: Promise<FireblocksResponse<ExchangeAsset>> = fireblocks.exchangeAccounts.getExchangeAccountAsset(exchangeAccountsApiGetExchangeAccountAssetRequest);'
      - lang: Java
        source: CompletableFuture<ApiResponse<ExchangeAsset>> response = fireblocks.exchangeAccounts().getExchangeAccountAsset(exchangeAccountId, assetId);
      - lang: Python
        source: response = fireblocks.exchange_accounts.get_exchange_account_asset(exchange_account_id, asset_id);
  /exchange_accounts/credentials_public_key:
    get:
      x-internal: true
      summary: Get public key to encrypt exchange credentials
      description: Return public key
      tags:
      - Exchange Accounts
      responses:
        '200':
          description: public key as string
          headers:
            X-Request-ID:
              $ref: '#/components/headers/X-Request-ID'
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetExchangeAccountsCredentialsPublicKeyResponse'
        default:
          $ref: '#/components/responses/Error'
      operationId: getExchangeAccountsCredentialsPublicKey
components:
  schemas:
    GetPagedExchangeAccountsResponse:
      type: array
      items:
        $ref: '#/components/schemas/ExchangeAccountsPaged'
    GetExchangeAccountsResponse:
      type: array
      items:
        $ref: '#/components/schemas/ExchangeAccount'
    GetExchangeAccountsCredentialsPublicKeyResponse:
      type: object
      properties:
        publicKey:
          type: string
          description: Public key string
        tenantId:
          type: string
          description: Tenant identifier
      required:
      - publicKey
      - tenantId
    CreateInternalTransferRequest:
      type: object
      properties:
        asset:
          type: string
        amount:
          type: string
        sourceType:
          $ref: '#/components/schemas/TradingAccountType'
        destType:
          $ref: '#/components/schemas/TradingAccountType'
      required:
      - asset
      - amount
      - sourceType
      - destType
    AddExchangeAccountResponse:
      type: object
      properties:
        id:
          description: Exchange account's identifier
          type: string
        name:
          description: Display name of the exchange account
          type: string
        exchangeType:
          $ref: '#/components/schemas/ExchangeType'
    ExchangeType:
      description: Exchange account's type
      type: string
      enum:
      - INDEPENDENT_RESERVE
      - ENCLAVE_MARKETS
      - BIT
      - COINFLEX
      - KUCOIN
      - PXS
      - LIQUID
      - BITHUMB
      - BITFINEX
      - BITSO
      - BITSTAMP
      - KRAKEN
      - KRAKENINTL
      - BINANCE
      - BINANCEUS
      - CRYPTOCOM
      - BYBIT_V2
      - COINBASEPRO
      - COINBASEPRIME
      - COINBASEINTERNATIONAL
      - WHITEBIT
      - COINBASEEXCHANGE
      - KORBIT
      - HITBTC
      - GEMINI
      - CIRCLE
      - BITMEX
      - HUOBI
      - DERIBIT
      - OKCOIN_V5
      - OKEX
      - COINMETRO
      - GATEIO
      - SCRYPT
      - COINHAKO
      - LIGHTBIT
      - BULLISH
      - CANVAS_CONNECT
      - BITGET
      - LUNO
      - BIT_GENERA
      - TRANSFERO
    ConvertAssetsResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the conversion was successful
      required:
      - success
    ExchangeAsset:
      type: object
      properties:
        id:
          type: string
        balance:
          type: string
        lockedAmount:
          type: string
        total:
          type: string
        available:
          type: string
        credit:
          type: string
    InternalTransferResponse:
      type: object
      properties:
        success:
          type: boolean
          description: Indicates whether the transfer was successful
        id:
          type:
          - string
          - 'null'
          description: The transaction ID of the internal transfer
          example: 993c89c5-6405-47e5-9407-1a77f0de801f
      required:
      - success
    ConvertAssetsRequest:
      type: object
      properties:
        srcAsset:
          type: string
          description: Name of the source asset (must be in a currency that is supported for conversions in the selected exchange type that corresponds to your exchange ID)
        destAsset:
          type: string
          description: Name of the destination asset (must be in a currency that is supported for conversions in the selected exchange type that corresponds to your exchange ID)
        amount:
          type: number
          description: The amount to transfer (in the currency of the source asset)
      required:
      - srcAsset
      - destAsset
      - amount
    ExchangeAccount:
      type: object
      properties:
        id:
          type: string
        type:
          $ref: '#/components/schemas/ExchangeType'
        name:
          type: string
          description: Display name of the exchange account
        status:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeAsset'
        success:
          type: boolean
          description: Did succeed in retrieve balance data
        tradingAccounts:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeTradingAccount'
        isSubaccount:
          description: True if the account is a subaccount in an exchange
          type: boolean
        mainAccountId:
          description: if the account is a sub-account, the ID of the main account
          type: string
    TradingAccountType:
      type: string
      enum:
      - COIN_FUTURES
      - COIN_MARGINED_SWAP
      - EXCHANGE
      - FUNDING
      - FUNDABLE
      - FUTURES
      - FUTURES_CROSS
      - MARGIN
      - MARGIN_CROSS
      - OPTIONS
      - SPOT
      - USDT_MARGINED_SWAP_CROSS
      - USDT_FUTURES
      - UNIFIED
    ExchangeAccountsPaged:
      type: object
      properties:
        ExchangeAccount:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeAccount'
        paging:
          type: object
          properties:
            after:
              type: string
              description: Query value to the after page
            before:
              type: string
              description: Query value to the before page
        prevUrl:
          type: string
        nextUrl:
          type: string
    AddExchangeAccountRequest:
      type: object
      properties:
        exchangeType:
          $ref: '#/components/schemas/ExchangeType'
        name:
          description: Display name of the exchange account
          type: string
        creds:
          description: Encrypted credentials
          type: string
        key:
          description: Api key of the exchange
          type: string
        mainAccountId:
          description: Optional - main account id of the exchange
          type: string
      required:
      - exchangeType
      - name
    ExchangeTradingAccount:
      type: object
      properties:
        type:
          type: string
        name:
          type: string
        assets:
          type: array
          items:
            $ref: '#/components/schemas/ExchangeAsset'
  parameters:
    X-Idempotency-Key:
      name: Idempotency-Key
      in: header
      description: A unique identifier for the request. If the request is sent multiple times with the same idempotency key, the server will return the same response as the first request. The idempotency key is valid for 24 hours.
      required: false
      schema:
        type: string
        example: some-unique-id
  responses:
    Error:
      description: Error Response
      headers:
        X-Request-ID:
          $ref: '#/components/headers/X-Request-ID'
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorSchema'
  securitySchemes:
    bearerTokenAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
    ApiKeyAuth:
      type: apiKey
      in: header
      name: X-API-Key