---
title: HashKey API Integration on Truto
slug: hashkey
category: Default
canonical: "https://truto.one/integrations/detail/hashkey/"
---

# HashKey API Integration on Truto



**Category:** Default  
**Status:** Generally available

## MCP-ready AI tools

Truto exposes 103 tools for HashKey that AI agents can call directly.

- **list_all_hash_key_whitelist_verifies** — Get a micro-payment depositing address for whitelist verification in HashKey. Returns: site, topic, params, data. Required: coin, chainType, quantity. For the same coin, chainType, and walletId, specifying the same quantity always produces the same deposit random amount (micropayment). The signAddress parameter is only needed for signature verification, not for micropayment verification.
- **create_a_hash_key_account_withdraw** — Submit a digital asset withdrawal request on Hashkey. Returns: success, id, orderId, site, topic, params, data. Required: coin, quantity, address, chainType, clientOrderId. The withdrawal address must be whitelisted in advance via the Hashkey website or app.
- **create_a_hash_key_fiat_withdraw** — Create a fiat withdrawal in HashKey. Returns the withdrawal order including orderId, asset, grossAmount, netAmount, fee, status, channel, and clientOrderId. A 2FA token is required when two-factor authentication is enabled for the account; each token is valid for 30 seconds and single-use.
- **create_a_hash_key_whitelist_wallet_signing** — Verify a wallet address for whitelisting in HashKey via signature challenge. Returns: site, topic, params, data. Required: coin, chainType, fromAddress, signPhrase, signResult, walletId, timestamp.
- **hash_key_market_data_get_exchange_info** — Get current exchange trading rules and symbol information from HashKey. Returns: data, topic. Each item in data includes symbol, productType, buyMakerFeeCurrency, buyTakerFeeCurrency, sellMakerFeeCurrency, sellTakerFeeCurrency, actualMakerRate, and actualTakerRate.
- **hash_key_market_data_get_depth** — Get the current order book depth for a trading pair on HashKey. Returns: topic, data. Required: symbol. Supports up to 200 depth levels.
- **hash_key_market_data_get_trades** — Get the recent trade list for a currency pair in HashKey. Returns an array of trade objects with t (traded timestamp), p (traded price), q (volume), and ibm (buyer's maker order flag). Required: symbol.
- **hash_key_market_data_get_klines** — Get Kline (candlestick) data for a trading pair on HashKey. Returns an array of kline entries with kline_open_time, open_price, high_price, low_price, close_price, volume, kline_close_time, quote_asset_volume, number_of_trades, taker_buy_base_asset_volume, and taker_buy_quote_asset_volume. Required: symbol, interval. Max 1000 bars per request.
- **hash_key_market_data_get_ticker_24_hr** — Get 24-hour rolling price change statistics for all HashKey trading symbols. Returns an array of ticker records with s (symbol), c (latest price), h (high), l (low), o (open), b (bid), a (ask), v (base volume), qv (quote volume), t (timestamp), and it (instrument type).
- **hash_key_market_data_get_ticker_price** — Retrieve the latest price ticker for a trading symbol in HashKey. Returns: symbol, price.
- **hash_key_market_data_get_book_ticker** — Get the current top-of-book ticker for a trading symbol on HashKey. Returns the best bid and ask price and quantity levels from the order book for the requested symbol.
- **hash_key_market_data_get_merged_depth** — Get aggregated (merged) order book depth for a trading pair in HashKey. Returns the depth with symbol (s), bids (b), asks (a), timestamp (t), and version (v). Required: symbol.
- **hash_key_market_data_get_mark_price** — Get the current mark price for trading symbols on Hashkey. Returns: price, topic, data.
- **hash_key_market_data_get_index_price** — Get index prices from HashKey. Returns: index (object mapping each symbol to its current index price) and edp (object mapping each symbol to its 10-minute average index price). Returns results for all symbols if the optional symbol parameter is omitted.
- **hash_key_market_data_get_coin_info** — Get the supported list of coin information from HashKey, including withdrawal fees, min/max deposit and withdrawal quantities, precision, and per-chain deposit/withdrawal rules. Returns: status, topic, data.
- **hash_key_futures_get_funding_rate** — Get the current funding rate for HashKey futures contracts. Returns: symbol, rate, nextSettleTime, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Results for all symbols are returned when the symbol parameter is omitted.
- **hash_key_futures_get_history_funding_rate** — Get the history of futures funding rates in HashKey. Returns an array of funding rate records, each with id, symbol, settleTime, and settleRate. The symbol parameter is optional; omitting it returns results for all symbols.
- **hash_key_futures_get_leverage** — Query the current futures leverage setting for a contract in HashKey. Returns: code, symbolId, leverage, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Optional: symbol (e.g. BTCUSDT-PERPETUAL) to target a specific contract.
- **hash_key_futures_get_positions** — List futures positions in HashKey, optionally filtered by contract symbol and position side. Returns: symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Results for all symbols and both sides are returned when no filters are supplied.
- **hash_key_futures_get_balance** — Query the HashKey futures account balance. Returns: balances, userId, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp.
- **hash_key_futures_get_liquidation_assign_status** — Get the liquidation assign status for futures in HashKey. Returns: status, minAccountBalance, maintAccountBalance, liqOrderLimitRatio, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp.
- **hash_key_futures_get_risk_limit** — Query futures risk limit levels in HashKey. Returns a list of risk limit tiers with riskLimitAmount, maintainMargin, initialMargin, and side for each tier.
- **hash_key_futures_get_commission_rate** — Query futures commission rates in HashKey. Returns: symbol, openMakerFee, openTakerFee, closeMakerFee, closeTakerFee, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp.
- **hash_key_futures_get_best_order** — Get the best (top-of-book) buy and sell orders for a futures contract in HashKey. Returns: bid, ask, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. The symbol parameter is optional; results for all symbols are returned when omitted.
- **hash_key_futures_set_leverage** — Set the leverage for a HashKey futures contract. Returns: code, symbolId, leverage, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: symbol, leverage.
- **hash_key_futures_change_margin_type** — Change the margin mode (cross or isolated) for a HashKey futures contract symbol. Returns: code, symbol, marginType, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: symbol, marginType.
- **hash_key_futures_modify_position_margin** — Modify the isolated position margin for a HashKey futures contract position, increasing or decreasing the margin amount. Returns: code, symbol, margin, timestamp, side, quantity, price, priceType, timeInForce, clientOrderId. Required: symbol, side, amount. Use a positive amount to increase margin and a negative amount to decrease it.
- **hash_key_futures_set_trading_stop** — Set the take-profit and stop-loss trading stop for a HashKey futures position. Returns: symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: symbol, side, and at least one of stopProfit or stopLoss.
- **hash_key_misc_test_connectivity** — Test connectivity to the HashKey API to verify the connection is valid. Returns an empty 200 response on success.
- **hash_key_misc_get_server_time** — Get the current HashKey server time as a UNIX timestamp in milliseconds. Returns: serverTime. Useful for testing connectivity and synchronizing timestamps for signed requests.
- **hash_key_misc_create_listen_key** — Create a listen key in HashKey to start a user data stream for websocket subscriptions. Returns: listenKey, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. The key is valid for 60 minutes; send a reset request before expiry to keep the stream alive.
- **hash_key_misc_reset_listen_key** — Reset the validity period of a HashKey listen key to 60 minutes. Returns: listenKey. Required: listenKey.
- **hash_key_misc_delete_listen_key** — Delete a HashKey listen key. Returns an empty 204 response on success. Required: listenKey.
- **list_all_hash_key_spot_orders** — Query a single Hashkey spot order by origClientOrderId. Returns the full order record including orderId, symbol, price, executedQty, status, side, type, feeCoin, feeAmount, and sumFeeAmount. Required: origClientOrderId.
- **hash_key_spot_orders_get_open_orders** — Get all currently active (open) spot orders in Hashkey. Optionally filter by symbol, side, or start from a specific order ID. Returns: accountId, exchangeId, symbol, symbolName, clientOrderId, orderId, price, origQty, executedQty, cummulativeQuoteQty, cumulativeQuoteQty, avgPrice, status, timeInForce, type, side, stopPrice, icebergQty, time, updateTime, isWorking, reqAmount.
- **hash_key_spot_orders_get_all_traded_orders** — Retrieve all historically traded spot orders from Hashkey. Optionally filter by symbol, side, or a time range using startTime and endTime. Returns: accountId, exchangeId, symbol, symbolName, clientOrderId, orderId, price, origQty, executedQty, cummulativeQuoteQty, cumulativeQuoteQty, avgPrice, status, timeInForce, type, side, stopPrice, icebergQty, time, updateTime, isWorking, reqAmount.
- **hash_key_spot_orders_test_order** — Validate a new spot order request against the Hashkey test endpoint without sending it to the matching engine. Returns an empty 200 response if the parameters are valid. Required: symbol, side, type, quantity, price.
- **create_a_hash_key_spot_order** — Create a single spot order for Spot Trading on Hashkey Exchange. Required funds are ringfenced for the duration of the order. Returns the new order including orderId, clientOrderId, symbol, status, side, type, price, origQty, executedQty, transactTime, timeInForce, reqAmount, and concentration. Required: symbol, side, type, quantity.
- **hash_key_spot_orders_create_v_1_1** — Create a new spot order in Hashkey (v1.1). Returns code, result (array of per-order entries each containing the created order object with orderId, symbol, status, price, side, and type), and concentration. Required: symbol, side, type, quantity.
- **hash_key_spot_orders_create_batch** — Create multiple spot orders in a single batch request in Hashkey. Supports up to 20 orders at a time; currently only orders for the same symbol are supported. Returns code, result (per-order entries each containing the created order object with orderId, symbol, status, price, side, and type), and concentration. Each order in the batch requires symbol, side, type, and quantity.
- **hash_key_spot_orders_cancel** — Cancel an existing spot order in Hashkey. Returns an empty 204 response on success. Either orderId or clientOrderId must be sent.
- **hash_key_spot_orders_cancel_all_open_by_symbol** — Cancel all open spot orders for a given symbol in Hashkey (max 200 orders per request). Returns: code, message, timestamp, lastOrderId. Required: symbol.
- **hash_key_spot_orders_cancel_multiple_by_ids** — Cancel multiple open spot orders by order IDs in Hashkey (maximum 100 orders per batch). Returns: code, result. Required: ids.
- **hash_key_spot_orders_cancel_all_open** — Cancel all open spot orders in Hashkey (up to 200 orders per request). Returns: code, message, timestamp, lastOrderId. Optionally filter by symbol, side, or fromOrderId. Orders from the main trading account only are cancelled when using a main account API key.
- **list_all_hash_key_futures_orders** — List futures orders in HashKey. Returns each order with accountId, symbol, symbolName, orderId, clientOrderId, price, origQty, executedQty, status, side, type, timeInForce, transactTime, and reqAmount.
- **hash_key_futures_orders_get_open_orders** — List all open futures orders in HashKey. Returns each order's orderId, symbol, side, status, type, price, origQty, executedQty, timeInForce, clientOrderId, transactTime, and accountId.
- **hash_key_futures_orders_get_history_orders** — List futures historical orders in HashKey. Returns: code, result, concentration, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. History limited to the last 180 days.
- **create_a_hash_key_futures_order** — Create a new futures order in HashKey. Supports LIMIT and STOP order types with configurable price types and time-in-force settings. Returns: code, result, concentration, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: symbol, side, type, quantity, timestamp. Price is required for LIMIT orders with INPUT price type; stopPrice is required for STOP orders.
- **hash_key_futures_orders_create_batch** — Create up to 20 HashKey futures orders in a single batch request for the same symbol. Returns: code, result (array of per-order results each with code and an order object including orderId, clientOrderId, symbol, status, price, origQty, executedQty), and concentration. Required: a JSON array of order objects each with symbol, side, type, and quantity.
- **hash_key_futures_orders_cancel** — Cancel an existing HashKey futures order by orderId or clientOrderId. Returns the cancelled order object including accountId, symbol, orderId, clientOrderId, status, price, origQty, executedQty, and side. Required: symbol and either orderId or clientOrderId.
- **hash_key_futures_orders_cancel_by_ids** — Batch cancel HashKey Global futures orders by order IDs (maximum 100 per batch). Returns: code, result, concentration, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: orderIds.
- **hash_key_futures_orders_cancel_all_open** — Cancel all open futures orders in HashKey (max 200 orders per request). If using a main trading account API key, only orders from the main account are cancelled — sub-account orders are not affected. Returns: code, result, concentration, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp.
- **hash_key_account_get_vip_info** — Get VIP information in HashKey, including VIP level and per-symbol trading fee rates. Returns: code, msg, vipLevel, tradeVol30Day, totalAssetBal, data, updateTimestamp, accountId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert.
- **hash_key_account_get_account_info** — Get account information in HashKey, including balances for all assets. Returns: balances, userId, accountId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert.
- **hash_key_account_get_trades** — Get the account trade list in HashKey, querying account history and transaction records. Returns: id, clientOrderId, ticketId, symbol, symbolName, orderId, matchOrderId, price, qty, commission, commissionAsset, time, isBuyer, isMaker, fee, feeCoinId, feeAmount, feeSupplementaryAmount, makerRebate, accountId, hskDeduct, hskDeductPrice, transactTime, origQty, executedQty, status, timeInForce, side,…
- **hash_key_account_get_account_type** — Query the account type in HashKey. Returns: accountType, accountId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert.
- **hash_key_account_get_api_key_type** — Get the API key type in HashKey, indicating whether the current API key has read-only or read-write permissions. Returns: type, accountId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert.
- **hash_key_account_get_fund_statement** — Get fund statement (balance flow) records for a HashKey account. Returns: id, accountId, coin, coinId, coinName, flowTypeValue, flowType, flowName, change, total, created, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert. Required: startTime, endTime. Trade history supports 7 days per request; other…
- **hash_key_account_internal_transfer** — Transfer assets internally between HashKey accounts. Returns: success, timestamp, clientOrderId, orderId, accountId, symbol, symbolName, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert. Required: fromAccountId, toAccountId, coin, quantity. Should be called no more than once per second.
- **hash_key_account_get_fiat_history** — List fiat deposit and withdrawal history in HashKey. Returns: id, accountId, type, netFiatAmount, fiatCcy, fiatBalance, fee, feeCcy, orderId, remark, transactTime, symbol, symbolName, clientOrderId, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert. Supported for the past 30 days.
- **hash_key_account_get_eod_balance** — Get the end-of-day balance for a HashKey account on a specified reporting date. Returns: balances, userId, accountId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, status, timeInForce, side, reqAmount, concentration, alert. Required: reportDate. The reportDate must be in yyyy-mm-dd format and can only query up to 7 days in the past.
- **hash_key_account_get_trades_by_client_order_id** — Get a HashKey account trade list by clientOrderId. Returns: accountId, exchangeId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, cummulativeQuoteQty, cumulativeQuoteQty, avgPrice, status, timeInForce, type, side, stopPrice, icebergQty, time, updateTime, isWorking, reqAmount, concentration, alert, feeCoin, feeAmount, feeSupplementaryAmount, sumFeeAmount,…
- **hash_key_account_get_opt_order_history** — Get HashKey options (OPT) order history for the account. Returns: accountId, exchangeId, symbol, symbolName, clientOrderId, orderId, transactTime, price, origQty, executedQty, cummulativeQuoteQty, cumulativeQuoteQty, avgPrice, status, timeInForce, type, side, reqAmount, concentration, alert, stopPrice, icebergQty, time, updateTime, isWorking, feeCoin, feeAmount, feeSupplementaryAmount,…
- **hash_key_wallet_get_chain_type** — Get the supported list of chain types for a specific coin in Hashkey (e.g. ETH, Optimism, Arbitrum for ETH). Returns a list of per-coin objects including coinId, coinName, and chainTypeList — useful for determining valid chain types when constructing deposit or withdrawal requests.
- **hash_key_wallet_get_deposit_address** — Retrieve the system-generated deposit address for a specific asset and chain in Hashkey. Returns: event, topic, data, id, timestamp. Required: coin, chainType.
- **hash_key_wallet_get_deposit_history** — Retrieve on-chain deposit order history for the Hashkey account. Returns per-deposit records including time, coin, coinName, address, quantity, status, statusCode, and txId. Optionally filter by coin, startTime, or endTime.
- **hash_key_wallet_get_withdraw_history** — Retrieve withdrawal order history for the Hashkey account. Returns per-withdrawal records including id, time, coin, address, quantity, arriveQuantity, status, txId, fee, feeCoinId, and failedReason. Optionally filter by coin, startTime, endTime, memo, or remark.
- **hash_key_wallet_authenticate_deposit_address** — Authenticate a deposit address in Hashkey to verify the sender's identity and address ownership. Returns: event, topic, data, id, timestamp.
- **hash_key_wallet_withdraw** — Submit a digital asset withdrawal request in Hashkey. Returns the outcome of the request including success, id, and orderId. Required: coin, quantity, address, chainType, clientOrderId. The withdrawal address must be whitelisted in advance via the Hashkey website or app.
- **hash_key_wallet_get_verify_whitelist_address** — Get the micro-payment depositing address for whitelist verification in Hashkey. Returns the deposit details including coin, depositAddress, depositAmount, addressExt, and chainType. For the same coin, chainType, and walletId, providing the same quantity value will always return the same micropayment deposit amount.
- **hash_key_wallet_wallet_signing_verification** — Submit a wallet signing verification request in HashKey. Returns the on-chain verification result including txId, walletId, refundOrderId, and chainType.
- **hash_key_wallet_get_whitelisted_address** — Get the whitelisted wallet address registered on a Hashkey account, confirming whether an address has been approved for withdrawals. Returns: whitelistedAddress, sigVerification, code, msg, event, topic, data, id, timestamp.
- **hash_key_wallet_withdraw_fiat** — Submit a fiat currency withdrawal request in HashKey Exchange. Returns: success, id, orderId, site, topic, params, data.
- **hash_key_wallet_deposit_refund** — Initiate a deposit refund request in Hashkey for a specified deposit order, submitting optional third-party proof documents as multipart form data. Returns: quantity, site, topic, params, data. Required: depositOrderId, walletId.
- **hash_key_wallet_post_deposit_refund** — Submit a deposit refund request for PD Omnibus clients in Hashkey. Used when a deposit passes HashKey's KYT checks but is subsequently rejected by the Omnibus provider's KYT process, requiring funds already credited to the user's account to be refunded. Returns: txId, walletId, refundOrderId, chainType, event, topic, data, id, timestamp. Required: depositOrderId, refundCode, timestamp.
- **hash_key_wallet_get_refund_orders** — List deposit refund orders in Hashkey for the authenticated account. Returns a list of refund order records associated with prior deposit refund requests; the upstream source does not enumerate specific response fields for this endpoint.
- **hash_key_sub_account_get_spot_open_orders** — Get currently active spot orders for a Hashkey sub-account. Returns: symbol, type, site, topic, params, data. Required: subAccountId.
- **hash_key_sub_account_get_spot_trade_orders** — Get all traded (historical) spot orders for a Hashkey sub-account. Returns: symbol, type, site, topic, params, data. Required: subAccountId.
- **hash_key_sub_account_get_trades** — Get executed spot trades for a Hashkey sub-account. Returns: id, symbol, site, topic, params, data. Required: subAccountId.
- **hash_key_sub_account_get_futures_open_orders** — Get currently active futures open orders for a Hashkey sub-account, filtered by contract symbol and order type. Returns: symbol, type, site, topic, params, data. Required: subAccountId, symbol, type.
- **hash_key_sub_account_get_futures_history_orders** — Get historical futures orders for a Hashkey sub-account filtered by contract symbol, order type, and optional time range. Returns: symbol, type, site, topic, params, data. Required: subAccountId, symbol, type.
- **hash_key_sub_account_get_futures_trades** — Get futures trade history for a specific Hashkey sub-account. Returns a list of trade records including tradeId, orderId, symbol, price, quantity, commissionAsset, commission, makerRebate, type, side, realizedPnl, and isMarker. Required: symbol, subAccountId.
- **hash_key_hsk_get_deduction_switch** — Get the HSK fee deduction switch status for the master user in HashKey. The switch always applies to the master user regardless of whether the API key is bound to a master or sub account. Returns: deductionSwitch, updateTime.
- **hash_key_hsk_update_deduction_switch** — Update the HSK fee deduction switch for the master user in HashKey. Returns: deductionSwitch, updateTime. Required: deductionSwitch. The switch always applies to the master user regardless of whether the API Key is bound to a master or sub account.
- **hash_key_market_place_get_quote_pairs** — List tradable quote pairs available in the HashKey market place. Returns: productId, productName, productDesc, minApy, maxApy, currency, minAmount, maxAmount, latestUnitValue, purchasePrecision, redeemPrecision, status, productType.
- **hash_key_market_place_create_rfq** — Create a Request for Quote (RFQ) in HashKey's market place, specifying the currency pair, sell amount, and RFQ mode. Returns: rfqCreateTime, rfqId, quoteId, rfqClOrderId, rfqMode, quoteMode, buyCcy, sellCcy, buyAmount, sellAmount, price, status. Required: buyCcy, sellCcy, sellAmount, rfqMode, timestamp. The rfqMode accepts real-time or delayed; expireSec controls the RFQ validity period (10–60…
- **hash_key_market_place_cancel_rfq** — Cancel an active RFQ (Request for Quote) in HashKey. Returns: rfqId, status. Required: rfqId.
- **hash_key_market_place_accept_quote** — Accept or decline a Market Place quote in HashKey. Returns: expiryTime, quoteId, rfqId, status, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: quoteId, rfqId, action, timestamp. The decline action only works for manual orders; after decline the RFQ becomes failed.
- **hash_key_market_place_get_rfq_history** — List HashKey market-place RFQ (Request for Quote) history records. Returns: productId, productName, productDesc, minApy, maxApy, currency, minAmount, maxAmount, latestUnitValue, purchasePrecision, redeemPrecision, status, productType.
- **hash_key_market_place_get_active_quotes** — List all active market place product quotes in HashKey. Returns: productId, productName, productDesc, minApy, maxApy, currency, minAmount, maxAmount, latestUnitValue, purchasePrecision, redeemPrecision, status, productType.
- **hash_key_convert_get_quote_pairs** — Get the supported currency quote pairs for FX conversion in HashKey. Returns: quotePair.
- **hash_key_convert_get_quote** — Get an FX quote for currency conversion in HashKey. A quote must be obtained before placing a currency conversion order. Returns: quoteId, buyCurrency, sellCurrency, rate, quoteCreatedTime, quoteExpiryTime, sellAmount, channel. Required: buyCurrency, sellCurrency, sellAmount.
- **hash_key_convert_transact** — Place an FX currency conversion order in HashKey. A quote must be obtained first via the getQuote endpoint before requesting a conversion. Returns: clientOrderId, symbol, side, quantity, price, priceType, timeInForce, timestamp. Required: quoteId, buyCurrency, sellCurrency, sellAmount.
- **hash_key_convert_get_transaction_history** — List HashKey FX (currency conversion) transaction history. Returns: orderId, accountId, status, buyCurrency, sellCurrency, buyAmount, sellAmount, rate, transactTime, quoteId. Required: startTime, endTime.
- **hash_key_earn_get_offers** — List available earn product offers in HashKey, covering both standard (sto) and staking products. Returns: site, topic, params, data. Optionally filter by productType.
- **hash_key_earn_purchase** — Subscribe to an earn product in HashKey by specifying the product, currency, and amount. Returns: site, topic, params, data. Required: productId, currency, amount, clOrderId.
- **hash_key_earn_cancel_purchase** — Cancel a pending earn product purchase order in HashKey before it is filled. Supply either orderId (system-generated) or clOrderId (client-defined); at least one is required. Returns an empty 204 response on success.
- **hash_key_earn_redeem** — Redeem an earn product in Hashkey via a form-encoded POST request. The upstream documentation does not enumerate specific request or response fields for this endpoint; consult the Hashkey Earn API docs directly for the full field list.
- **hash_key_earn_cancel_redeem** — Cancel a pending earn product redemption in Hashkey. Returns an empty 204 response on success.
- **hash_key_earn_get_orders** — List earn orders for the authenticated account in Hashkey's Earn Channel, covering purchase and redemption activity. Returns a list of earn order records from the /api/v1/earn/orders endpoint.
- **hash_key_earn_get_balance** — Get the current position overview of the user's earn channel holdings in HashKey. Returns: timestamp, balanceData, site, topic, params, data. Supports optional filtering by productId and productType (sto or staking).
- **hash_key_webhook_subscribe** — Subscribe to HashKey deposit and withdrawal webhook notifications. Returns: msg, code, subscriptionSuccess, subscriptionId, createdTime, symbol, side, quantity, price, priceType, timeInForce, clientOrderId, timestamp. Required: webhookBaseUrl, eventType, timestamp.
- **hash_key_webhook_unsubscribe** — Unsubscribe from HashKey deposit and withdrawal webhook notifications. Returns: msg, code, success. Required: subscriptionId, timestamp.

## How it works

1. **Link your customer's HashKey account.** Use Truto's frontend SDK; we handle every OAuth and API key flow so you don't need to create the OAuth app.
2. **Authentication is automatic.** Truto refreshes tokens, stores credentials securely, and injects them into every API request.
3. **Call Truto's API to reach HashKey.** The Proxy API is a 1-to-1 mapping of the HashKey API.
4. **Get a unified response format.** Every response uses a single shape, with cursor-based pagination and data in the `result` field.

## Use cases

- **Offer regulated crypto trading to your users** — Give your users access to HashKey's SFC-licensed liquidity for spot, futures, and OTC/RFQ execution directly inside your product. Ideal for brokerage platforms and trading terminals that need a compliant venue for institutional clients.
- **Automate treasury and yield management** — Let corporate treasurers and Web3 foundations deploy idle capital into HashKey Earn, monitor balances, and route fiat off-ramps without leaving your dashboard. Truto handles the auth and API quirks so you can focus on the treasury workflow.
- **Power crypto accounting and tax reconciliation** — Sync EOD balances, fund statements, trade history, and fiat movements from your users' HashKey accounts to generate audit-ready ledgers and tax reports. A drop-in data source for accounting and portfolio tools.
- **Build compliance-aware payout workflows** — Automate HashKey's wallet whitelisting requirements (signature-based and micro-deposit verification) so your operations users can approve and execute withdrawals to pre-vetted addresses at scale.
- **Run algorithmic execution and smart order routing** — Send batch spot and futures orders, adjust leverage and margin, and stream real-time updates via listen keys — all through a single normalized connection. For execution SaaS and quant tooling targeting institutional desks.

## What you can build

- **End-of-day balance reconciliation** — Pull daily balance snapshots via the EOD balance endpoint to auto-generate reconciliation reports and PnL statements for each user.
- **One-click Earn deployment** — Surface available HashKey Earn offers in your UI and let users purchase, redeem, or cancel positions and view Earn balances without touching HashKey directly.
- **OTC block trade desk** — Let users request quotes, view active quotes, accept fills, and review RFQ history to execute large trades with zero slippage against HashKey's market place.
- **Automated withdrawal whitelisting** — Trigger wallet signing or micro-deposit verification flows, list pending whitelist verifies, and execute crypto or fiat withdrawals once addresses are approved.
- **Futures position and risk console** — Display open positions, funding rates, leverage, and risk limits, and let users set leverage, change margin type, modify position margin, and configure trading stops.
- **Real-time deposit and withdrawal alerts** — Subscribe to HashKey webhooks to notify ops teams the moment assets move in or out, and chain those events into downstream trading or accounting workflows.

## FAQs

### How does authentication work for HashKey through Truto?

Your end users connect their HashKey account by providing API credentials (API key/secret) issued from their HashKey account. Truto stores and rotates these credentials securely, so you never touch raw keys or sign requests yourself.

### Which HashKey products are covered by the available tools?

The integration covers Spot orders, Futures orders and positions, Market Data, Wallet (deposits/withdrawals, whitelisting, fiat), Account and Sub-Account data, Convert, Market Place (RFQ/OTC), Earn, HSK deduction settings, and Webhook subscriptions.

### Can I stream real-time updates instead of polling?

Yes. You can create, reset, and delete listen keys for HashKey's websocket streams, and subscribe to webhook events for asset movements. For everything else, Truto's tools can be polled on your preferred cadence.

### Does the integration support sub-accounts?

Yes. Dedicated tools expose sub-account spot open orders, spot trade orders, trades, futures open orders, futures history orders, and futures trades. Internal transfers between accounts are supported via the account internal transfer tool.

### How are withdrawals and whitelisting handled?

HashKey requires addresses to be whitelisted before withdrawal. Truto exposes the full flow: list pending whitelist verifies, initiate wallet signing verification, authenticate deposit addresses, fetch whitelisted addresses, and then execute crypto or fiat withdrawals.

### What about rate limits and pagination?

HashKey enforces its own per-endpoint rate limits and cursor/time-based pagination on history endpoints. Truto handles pagination normalization and surfaces rate-limit errors with retry-friendly semantics so you don't have to build that logic per endpoint.
