Hibachi Capital API

Authenticated capital movement: balance, deposit info, withdraw, transfer

OpenAPI Specification

hibachi-capital-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Hibachi Capital API
  version: 1.0.0
  description: REST API for the Hibachi stablecoin-native perpetual futures and FX exchange. Provides public market data plus authenticated account, trading, and capital (deposit/withdraw/transfer) operations. Most endpoints require an API key in the Authorization header; order, withdrawal, and transfer operations additionally require a cryptographic signature (ECDSA for trustless accounts, HMAC for exchange-managed accounts). Converted faithfully from Hibachi's published public Postman collection.
  contact:
    name: Hibachi
    url: https://docs.hibachi.xyz/
  x-apievangelist-source: https://api-doc.hibachi.xyz/
servers:
- url: https://api.hibachi.xyz
  description: Account, trading and capital API (production)
- url: https://data-api.hibachi.xyz
  description: Market data API (production)
tags:
- name: Capital
  description: 'Authenticated capital movement: balance, deposit info, withdraw, transfer'
paths:
  /capital/balance:
    get:
      operationId: getCapitalBalance
      summary: /capital/balance
      tags:
      - Capital
      description: 'Usage Get the balance of your account. The returned balance is your net equity which includes unrealized PnL. Required Request Parameter: accountId: The account ID can be found on the UI details page of each API Key. Your Account ID will not be generated until your first deposit'
      parameters:
      - name: accountId
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                balance: '1998766.543274'
        '400':
          description: Bad request
        '401':
          description: Unauthorized - missing or invalid API key
      security:
      - ApiKeyAuth: []
  /capital/history:
    get:
      operationId: getCapitalHistory
      summary: /capital/history
      tags:
      - Capital
      description: 'Usage Get the deposit and withdraw history of your account. It will return most recent up to 100 deposit and 100 withdraw. Required Request Parameter: accountId : The account ID can be found on the UI details page of each API Key. Your Account ID will not be generated until your first deposit; this ID is required for a lot of endpoints'
      parameters:
      - name: accountId
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                transactions:
                - assetId: 1
                  blockNumber: 0
                  id: 10
                  quantity: '20.000000'
                  status: completed
                  timestamp: 1728510232
                  transactionHash: '0x0000000000000000000000000000000000000000000000000000000000000000'
                  transactionType: deposit
                - assetId: 1
                  id: 3
                  quantity: '3.061224'
                  status: completed
                  timestamp: 1728510702
                  transactionType: withdrawal
                  withdrawalAddress: '0x0000000000000000000000000000000000000000'
                - assetId: 1
                  id: 13
                  quantity: '11.997367'
                  srcAccountId: 134
                  srcAddress: '0x0000000000000000000000000000000000000000'
                  status: completed
                  timestamp: 1728510867
                  transactionType: transfer-in
                - assetId: 1
                  id: 7
                  quantity: '10.000000'
                  receivingAccountId: 134
                  receivingAddress: '0x0000000000000000000000000000000000000000'
                  status: completed
                  timestamp: 1728510375
                  transactionType: transfer-out
        '400':
          description: Bad request
        '401':
          description: Unauthorized - missing or invalid API key
      security:
      - ApiKeyAuth: []
  /capital/withdraw:
    post:
      operationId: submitWithdraw
      summary: /capital/withdraw
      tags:
      - Capital
      description: 'Usage Submit a withdraw request. Signing Use below field to sign the message and pass it in to signature field (65 bytes). Refer to the Signing section for more context assetId (4 bytes) quantity (8 bytes): should be no more than maximalWithdraw returned by /trade/account/info endpoint, otherwise it will be rejected. maxFees (8 bytes): should be at least returned by /market/exchange-info endpoint, otherwise it will be rejected. withdrawalAddress (20 bytes) Request Body Payload Required Fields accountId coin withdrawAddress quantity signature NOTE : Self Claim Option for trustless account: You can replace withdrawalAddress with selfWithdrawal , but you will need to follow our ABI to make direct contract interaction for claim the withdraw. Currently, the only coin we support is USDT .'
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              accountId: 140
              coin: USDT
              withdrawAddress: '0000000000000000000000000000000000000000'
              network: arbitrum
              quantity: '2.0113592'
              maxFees: '0.0113592'
              signature: '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example: {}
        '400':
          description: Bad request
        '401':
          description: Unauthorized - missing or invalid API key
      security:
      - ApiKeyAuth: []
  /capital/transfer:
    post:
      operationId: submitTransfer
      summary: /capital/transfer
      tags:
      - Capital
      description: Usage Submit a withdraw request. Signing Use below field to sign the message and pass it in to signature field (65 bytes). Refer to the Signing section for more context nonce (8 bytes) assetId (4 bytes) quantity (8 bytes) dstPublicKey (20 bytes) maxFeesPercent (8 bytes), should be at least returned value at /market/exchange-info endpoint, otherwise, it will be rejected. Required Request Body accountId coin fees nonce quantity receivingAddress signature Currently, the only coin we support is USDT .
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
            example:
              accountId: 140
              coin: USDT
              fees: '0'
              nonce: 1728515344533
              quantity: '1'
              dstPublicKey: '00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
              signature: '0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example: {}
        '400':
          description: Bad request
        '401':
          description: Unauthorized - missing or invalid API key
      security:
      - ApiKeyAuth: []
  /capital/deposit-info:
    get:
      operationId: getDepositInfo
      summary: /capital/deposit-info
      tags:
      - Capital
      description: 'Usage Get deposit address for a given account. Sending funds to this address allows for Required Request Parameter: ** publicKey: **The public key of the account'
      parameters:
      - name: accountId
        in: query
        required: true
        schema:
          type: string
      - name: publicKey
        in: query
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                type: object
              example:
                depositAddressEvm: '0x0000000000000000000000000000000000000000'
        '400':
          description: Bad request
        '401':
          description: Unauthorized - missing or invalid API key
      security:
      - ApiKeyAuth: []
components:
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: Authorization
      description: API key identifying the account. Required for all endpoints except public /market and /exchange endpoints. This key does NOT sign requests; order/withdraw/transfer payloads must also carry a signature generated with your ECDSA private key (trustless accounts) or HMAC secret (exchange-managed accounts).