Download OpenAPI specification:Download
Welcome to the first ZK-powered exchange with unmatched security, lightning-fast transactions, and complete control of your assets.
Quick-Start Guide for the KalqiX API – authenticate, market data, orders, account & portfolio, and user info.
Authentication:
Base URLs:
https://testnet-api.kalqix.com/v1coming soonRequired Headers for Private Endpoints:
x-api-keyx-api-signaturex-api-timestampUse API key with HMAC signatures and wallet signing.
Dashboard: Visit Kalqix Settings > API Keys dashboard to create your first API keys
Use this guide to know how to generate api signature Link
Endpoint to create additional API keys for authentication.
Visit Kalqix Settings > API Keys dashboard to manage your keys.
Use path /v1/api-keys to generate x-api-key header
{ }{- "api_key": "string",
- "api_secret": "string",
- "user": "string",
- "status": "string"
}List all markets
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
| page_size | integer [ 1 .. 25 ] Default: 20 Number of items per page (max: 25) |
from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython() as kalqix_api_python: res = kalqix_api_python.markets.two(page=0, page_size=20) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "ticker": "string",
- "market_id": 0,
- "name": "string",
- "base_asset": "string",
- "quote_asset": "string",
- "base_asset_id": 0,
- "quote_asset_id": 0,
- "base_asset_decimals": "string",
- "quote_asset_decimals": "string",
- "tick_size": "string",
- "step_size": "string",
- "min_price": "string",
- "min_quantity": "string",
- "min_trade_size": "string",
- "market_order_margin_percent": 0,
- "max_price_deviation_percent": 0,
- "maker_fee": "string",
- "taker_fee": "string",
- "status": "string"
}
]
}Get Market details by ticker
| ticker required | string Default: "BTC_USDC" Market symbol (e.g. “BTC_USDC”) |
from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython() as kalqix_api_python: res = kalqix_api_python.markets.three(ticker="BTC_USDC") # Handle response print(res)
{- "ticker": "string",
- "market_id": 0,
- "name": "string",
- "base_asset": "string",
- "quote_asset": "string",
- "base_asset_id": 0,
- "quote_asset_id": 0,
- "base_asset_decimals": "string",
- "quote_asset_decimals": "string",
- "tick_size": "string",
- "step_size": "string",
- "min_price": "string",
- "min_quantity": "string",
- "min_trade_size": "string",
- "market_order_margin_percent": 0,
- "max_price_deviation_percent": 0,
- "maker_fee": "string",
- "taker_fee": "string",
- "status": "string",
- "description": "string",
- "twenty_four_hour": {
- "open": 0,
- "high": 0,
- "low": 0,
- "close": 0,
- "volume": 0,
- "total_volume": 0,
- "trades": 0,
- "change": 0,
- "percent": 0
}, - "price_precision": 0,
- "quantity_precision": 0
}Get Market orders depth by ticker
| ticker required | string Default: "BTC_USDC" Market symbol (e.g. “BTC_USDC”) |
| tickSize required | string Default: "0.01" Enum: "0.01" "0.1" "1" "10" "50" "100" Depth tick size for grouping order book levels |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython() as kalqix_api_python: res = kalqix_api_python.markets.four(ticker="BTC_USDC", tick_size=kalqix_xcazp_kalqix_api_python.TickSize.ZERO_DOT_01) # Handle response print(res)
{- "BUY": [
- [
- {
- "price": "string",
- "quantity": "string"
}
]
], - "SELL": [
- [
- {
- "price": "string",
- "quantity": "string"
}
]
]
}Get Market trades by ticker
| ticker required | string Default: "BTC_USDC" Market symbol (e.g. “BTC_USDC”) |
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
| page_size | integer [ 1 .. 25 ] Default: 20 Number of items per page (max: 25) |
from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython() as kalqix_api_python: res = kalqix_api_python.markets.five(ticker="BTC_USDC", page=0, page_size=20) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "trade_id": "string",
- "maker_order_id": "string",
- "taker_order_id": "string",
- "price": "string",
- "quantity": "string",
- "timestamp": 0,
- "ticker": "string",
- "maker_side": "string",
- "maker_fee": "string",
- "taker_fee": "string"
}
]
}Place a new order by signing message with your web3 wallet
Check out complete order placement guide
| ticker required | string Market ticker in which to place the order. |
| price | string Price at which to place the order (required for LIMIT orders). |
| quantity required | string Quantity (base asset) to order. |
| quote_quantity | string Quantity in quote asset to order. MARKET orders using quote_quantity specifies the amount the user wants to spend (when buying) |
| side required | string Enum: "BUY" "SELL" Whether this is a buy order or sell order. |
| order_type required | string Enum: "LIMIT" "MARKET" Type of order: limit or market. |
| time_in_force | number Enum: 0 1 2 Good Till Cancel(0), Immediate-Or-Cancel(1), Fill-Or-Kill(2) |
| expires_at | number Epoch timestamp in milliseconds when an order becomes invalid and is automatically canceled |
| signature required | string Wallet signature of canonicalized JSON payload with sorted keys. Payload must include action: 'PLACE_ORDER' and timestamp fields. |
| timestamp required | number Current time as Unix timestamp in milliseconds. Must be within 5 minutes of server time for replay protection. |
{- "ticker": "string",
- "price": "string",
- "quantity": "string",
- "quote_quantity": "string",
- "side": "BUY",
- "order_type": "LIMIT",
- "time_in_force": 0,
- "expires_at": 0,
- "signature": "string",
- "timestamp": 0
}{- "order_id": "string"
}Get current user orders
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
| page_size | integer [ 1 .. 25 ] Default: 20 Number of items per page (max: 25) |
| ticker | string Market symbol (e.g. “BTC_USDC”) |
| open | string Use value |
| side | string Enum: "BUY" "SELL" Filter orders by side. |
| order_type | string Enum: "LIMIT" "MARKET" Filter orders by order type. |
| status | string Enum: "PENDING" "PARTIALLY_FILLED" "FILLED" "CANCELLATION_REQUESTED" "CANCELLED" "EXPIRED" "EXPIRED_IN_MATCH" "FAILED" Filter orders by status. |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.orders.seventeen(page=0, page_size=20) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "market": 0,
- "ticker": "string",
- "order_id": "string",
- "asset_id": "string",
- "price": "string",
- "quantity": "string",
- "quote_quantity": "string",
- "remaining_quantity": "string",
- "side": "string",
- "order_type": "string",
- "timestamp": "string",
- "signature": "string",
- "wallet_address": "string",
- "status": "string",
- "base_asset": "string",
- "quote_asset": "string",
- "token": "string"
}
]
}Get order details by id
| id required | string Order ID |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.orders.seven(id="<id>") # Handle response print(res)
{- "market": "string",
- "ticker": "string",
- "order_id": "string",
- "asset_id": "string",
- "price": "string",
- "quantity": "string",
- "remaining_quantity": "string",
- "side": "string",
- "order_type": "string",
- "timestamp": "string",
- "signature": "string",
- "wallet_address": "string",
- "status": "string",
- "base_asset": "string",
- "quote_asset": "string",
- "token": "string",
- "trades": [
- {
- "trade_id": "string",
- "price": "string",
- "quantity": "string",
- "amount": "string",
- "fee": "string",
- "total": "string",
- "role": "string",
- "timestamp": "string"
}
]
}Cancel a single order by ID. Requires wallet signature of canonicalized JSON payload with sorted keys.
| id required | string Order ID |
| signature required | string Wallet signature of canonicalized JSON: { action: 'CANCEL_ORDER', order_id, timestamp } with sorted keys |
| timestamp required | number Current time as Unix timestamp in milliseconds. Must be within 5 minutes of server time. |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.orders.eight(id="<id>", signature="<value>", timestamp=9804.98) # Handle response print(res)
{- "message": "Your cancellation request is received."
}Cancel all open orders for selected market. Requires wallet signature of canonicalized JSON payload with sorted keys.
| market required | number Market ID from GET /markets endpoint |
| signature required | string Wallet signature of canonicalized JSON: { action: 'CANCEL_ALL_ORDERS', market, timestamp } with sorted keys |
| timestamp required | number Current time as Unix timestamp in milliseconds. Must be within 5 minutes of server time. |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.orders.nine(market=0, signature="<value>", timestamp=8384.84) # Handle response print(res)
{- "message": "Your request to cancel all open orders is received.",
- "request_id": "694248bb394d0876ba7eb4c0"
}Get portfolio details
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.account_and_portfolio.ten() # Handle response print(res)
{- "assets_count": "string",
- "total_value_usd": "string",
- "updated_at": "string"
}Get positions status
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
| page_size | integer [ 1 .. 25 ] Default: 20 Number of items per page (max: 25) |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.account_and_portfolio.eleven(page=0, page_size=20) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "name": "string",
- "symbol": "string",
- "total": "string",
- "asset_id": 0,
- "asset": "string",
- "available": "string",
- "locked": "string",
- "decimals": 0,
- "display_decimals": 0,
- "available_formatted": "string",
- "locked_formatted": "string"
}
]
}Get position detail by asset
| asset required | string Default: "USDC" Asset symbol (e.g. “ETH”, ”USDC”) |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.account_and_portfolio.twelve(asset="USDC") # Handle response print(res)
{- "name": "string",
- "symbol": "string",
- "total": "string",
- "asset_id": 0,
- "asset": "string",
- "available": "string",
- "locked": "string",
- "decimals": 0,
- "display_decimals": 0,
- "available_formatted": "string",
- "locked_formatted": "string"
}Withdrawal is a 3 step process. First step is initiate the withdrawal. Provide details about which asset you want to withdraw. Sign a canonicalized JSON payload with sorted keys including action: 'WITHDRAW' and timestamp.
| asset required | string Asset symbol (e.g., 'USDC', 'BTC') |
| amount required | string Amount to withdraw in formatted decimals |
| chain_id required | number Blockchain chain ID (e.g., 1 for Ethereum mainnet) |
| signature required | string Wallet signature of canonicalized JSON: { action: 'WITHDRAW', asset, amount, chain_id, timestamp } with sorted keys |
| timestamp required | number Current time as Unix timestamp in milliseconds. Must be within 5 minutes of server time. |
{- "asset": "USDC",
- "amount": "100.0",
- "chain_id": 1,
- "signature": "0x...",
- "timestamp": 1767225600000
}{- "withdrawal_id": "string"
}Withdrawal is a 3 step process. Second step is to check withdrawal proof status. Poll this endpoint until proof_ready is true.
| id required | string withdrawal id |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.withdrawals.eighteen(id="<id>") # Handle response print(res)
{- "proof_ready": true,
- "amount": "string",
- "amount_formatted": "string",
- "local_exit_proof": "string",
- "global_exit_proof": "string",
- "global_claim_index": "string",
- "token_address": "string",
- "chain_id": 0,
- "network": "string",
- "destination_network_id": 0,
- "destination_address": "string",
- "bridge_contract_address": "string"
}Transfer asset to another wallet address. Sign a canonicalized JSON payload with sorted keys including action: 'TRANSFER' and timestamp.
| asset required | string Asset symbol (e.g., 'USDC', 'ETH') |
| amount required | string Amount to transfer in formatted decimals (e.g., '100.5' for ETH). Note: Changed from base units in v1.4.0. |
| to_wallet_address required | string Destination wallet address (required) |
| signature required | string Wallet signature of canonicalized JSON: { action: 'TRANSFER', asset, amount, to_wallet_address, timestamp } with sorted keys |
| timestamp required | number Current time as Unix timestamp in milliseconds. Must be within 5 minutes of server time. |
{- "asset": "USDC",
- "amount": "100.0",
- "to_wallet_address": "string",
- "signature": "0x...",
- "timestamp": 1767225600000
}{- "transfer_id": "string",
- "from_wallet_address": "string",
- "to_wallet_address": "string",
- "amount": "string",
- "amount_formatted": "string",
- "timestamp": 1764547200,
- "asset_id": 0,
- "asset": "string",
- "status": "PENDING",
- "message": "string",
- "signature": "string"
}Get current user transfers
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
| page_size | integer [ 1 .. 25 ] Default: 20 Number of items per page (max: 25) |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.transfers.twenty(page=0, page_size=20) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "transfer_id": "string",
- "from_wallet_address": "string",
- "to_wallet_address": "string",
- "amount": "string",
- "amount_formatted": "string",
- "timestamp": 1764547200,
- "asset_id": 0,
- "asset": "string",
- "status": "PENDING",
- "message": "string",
- "signature": "string"
}
]
}Get transfer details by transfer_id
| transfer_id required | string Use |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.transfers.twenty_one(transfer_id="<id>") # Handle response print(res)
{- "transfer_id": "string",
- "from_wallet_address": "string",
- "to_wallet_address": "string",
- "amount": "string",
- "amount_formatted": "string",
- "timestamp": 1764547200,
- "asset_id": 0,
- "asset": "string",
- "status": "PENDING",
- "message": "string",
- "signature": "string"
}Get user profile details
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.user_and_transaction_info.fourteen() # Handle response print(res)
{- "_id": "string",
- "created_at": "string",
- "wallet_address": "string",
- "pendingDeposits": 0,
- "active": true
}Get transactions (e.g.,: deposits, withdrawals) for a user
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.user_and_transaction_info.fifteen(page=0) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "token": "string",
- "destination_address": "string",
- "amount": "string",
- "deposit_count": 0,
- "block_number": 0,
- "transaction_hash": "string",
- "chain_id": 0,
- "status": "string",
- "amount_formatted": "string",
- "asset": "string",
- "asset_id": 0,
- "chain_decimals": 0,
- "decimals": 0,
- "network": "string",
- "network_id": 0,
- "position": "string",
- "retries": 0,
- "scaling_factor": 0,
- "type": "string",
- "to": "string",
- "from": "string"
}
]
}Get trade history for a user
| ticker required | string Default: "BTC_USDC" Market symbol (e.g. “BTC_USDC”) |
| page | integer >= 0 Default: 0 Page number for pagination (starts from 0) |
| page_size | integer [ 1 .. 25 ] Default: 20 Number of items per page (max: 25) |
import kalqix_xcazp_kalqix_api_python from kalqix_xcazp_kalqix_api_python import KalqixAPIPython with KalqixAPIPython( security=kalqix_xcazp_kalqix_api_python.Security( api_key_auth="<YOUR_API_KEY_HERE>", hmac_auth="<YOUR_API_KEY_HERE>", timestamp_header="<YOUR_API_KEY_HERE>", ), ) as kalqix_api_python: res = kalqix_api_python.user_and_transaction_info.sixteen(ticker="BTC_USDC", page=0, page_size=20) # Handle response print(res)
{- "total": 0,
- "page": 0,
- "page_size": 0,
- "data": [
- {
- "trade_id": "string",
- "maker_order_id": "string",
- "taker_order_id": "string",
- "price": "string",
- "quantity": "string",
- "timestamp": 0,
- "ticker": "string",
- "maker_side": "string",
- "maker_fee": "string",
- "taker_fee": "string"
}
]
}