{
"openapi": "3.1.0",
"info": {
"title": "Bullet Trading API",
"description": "REST API for the Bullet exchange. Provides Binance FAPI-compatible endpoints for trading, account management, and market data.",
"contact": {
"name": "Bullet",
"url": "https://bullet.xyz"
},
"license": {
"name": "Proprietary"
},
"version": "0.1.0"
},
"servers": [
{
"url": "/",
"description": "Current server"
},
{
"url": "https://tradingapi.mainnet.bullet.xyz",
"description": "Mainnet"
},
{
"url": "https://tradingapi.testnet.bullet.xyz",
"description": "Testnet"
},
{
"url": "https://tradingapi.staging.bullet.xyz",
"description": "Staging"
}
],
"paths": {
"/fapi/v1/accountConfig": {
"get": {
"tags": [
"Account"
],
"summary": "Futures Account Configuration",
"operationId": "account_config",
"parameters": [
{
"name": "address",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"501": {
"description": "Not implemented"
}
}
}
},
"/fapi/v1/allOrders": {
"get": {
"tags": [
"User Data (Beta)"
],
"summary": "All Orders (order history from ClickHouse)",
"operationId": "all_orders",
"parameters": [
{
"name": "address",
"in": "query",
"description": "Account address (required on first request, encoded in cursor for subsequent)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "symbol",
"in": "query",
"description": "Trading pair symbol (optional filter)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "orderId",
"in": "query",
"description": "Return orders with orderId >= this value",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64",
"minimum": 0
}
},
{
"name": "startTime",
"in": "query",
"description": "Start time in microseconds",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "endTime",
"in": "query",
"description": "End time in microseconds",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "Number of results (default 500, max 1000)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "List of all orders",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponse_HistoricalOrder"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/borrowLendPools": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Borrow Lend Pools - Doesnt exist in Binance",
"operationId": "borrow_lend_pools",
"parameters": [
{
"name": "symbol",
"in": "query",
"description": "Symbol",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "BorrowLendPools",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BorrowLendPoolResponse"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/commissionRate": {
"get": {
"tags": [
"Account"
],
"summary": "User Commission Rate (USER_DATA)",
"operationId": "commission_rate",
"parameters": [
{
"name": "address",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "symbol",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "User commission rate"
}
}
}
},
"/fapi/v1/depth": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Get orderbook",
"operationId": "order_book",
"parameters": [
{
"name": "symbol",
"in": "query",
"description": "Symbol",
"required": true,
"schema": {
"type": "string"
},
"example": "BTC-USD"
},
{
"name": "limit",
"in": "query",
"description": "Limit (default 20, max 1000)",
"required": false,
"schema": {
"type": "integer",
"format": "int32",
"minimum": 0
},
"example": 20
}
],
"responses": {
"200": {
"description": "Order book",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderBook"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/exchangeInfo": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Get current exchange trading rules and symbol information",
"operationId": "exchange_info",
"responses": {
"200": {
"description": "Exchange information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExchangeInfo"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/fundingRate": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Latest price for a symbol or symbols",
"operationId": "funding_rate",
"parameters": [
{
"name": "symbol",
"in": "query",
"description": "Symbol",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Funding Rate",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FundingRate"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/insuranceBalance": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Query Insurance Fund Balance Snapshot",
"operationId": "insurance_balance",
"responses": {
"200": {
"description": "Insurance Fund Balance Snapshot",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InsuranceBalance"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/leverageBracket": {
"get": {
"tags": [
"Account"
],
"summary": "Notional and Leverage Brackets (USER_DATA)",
"operationId": "leverage_bracket",
"parameters": [
{
"name": "symbol",
"in": "query",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
}
],
"responses": {
"200": {
"description": "User notional and leverage brackets",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LeverageBracket"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/openInterest": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Open interest per market",
"operationId": "open_interest",
"responses": {
"200": {
"description": "Open Interest",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OpenInterest"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/openOrder": {
"get": {
"tags": [
"Trading"
],
"summary": "Query Current Open Order",
"operationId": "query_open_order",
"parameters": [
{
"name": "symbol",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "orderId",
"in": "query",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64",
"minimum": 0
}
},
{
"name": "clientOrderId",
"in": "query",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64",
"minimum": 0
}
},
{
"name": "address",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Open order information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BinanceOrder"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/openOrders": {
"get": {
"tags": [
"Trading"
],
"summary": "Query All Open Orders",
"operationId": "query_open_orders",
"parameters": [
{
"name": "symbol",
"in": "query",
"description": "Trading pair symbol",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "address",
"in": "query",
"description": "Account address",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "List of open orders",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/BinanceOrder"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/ping": {
"get": {
"tags": [
"Health"
],
"summary": "Test connectivity to the Rest API",
"operationId": "ping",
"responses": {
"200": {
"description": "Ping successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PingResponse"
}
}
}
}
}
}
},
"/fapi/v1/rateLimit/order": {
"get": {
"tags": [
"Account"
],
"summary": "Query User Rate Limit (USER_DATA)",
"operationId": "rate_limit_order",
"responses": {
"501": {
"description": "User rate limit"
}
}
}
},
"/fapi/v1/symbolConfig": {
"get": {
"tags": [
"Account"
],
"summary": "Symbol Configuration (USER_DATA)",
"operationId": "symbol_config",
"parameters": [
{
"name": "address",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
},
{
"name": "symbol",
"in": "query",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
}
],
"responses": {
"200": {
"description": "Symbol configuration"
}
}
}
},
"/fapi/v1/ticker/24hr": {
"get": {
"tags": [
"Market-Data"
],
"summary": "24 hour rolling window price change statistics.\nreturns all markets — no per-symbol filtering (intentional, dataset is small)",
"operationId": "ticker_24hr",
"responses": {
"200": {
"description": "24hr ticker statistics",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Ticker24hr"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/ticker/price": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Latest price for a symbol or symbols",
"operationId": "ticker_price",
"parameters": [
{
"name": "symbol",
"in": "query",
"description": "Symbol",
"required": false,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Price ticker",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PriceTicker"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/time": {
"get": {
"tags": [
"Health"
],
"summary": "Test connectivity to the Rest API and get the current server time",
"operationId": "time",
"responses": {
"200": {
"description": "Server time",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TimeResponse"
}
}
}
}
}
}
},
"/fapi/v1/trades": {
"get": {
"tags": [
"Market-Data"
],
"summary": "Recent Trades List",
"operationId": "recent_trades",
"parameters": [
{
"name": "symbol",
"in": "query",
"description": "Symbol",
"required": true,
"schema": {
"type": "string"
},
"example": "BTC-USD"
},
{
"name": "limit",
"in": "query",
"description": "Default 100; max 1000",
"required": false,
"schema": {
"type": "integer",
"format": "int32"
},
"example": 100
}
],
"responses": {
"200": {
"description": "List of recent trades",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Trade"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/userDeposits": {
"get": {
"tags": [
"User Data (Beta)"
],
"summary": "User Deposit History",
"operationId": "user_deposits",
"parameters": [
{
"name": "address",
"in": "query",
"description": "Account address (required on first request, encoded in cursor for subsequent)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "startTime",
"in": "query",
"description": "Start time in microseconds",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "endTime",
"in": "query",
"description": "End time in microseconds",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "Number of results (default 500, max 1000)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "List of user deposits",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponse_UserDeposit"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/userFundingPayments": {
"get": {
"tags": [
"User Data (Beta)"
],
"summary": "User Funding Payment History",
"operationId": "user_funding_payments",
"parameters": [
{
"name": "address",
"in": "query",
"description": "Account address (required on first request, encoded in cursor for subsequent)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "symbol",
"in": "query",
"description": "Trading pair symbol (optional filter)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "startTime",
"in": "query",
"description": "Start time in microseconds (optional filter)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "endTime",
"in": "query",
"description": "End time in microseconds (optional filter)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "Number of results (default 500, max 1000)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "List of user funding payments",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponse_UserFundingPayment"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/userLiquidations": {
"get": {
"tags": [
"User Data (Beta)"
],
"summary": "User Liquidation History",
"operationId": "user_liquidations",
"parameters": [
{
"name": "address",
"in": "query",
"description": "Account address (required on first request, encoded in cursor for subsequent)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "symbol",
"in": "query",
"description": "Trading pair symbol (optional filter)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "startTime",
"in": "query",
"description": "Start time in microseconds (optional filter)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "endTime",
"in": "query",
"description": "End time in microseconds (optional filter)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "Number of results (default 500, max 1000)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "List of user liquidations",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponse_UserLiquidation"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/userTrades": {
"get": {
"tags": [
"User Data (Beta)"
],
"summary": "Account Trade List",
"operationId": "user_trades",
"parameters": [
{
"name": "address",
"in": "query",
"description": "Account address (required on first request, encoded in cursor for subsequent)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "symbol",
"in": "query",
"description": "Trading pair symbol (optional filter)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "startTime",
"in": "query",
"description": "Start time in microseconds (optional filter)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "endTime",
"in": "query",
"description": "End time in microseconds (optional filter)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "Number of results (default 500, max 1000)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "List of account trades",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponse_UserTrade"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"404": {
"description": "Market not found",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v1/userWithdrawals": {
"get": {
"tags": [
"User Data (Beta)"
],
"summary": "User Withdrawal History",
"operationId": "user_withdrawals",
"parameters": [
{
"name": "address",
"in": "query",
"description": "Account address (required on first request, encoded in cursor for subsequent)",
"required": false,
"schema": {
"type": [
"string",
"null"
]
}
},
{
"name": "startTime",
"in": "query",
"description": "Start time in microseconds",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "endTime",
"in": "query",
"description": "End time in microseconds",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"format": "int64"
}
},
{
"name": "limit",
"in": "query",
"description": "Number of results (default 500, max 1000)",
"required": false,
"schema": {
"type": [
"integer",
"null"
],
"minimum": 0
}
}
],
"responses": {
"200": {
"description": "List of user withdrawals",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedResponse_UserWithdrawal"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Historical data service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v3/account": {
"get": {
"tags": [
"Account"
],
"summary": "Get current account information",
"operationId": "account_info",
"parameters": [
{
"name": "address",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Account information",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Account"
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/fapi/v3/balance": {
"get": {
"tags": [
"Account"
],
"summary": "Get account balance",
"operationId": "account_balance",
"parameters": [
{
"name": "address",
"in": "query",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Account balance",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Balance"
}
}
}
}
},
"400": {
"description": "Bad request",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"500": {
"description": "Internal server error",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/health": {
"get": {
"tags": [
"Health"
],
"summary": "Get health of the API.",
"operationId": "health",
"responses": {
"200": {
"description": "Success",
"content": {
"text/plain": {
"schema": {
"type": "string"
}
}
}
}
}
}
},
"/health/ready": {
"get": {
"tags": [
"Health"
],
"summary": "readiness probe — 200 when all components healthy, 503 otherwise",
"operationId": "ready",
"responses": {
"200": {
"description": "All components ready",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReadinessStatus"
}
}
}
},
"503": {
"description": "Not all components ready",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReadinessStatus"
}
}
}
}
}
}
},
"/rollup/constants": {
"get": {
"summary": "Get the rollup constants.",
"operationId": "constants",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RollupConstants"
}
}
}
},
"503": {
"description": "Constants not available",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/rollup/schema": {
"get": {
"summary": "Get the rollup schema (unwrapped).",
"operationId": "schema",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"503": {
"description": "Schema not available",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
},
"/tx/submit": {
"post": {
"summary": "Submit a transaction to the rollup.",
"operationId": "submit_tx",
"requestBody": {
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubmitTxRequest"
}
}
},
"required": true
},
"responses": {
"200": {
"description": "Transaction submitted successfully",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SubmitTxResponse"
}
}
}
},
"400": {
"description": "Invalid transaction format or validation failed",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"401": {
"description": "Invalid signature or public key",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"502": {
"description": "Upstream service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
},
"503": {
"description": "Validation service unavailable",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiErrorResponse"
}
}
}
}
}
}
}
},
"components": {
"schemas": {
"Account": {
"type": "object",
"required": [
"totalInitialMargin",
"totalMaintMargin",
"totalWalletBalance",
"totalUnrealizedProfit",
"totalMarginBalance",
"totalPositionInitialMargin",
"totalOpenOrderInitialMargin",
"totalCrossWalletBalance",
"totalCrossUnPnl",
"availableBalance",
"maxWithdrawAmount",
"assets",
"positions"
],
"properties": {
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountAsset"
}
},
"availableBalance": {
"type": "string",
"format": "decimal"
},
"maxWithdrawAmount": {
"type": "string",
"format": "decimal"
},
"positions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AccountPosition"
}
},
"totalCrossUnPnl": {
"type": "string",
"format": "decimal"
},
"totalCrossWalletBalance": {
"type": "string",
"format": "decimal"
},
"totalInitialMargin": {
"type": "string",
"format": "decimal"
},
"totalMaintMargin": {
"type": "string",
"format": "decimal"
},
"totalMarginBalance": {
"type": "string",
"format": "decimal"
},
"totalOpenOrderInitialMargin": {
"type": "string",
"format": "decimal"
},
"totalPositionInitialMargin": {
"type": "string",
"format": "decimal"
},
"totalUnrealizedProfit": {
"type": "string",
"format": "decimal"
},
"totalWalletBalance": {
"type": "string",
"format": "decimal"
}
}
},
"AccountAsset": {
"type": "object",
"required": [
"asset",
"assetId",
"walletBalance",
"updateTime"
],
"properties": {
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"updateTime": {
"type": "integer",
"format": "int64"
},
"walletBalance": {
"type": "string",
"format": "decimal"
}
}
},
"AccountPosition": {
"type": "object",
"required": [
"symbol",
"marketId",
"unrealizedProfit",
"entryPrice",
"initialMargin",
"maintMargin",
"positionSide",
"positionAmt",
"updateTime"
],
"properties": {
"entryPrice": {
"type": "string",
"format": "decimal"
},
"initialMargin": {
"type": "string",
"format": "decimal"
},
"maintMargin": {
"type": "string",
"format": "decimal"
},
"marketId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"positionAmt": {
"type": "string",
"format": "decimal"
},
"positionSide": {
"type": "string"
},
"symbol": {
"type": "string"
},
"unrealizedProfit": {
"type": "string",
"format": "decimal"
},
"updateTime": {
"type": "integer",
"format": "int64"
}
}
},
"ApiErrorResponse": {
"type": "object",
"description": "Structured API error response matching Bullet API format.\n\nAll error responses from the trading API conform to this schema.",
"required": [
"status",
"message"
],
"properties": {
"details": {
"description": "Optional structured error details."
},
"message": {
"type": "string",
"description": "Human-readable error message.",
"example": "Transaction validation failed: insufficient funds"
},
"status": {
"type": "integer",
"format": "uint16",
"description": "HTTP status code.",
"example": 400,
"minimum": 0
}
}
},
"Asset": {
"type": "object",
"required": [
"asset",
"marginAvailable",
"assetId",
"decimals"
],
"properties": {
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"decimals": {
"type": "integer",
"format": "uint8",
"minimum": 0
},
"marginAvailable": {
"type": "boolean"
},
"tokenId": {
"type": [
"string",
"null"
]
}
}
},
"Balance": {
"type": "object",
"required": [
"accountAlias",
"asset",
"balance",
"crossWalletBalance",
"crossUnPnl",
"availableBalance",
"maxWithdrawAmount",
"marginAvailable",
"updateTime"
],
"properties": {
"accountAlias": {
"type": "string"
},
"asset": {
"type": "string"
},
"availableBalance": {
"type": "string",
"format": "decimal"
},
"balance": {
"type": "string",
"format": "decimal"
},
"crossUnPnl": {
"type": "string",
"format": "decimal"
},
"crossWalletBalance": {
"type": "string",
"format": "decimal"
},
"marginAvailable": {
"type": "boolean"
},
"maxWithdrawAmount": {
"type": "string",
"format": "decimal"
},
"updateTime": {
"type": "integer",
"format": "int64"
}
}
},
"BinanceOrder": {
"type": "object",
"required": [
"orderId",
"symbol",
"status",
"price",
"avgPrice",
"origQty",
"executedQty",
"cumQty",
"cumQuote",
"timeInForce",
"orderType",
"reduceOnly",
"closePosition",
"side",
"positionSide",
"workingType",
"priceProtect",
"origType",
"priceMatch",
"selfTradePreventionMode",
"goodTillDate",
"updateTime"
],
"properties": {
"avgPrice": {
"type": "string",
"format": "decimal"
},
"clientOrderId": {
"type": [
"string",
"null"
]
},
"closePosition": {
"type": "boolean"
},
"cumQty": {
"type": "string",
"format": "decimal"
},
"cumQuote": {
"type": "string",
"format": "decimal"
},
"executedQty": {
"type": "string",
"format": "decimal"
},
"goodTillDate": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"orderId": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"orderType": {
"type": "string"
},
"origQty": {
"type": "string",
"format": "decimal"
},
"origType": {
"type": "string"
},
"positionSide": {
"type": "string"
},
"price": {
"type": "string",
"format": "decimal"
},
"priceMatch": {
"type": "string"
},
"priceProtect": {
"type": "boolean"
},
"reduceOnly": {
"type": "boolean"
},
"selfTradePreventionMode": {
"type": "string"
},
"side": {
"type": "string"
},
"status": {
"type": "string"
},
"stopPrice": {
"type": [
"string",
"null"
],
"format": "decimal"
},
"symbol": {
"type": "string"
},
"timeInForce": {
"type": "string"
},
"updateTime": {
"type": "integer",
"format": "int64"
},
"workingType": {
"type": "string"
}
}
},
"BorrowLendPoolResponse": {
"type": "object",
"required": [
"asset",
"assetId",
"isActive",
"lastUpdateTimestamp",
"rateParams",
"depositLimit",
"borrowLimit",
"availableAmount",
"borrowedAmount",
"cumulativeDepositRate",
"cumulativeBorrowRate",
"accumulatedProtocolFees",
"unclaimedProtocolFees",
"interestFeeTenthBps"
],
"properties": {
"accumulatedProtocolFees": {
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"availableAmount": {
"type": "string",
"format": "decimal"
},
"borrowLimit": {
"type": "string",
"format": "decimal"
},
"borrowedAmount": {
"type": "string",
"format": "decimal"
},
"cumulativeBorrowRate": {
"type": "string",
"format": "decimal"
},
"cumulativeDepositRate": {
"type": "string",
"format": "decimal"
},
"depositLimit": {
"type": "string",
"format": "decimal"
},
"interestFeeTenthBps": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"isActive": {
"type": "boolean"
},
"lastUpdateTimestamp": {
"type": "integer",
"format": "int64"
},
"rateParams": {
"$ref": "#/components/schemas/RateParams"
},
"unclaimedProtocolFees": {
"type": "string",
"format": "decimal"
}
}
},
"Bracket": {
"type": "object",
"required": [
"bracket",
"initialLeverage",
"notionalCap",
"notionalFloor",
"maintMarginRatio",
"cum"
],
"properties": {
"bracket": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"cum": {
"type": "number",
"format": "double"
},
"initialLeverage": {
"type": "integer",
"format": "uint32",
"minimum": 0
},
"maintMarginRatio": {
"type": "number",
"format": "double"
},
"notionalCap": {
"type": "number",
"format": "double"
},
"notionalFloor": {
"type": "number",
"format": "double"
}
}
},
"ChainInfo": {
"type": "object",
"description": "chain-level constants from the rollup",
"required": [
"chainId",
"chainName",
"gasTokenId",
"hyperlaneDomain",
"addressPrefix"
],
"properties": {
"addressPrefix": {
"type": "string"
},
"chainId": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"chainName": {
"type": "string"
},
"gasTokenId": {
"type": "string"
},
"hyperlaneDomain": {
"type": "integer",
"format": "uint64",
"minimum": 0
}
}
},
"ExchangeInfo": {
"type": "object",
"required": [
"rateLimits",
"assets",
"symbols"
],
"properties": {
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Asset"
}
},
"chainHash": {
"type": [
"string",
"null"
]
},
"chainInfo": {
"oneOf": [
{
"type": "null"
},
{
"$ref": "#/components/schemas/ChainInfo"
}
]
},
"rateLimits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RateLimit"
}
},
"symbols": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Symbol"
}
}
}
},
"FundingRate": {
"type": "object",
"required": [
"symbol",
"fundingRate",
"fundingTime",
"markPrice"
],
"properties": {
"fundingRate": {
"type": "string",
"format": "decimal"
},
"fundingTime": {
"type": "integer",
"format": "int64"
},
"markPrice": {
"type": "string",
"format": "decimal"
},
"symbol": {
"type": "string"
}
}
},
"HealthState": {
"type": "string",
"description": "health state for a single component",
"enum": [
"starting",
"running",
"recovering"
]
},
"HistoricalOrder": {
"type": "object",
"description": "historical order for /fapi/v1/allOrders",
"required": [
"orderId",
"symbol",
"status",
"price",
"origQty",
"executedQty",
"avgPrice",
"side",
"type",
"time",
"updateTime",
"reduceOnly",
"closePosition",
"positionSide",
"txHashes"
],
"properties": {
"avgPrice": {
"type": "string",
"format": "decimal"
},
"closePosition": {
"type": "boolean"
},
"executedQty": {
"type": "string",
"format": "decimal"
},
"orderId": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"origQty": {
"type": "string",
"format": "decimal"
},
"positionSide": {
"type": "string"
},
"price": {
"type": "string",
"format": "decimal"
},
"reduceOnly": {
"type": "boolean"
},
"side": {
"type": "string"
},
"status": {
"type": "string"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHashes": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"type": "string"
},
"updateTime": {
"type": "integer",
"format": "int64"
}
}
},
"InsuranceAsset": {
"type": "object",
"required": [
"asset",
"marginBalance",
"updateTime"
],
"properties": {
"asset": {
"type": "string"
},
"marginBalance": {
"type": "string",
"format": "decimal"
},
"updateTime": {
"type": "integer",
"format": "int64"
}
}
},
"InsuranceBalance": {
"type": "object",
"required": [
"symbols",
"assets"
],
"properties": {
"assets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InsuranceAsset"
}
},
"symbols": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"LedgerEvent": {
"type": "object",
"description": "Ledger event emitted by a transaction",
"required": [
"type",
"number",
"key",
"value",
"module"
],
"properties": {
"key": {
"type": "string",
"description": "Event key"
},
"module": {
"$ref": "#/components/schemas/ModuleRef",
"description": "Module that emitted the event"
},
"number": {
"type": "integer",
"format": "uint64",
"description": "Event number",
"minimum": 0
},
"tx_hash": {
"type": "string",
"description": "Transaction hash (if associated with a transaction)"
},
"type": {
"type": "string",
"description": "Event type"
},
"value": {
"type": "object",
"description": "Event value (arbitrary JSON)"
}
}
},
"LeverageBracket": {
"type": "object",
"required": [
"symbol",
"brackets"
],
"properties": {
"brackets": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Bracket"
}
},
"notionalCoef": {
"type": [
"number",
"null"
],
"format": "double"
},
"symbol": {
"type": "string"
}
}
},
"ModuleRef": {
"type": "object",
"description": "Reference to a module",
"required": [
"name"
],
"properties": {
"name": {
"type": "string",
"description": "Module name"
}
}
},
"OpenInterest": {
"type": "object",
"description": "open interest for a single market",
"required": [
"symbol",
"openInterest",
"time"
],
"properties": {
"openInterest": {
"type": "string",
"format": "decimal"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
}
}
},
"OrderBook": {
"type": "object",
"required": [
"lastUpdateId",
"E",
"T",
"bids",
"asks"
],
"properties": {
"E": {
"type": "integer",
"format": "int64"
},
"T": {
"type": "integer",
"format": "int64"
},
"asks": {
"type": "array",
"items": {
"type": "array",
"items": false,
"prefixItems": [
{
"type": "string"
},
{
"type": "string"
}
]
}
},
"bids": {
"type": "array",
"items": {
"type": "array",
"items": false,
"prefixItems": [
{
"type": "string"
},
{
"type": "string"
}
]
}
},
"lastUpdateId": {
"type": "integer",
"format": "uint64",
"minimum": 0
}
}
},
"PaginatedResponse_HistoricalOrder": {
"type": "object",
"description": "paginated response wrapper with optional cursor for next page",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"description": "historical order for /fapi/v1/allOrders",
"required": [
"orderId",
"symbol",
"status",
"price",
"origQty",
"executedQty",
"avgPrice",
"side",
"type",
"time",
"updateTime",
"reduceOnly",
"closePosition",
"positionSide",
"txHashes"
],
"properties": {
"avgPrice": {
"type": "string",
"format": "decimal"
},
"closePosition": {
"type": "boolean"
},
"executedQty": {
"type": "string",
"format": "decimal"
},
"orderId": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"origQty": {
"type": "string",
"format": "decimal"
},
"positionSide": {
"type": "string"
},
"price": {
"type": "string",
"format": "decimal"
},
"reduceOnly": {
"type": "boolean"
},
"side": {
"type": "string"
},
"status": {
"type": "string"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHashes": {
"type": "array",
"items": {
"type": "string"
}
},
"type": {
"type": "string"
},
"updateTime": {
"type": "integer",
"format": "int64"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
},
"PaginatedResponse_UserDeposit": {
"type": "object",
"description": "paginated response wrapper with optional cursor for next page",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"asset",
"assetId",
"amount",
"amountNotional",
"txHash",
"eventNumber",
"time"
],
"properties": {
"amount": {
"type": "string",
"format": "decimal"
},
"amountNotional": {
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
},
"PaginatedResponse_UserFundingPayment": {
"type": "object",
"description": "paginated response wrapper with optional cursor for next page",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"description": "user funding payment history",
"required": [
"symbol",
"marketId",
"fundingApplied",
"txHash",
"eventNumber",
"time"
],
"properties": {
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"fundingApplied": {
"type": "string",
"format": "decimal"
},
"marketId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
},
"PaginatedResponse_UserLiquidation": {
"type": "object",
"description": "paginated response wrapper with optional cursor for next page",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"symbol",
"liquidateeAddress",
"liquidatorAddress",
"marketId",
"markPrice",
"size",
"side",
"liquidatorReward",
"realizedPnl",
"txHash",
"eventNumber",
"time"
],
"properties": {
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"liquidateeAddress": {
"type": "string"
},
"liquidatorAddress": {
"type": "string"
},
"liquidatorReward": {
"type": "string",
"format": "decimal"
},
"markPrice": {
"type": "string",
"format": "decimal"
},
"marketId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"realizedPnl": {
"type": "string",
"format": "decimal"
},
"side": {
"type": "string"
},
"size": {
"type": "string",
"format": "decimal"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
},
"PaginatedResponse_UserTrade": {
"type": "object",
"description": "paginated response wrapper with optional cursor for next page",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"symbol",
"id",
"orderId",
"side",
"price",
"qty",
"quoteQty",
"realizedPnl",
"commission",
"commissionAsset",
"time",
"positionSide",
"buyer",
"maker",
"address",
"txHash"
],
"properties": {
"address": {
"type": "string"
},
"buyer": {
"type": "boolean"
},
"commission": {
"type": "string",
"format": "decimal"
},
"commissionAsset": {
"type": "string"
},
"id": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"maker": {
"type": "boolean"
},
"orderId": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"positionSide": {
"type": "string"
},
"price": {
"type": "string",
"format": "decimal"
},
"qty": {
"type": "string",
"format": "decimal"
},
"quoteQty": {
"type": "string",
"format": "decimal"
},
"realizedPnl": {
"type": "string",
"format": "decimal"
},
"side": {
"type": "string"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
},
"PaginatedResponse_UserWithdrawal": {
"type": "object",
"description": "paginated response wrapper with optional cursor for next page",
"required": [
"data"
],
"properties": {
"data": {
"type": "array",
"items": {
"type": "object",
"required": [
"asset",
"assetId",
"amount",
"amountNotional",
"fee",
"txHash",
"eventNumber",
"time"
],
"properties": {
"amount": {
"type": "string",
"format": "decimal"
},
"amountNotional": {
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"fee": {
"type": "string",
"format": "decimal"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
}
},
"nextCursor": {
"type": [
"string",
"null"
]
}
}
},
"PingResponse": {
"type": "object"
},
"PriceTicker": {
"type": "object",
"required": [
"symbol",
"price",
"time"
],
"properties": {
"price": {
"type": "string",
"format": "decimal"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
}
}
},
"RateLimit": {
"type": "object",
"required": [
"rateLimitType",
"interval",
"intervalNum",
"limit"
],
"properties": {
"interval": {
"type": "string"
},
"intervalNum": {
"type": "integer",
"format": "int32"
},
"limit": {
"type": "integer",
"format": "int32"
},
"rateLimitType": {
"type": "string"
}
}
},
"RateParams": {
"type": "object",
"required": [
"optimal_utilisation_rate",
"min_borrow_rate",
"optimal_borrow_rate",
"max_borrow_rate"
],
"properties": {
"max_borrow_rate": {
"type": "string",
"format": "decimal"
},
"min_borrow_rate": {
"type": "string",
"format": "decimal"
},
"optimal_borrow_rate": {
"type": "string",
"format": "decimal"
},
"optimal_utilisation_rate": {
"type": "string",
"format": "decimal"
}
}
},
"ReadinessStatus": {
"type": "object",
"description": "readiness response returned by /health/ready",
"required": [
"ready",
"components"
],
"properties": {
"components": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/HealthState"
},
"propertyNames": {
"type": "string"
}
},
"ready": {
"type": "boolean"
}
}
},
"RollupConstants": {
"type": "object",
"description": "Response from the `/rollup/constants` endpoint.",
"required": [
"chain_id",
"chain_name",
"gas_token_id",
"hyperlane_domain",
"address_prefix"
],
"properties": {
"address_prefix": {
"type": "string"
},
"chain_id": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"chain_name": {
"type": "string"
},
"gas_token_id": {
"type": "string"
},
"hyperlane_domain": {
"type": "integer",
"format": "uint64",
"minimum": 0
}
}
},
"SubmitTxRequest": {
"type": "object",
"required": [
"body"
],
"properties": {
"body": {
"type": "string",
"description": "Base64 encoded borsh string"
}
}
},
"SubmitTxResponse": {
"type": "object",
"description": "Response from submitting a transaction.",
"required": [
"id",
"status"
],
"properties": {
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LedgerEvent"
},
"description": "Events emitted by the transaction"
},
"id": {
"type": "string",
"description": "The transaction hash"
},
"receipt": {
"$ref": "#/components/schemas/TxReceipt",
"description": "Transaction receipt (if processed)"
},
"status": {
"$ref": "#/components/schemas/TxStatus",
"description": "Transaction status"
},
"tx_number": {
"type": "integer",
"format": "uint64",
"description": "Transaction number (if processed)",
"minimum": 0
}
}
},
"Symbol": {
"type": "object",
"required": [
"marketId",
"symbol",
"pair",
"contractType",
"deliveryDate",
"onboardDate",
"status",
"baseAsset",
"quoteAsset",
"marginAsset",
"pricePrecision",
"quantityPrecision",
"baseAssetPrecision",
"quotePrecision",
"underlyingType",
"underlyingSubType",
"settlePlan",
"triggerProtect",
"filters",
"orderTypes",
"timeInForce",
"liquidationFee",
"marketTakeBound",
"makerFeeBps",
"takerFeeBps"
],
"properties": {
"baseAsset": {
"type": "string"
},
"baseAssetPrecision": {
"type": "integer",
"format": "uint8",
"minimum": 0
},
"contractType": {
"type": "string"
},
"deliveryDate": {
"type": "integer",
"format": "int64"
},
"filters": {
"type": "array",
"items": {}
},
"liquidationFee": {
"type": "string",
"format": "decimal"
},
"makerFeeBps": {
"type": "array",
"items": {
"type": "string"
}
},
"marginAsset": {
"type": "string"
},
"marketId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"marketTakeBound": {
"type": "string",
"format": "decimal"
},
"onboardDate": {
"type": "integer",
"format": "int64"
},
"orderTypes": {
"type": "array",
"items": {
"type": "string"
}
},
"pair": {
"type": "string"
},
"pricePrecision": {
"type": "integer",
"format": "uint8",
"minimum": 0
},
"quantityPrecision": {
"type": "integer",
"format": "uint8",
"minimum": 0
},
"quoteAsset": {
"type": "string"
},
"quotePrecision": {
"type": "integer",
"format": "uint8",
"minimum": 0
},
"settlePlan": {
"type": "integer",
"format": "int32"
},
"status": {
"type": "string"
},
"symbol": {
"type": "string"
},
"takerFeeBps": {
"type": "array",
"items": {
"type": "string"
}
},
"timeInForce": {
"type": "array",
"items": {
"type": "string"
}
},
"triggerProtect": {
"type": "string",
"format": "decimal"
},
"underlyingSubType": {
"type": "array",
"items": {
"type": "string"
}
},
"underlyingType": {
"type": "string"
}
}
},
"Ticker24hr": {
"type": "object",
"required": [
"symbol",
"priceChange",
"priceChangePercent",
"weightedAvgPrice",
"lastPrice",
"openPrice",
"highPrice",
"lowPrice",
"volume",
"quoteVolume",
"openTime",
"closeTime",
"count"
],
"properties": {
"closeTime": {
"type": "integer",
"format": "int64"
},
"count": {
"type": "integer",
"format": "int64",
"minimum": 0
},
"highPrice": {
"type": "string",
"format": "decimal"
},
"lastPrice": {
"type": "string",
"format": "decimal"
},
"lowPrice": {
"type": "string",
"format": "decimal"
},
"openPrice": {
"type": "string",
"format": "decimal"
},
"openTime": {
"type": "integer",
"format": "int64"
},
"priceChange": {
"type": "string",
"format": "decimal"
},
"priceChangePercent": {
"type": "string",
"format": "decimal"
},
"quoteVolume": {
"type": "string",
"format": "decimal"
},
"symbol": {
"type": "string"
},
"volume": {
"type": "string",
"format": "decimal"
},
"weightedAvgPrice": {
"type": "string",
"format": "decimal"
}
}
},
"TimeResponse": {
"type": "object",
"required": [
"serverTime"
],
"properties": {
"serverTime": {
"type": "integer",
"format": "int64"
}
}
},
"Trade": {
"type": "object",
"required": [
"id",
"price",
"qty",
"quoteQty",
"time",
"isBuyerMaker"
],
"properties": {
"id": {
"type": "integer",
"format": "int64"
},
"isBuyerMaker": {
"type": "boolean"
},
"price": {
"type": "string",
"format": "decimal"
},
"qty": {
"type": "string",
"format": "decimal"
},
"quoteQty": {
"type": "string",
"format": "decimal"
},
"time": {
"type": "integer",
"format": "int64"
}
}
},
"TxReceipt": {
"type": "object",
"description": "Transaction receipt",
"required": [
"result"
],
"properties": {
"result": {
"$ref": "#/components/schemas/TxResult",
"description": "Result of transaction execution"
}
}
},
"TxResult": {
"type": "string",
"description": "Transaction execution result",
"enum": [
"successful",
"reverted",
"skipped"
]
},
"TxStatus": {
"type": "string",
"description": "Transaction status",
"enum": [
"unknown",
"dropped",
"submitted",
"published",
"processed",
"finalized"
]
},
"UserDeposit": {
"type": "object",
"required": [
"asset",
"assetId",
"amount",
"amountNotional",
"txHash",
"eventNumber",
"time"
],
"properties": {
"amount": {
"type": "string",
"format": "decimal"
},
"amountNotional": {
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
},
"UserFundingPayment": {
"type": "object",
"description": "user funding payment history",
"required": [
"symbol",
"marketId",
"fundingApplied",
"txHash",
"eventNumber",
"time"
],
"properties": {
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"fundingApplied": {
"type": "string",
"format": "decimal"
},
"marketId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
},
"UserLiquidation": {
"type": "object",
"required": [
"symbol",
"liquidateeAddress",
"liquidatorAddress",
"marketId",
"markPrice",
"size",
"side",
"liquidatorReward",
"realizedPnl",
"txHash",
"eventNumber",
"time"
],
"properties": {
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"liquidateeAddress": {
"type": "string"
},
"liquidatorAddress": {
"type": "string"
},
"liquidatorReward": {
"type": "string",
"format": "decimal"
},
"markPrice": {
"type": "string",
"format": "decimal"
},
"marketId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"realizedPnl": {
"type": "string",
"format": "decimal"
},
"side": {
"type": "string"
},
"size": {
"type": "string",
"format": "decimal"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
},
"UserTrade": {
"type": "object",
"required": [
"symbol",
"id",
"orderId",
"side",
"price",
"qty",
"quoteQty",
"realizedPnl",
"commission",
"commissionAsset",
"time",
"positionSide",
"buyer",
"maker",
"address",
"txHash"
],
"properties": {
"address": {
"type": "string"
},
"buyer": {
"type": "boolean"
},
"commission": {
"type": "string",
"format": "decimal"
},
"commissionAsset": {
"type": "string"
},
"id": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"maker": {
"type": "boolean"
},
"orderId": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"positionSide": {
"type": "string"
},
"price": {
"type": "string",
"format": "decimal"
},
"qty": {
"type": "string",
"format": "decimal"
},
"quoteQty": {
"type": "string",
"format": "decimal"
},
"realizedPnl": {
"type": "string",
"format": "decimal"
},
"side": {
"type": "string"
},
"symbol": {
"type": "string"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
},
"UserWithdrawal": {
"type": "object",
"required": [
"asset",
"assetId",
"amount",
"amountNotional",
"fee",
"txHash",
"eventNumber",
"time"
],
"properties": {
"amount": {
"type": "string",
"format": "decimal"
},
"amountNotional": {
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"assetId": {
"type": "integer",
"format": "uint16",
"minimum": 0
},
"eventNumber": {
"type": "integer",
"format": "uint64",
"minimum": 0
},
"fee": {
"type": "string",
"format": "decimal"
},
"time": {
"type": "integer",
"format": "int64"
},
"txHash": {
"type": "string"
}
}
}
}
}
}