{ "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": { "/api/v1/accountConfig": { "get": { "tags": [ "Account" ], "summary": "Account Configuration (Bullet-specific)", "operationId": "account_config", "parameters": [ { "name": "address", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Account configuration", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountConfig" } } } }, "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" } } } } } } }, "/api/v1/addressState": { "get": { "tags": [ "Address" ], "summary": "Per-credential on-chain state used by clients when constructing txs.", "operationId": "address_state", "parameters": [ { "name": "address", "in": "query", "description": "signing credential address (base58)", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Address state", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AddressState" } } } }, "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" } } } } } } }, "/api/v1/balance": { "get": { "tags": [ "Account" ], "summary": "Account Balance (Bullet-specific)", "description": "Superset of `/fapi/v3/balance` that surfaces data the rollup already\nreturns but the Binance-shaped endpoint doesn't expose:\naccount-level trading credits / unrealized loss borrow, per-asset\ngross asset/liability amounts, and referral rewards.", "operationId": "account_balance_bullet", "parameters": [ { "name": "address", "in": "query", "required": true, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Account balance", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/AccountBalance" } } } }, "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" } } } } } } }, "/api/v1/solanaOffchainTx": { "post": { "summary": "Submit a Solana off-chain signed transaction to the rollup.", "description": "Accepts the JSON envelope produced by the SDK's `solana` / `solanaSimple`\nauthenticator (Phantom, Solflare, Ledger), where the body is signed with\na Solana off-chain message signature rather than a Sovereign credential.\nThe rollup verifies the signature and constructs the inner tx; this route\nis a pass-through proxy and intentionally skips the borsh tx validator.", "operationId": "submit_solana_offchain_tx", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitSolanaOffchainTxRequest" } } }, "required": true }, "responses": { "200": { "description": "Transaction submitted successfully", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SubmitTxResponse" } } } }, "400": { "description": "Invalid request body, envelope, or chain_hash mismatch", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "401": { "description": "Invalid Solana signature", "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 (chain_hash not loaded)", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } } } } }, "/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/fundingInfo": { "get": { "tags": [ "Market-Data" ], "summary": "Funding rate metadata (caps, intervals) per symbol", "operationId": "funding_info", "parameters": [ { "name": "symbol", "in": "query", "description": "Symbol", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Funding info", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/FundingInfo" } } } } }, "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/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": { "type": "array", "items": { "$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": { "$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": "triggerOrderId", "in": "query", "description": "look up a user trigger order (STOP / TAKE_PROFIT) by its\nTriggerOrderId. mutually exclusive with `orderId` /\n`clientOrderId` — trigger orders use an independent id counter\nfrom regular orders in the rollup", "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 — optional, omit to return open orders across all markets", "required": false, "schema": { "type": [ "string", "null" ] } }, { "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/premiumIndex": { "get": { "tags": [ "Market-Data" ], "summary": "Mark price, index price, and estimated funding rate per symbol", "operationId": "premium_index", "parameters": [ { "name": "symbol", "in": "query", "description": "Symbol", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "Premium index", "content": { "application/json": { "schema": { "type": "array", "items": { "$ref": "#/components/schemas/PremiumIndex" } } } } }, "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/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" } } } } } } }, "/rollup/simulate": { "post": { "summary": "Simulate a transaction against the current rollup state without committing.", "description": "Pass-through proxy to the sequencer's `/rollup/simulate`. The body is a JSON\n`SimulateParameters` document (runtime `call` + `sender`), NOT a signed borsh\ntx, so this route intentionally skips the tx validators and forwards the\nrequest unchanged — mirroring the rest of the `/rollup/*` passthrough.", "operationId": "simulate", "requestBody": { "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulateParameters" } } }, "required": true }, "responses": { "200": { "description": "Simulation completed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/SimulateOutcome" } } } }, "400": { "description": "Invalid simulation request", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "422": { "description": "Simulation request failed validation", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "500": { "description": "Simulation failed", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/ApiErrorResponse" } } } }, "502": { "description": "Upstream 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", "feeTier", "feeDiscountBps", "assets", "positions" ], "properties": { "assets": { "type": "array", "items": { "$ref": "#/components/schemas/AccountAsset" } }, "availableBalance": { "type": "string", "format": "decimal" }, "feeDiscountBps": { "type": "integer", "format": "int32", "minimum": 0 }, "feeTier": { "type": "integer", "format": "int32", "minimum": 0 }, "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" } } }, "AccountBalance": { "type": "object", "required": [ "account", "assets", "rewards" ], "properties": { "account": { "$ref": "#/components/schemas/AccountBalanceSummary" }, "assets": { "type": "array", "items": { "$ref": "#/components/schemas/AssetBalance" } }, "rewards": { "type": "array", "items": { "$ref": "#/components/schemas/AssetReward" } } } }, "AccountBalanceSummary": { "type": "object", "required": [ "tradingCredits", "unrealizedLossBorrow" ], "properties": { "tradingCredits": { "type": "string", "format": "decimal" }, "unrealizedLossBorrow": { "type": "string", "format": "decimal" } } }, "AccountConfig": { "type": "object", "required": [ "delegates" ], "properties": { "delegates": { "type": "array", "items": { "$ref": "#/components/schemas/Delegate" } } } }, "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" } } }, "AddressState": { "type": "object", "required": [ "address" ], "properties": { "address": { "type": "string", "description": "the queried address, echoed back as supplied" }, "generation": { "type": [ "integer", "null" ], "format": "uint64", "description": "highest uniqueness generation this credential has submitted with,\nor null if it has never submitted a tx. clients use this to seed a\nmonotonic generation override so the next tx doesn't collide", "minimum": 0 } } }, "ApiErrorDetail": { "oneOf": [ { "$ref": "#/components/schemas/JsonValidationErrorDetail" }, { "type": "object" } ], "description": "Typed details body. Variant order is important for untagged\ndeserialization: keep the more-specific shape (`JsonValidation`)\nbefore more-permissive ones. `Upstream` holds the upstream payload\nverbatim (object, string, array, number, etc.) so pre-PR clients\nreading `details.error` (or `details` directly) keep working." }, "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": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/ApiErrorDetail", "description": "Structured per-failure details. Shape depends on the variant." } ] }, "error_id": { "type": [ "string", "null" ], "description": "Error identifier for support.", "example": "8b2e4d9f-7a1c-4f0e-9c5d-3e6a8b1c2d4f" }, "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", "withdrawFee" ], "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" ] }, "userDepositLimit": { "type": "string", "format": "decimal" }, "withdrawFee": { "type": "string", "format": "decimal" } } }, "AssetBalance": { "type": "object", "required": [ "asset", "assetId", "balance", "assetAmount", "liabilityAmount", "maxWithdrawAmount", "updateTime" ], "properties": { "asset": { "type": "string" }, "assetAmount": { "type": "string", "format": "decimal" }, "assetId": { "type": "integer", "format": "uint16", "minimum": 0 }, "balance": { "type": "string", "format": "decimal" }, "liabilityAmount": { "type": "string", "format": "decimal" }, "maxWithdrawAmount": { "type": "string", "format": "decimal" }, "updateTime": { "type": "integer", "format": "int64" } } }, "AssetReward": { "type": "object", "required": [ "asset", "assetId", "variant", "cumulativeAmount", "claimedAmount", "unclaimedAmount" ], "properties": { "asset": { "type": "string" }, "assetId": { "type": "integer", "format": "uint16", "minimum": 0 }, "claimedAmount": { "type": "string", "format": "decimal" }, "cumulativeAmount": { "type": "string", "format": "decimal" }, "unclaimedAmount": { "type": "string", "format": "decimal" }, "variant": { "type": "string" } } }, "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", "marketId", "status", "price", "avgPrice", "origQty", "executedQty", "cumQty", "cumQuote", "timeInForce", "orderType", "reduceOnly", "closePosition", "side", "positionSide", "workingType", "priceProtect", "origType", "priceMatch", "selfTradePreventionMode", "goodTillDate", "updateTime", "isTrigger" ], "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 }, "isTrigger": { "type": "boolean", "description": "bullet extension: true when this row is a user trigger order\n(STOP / TAKE_PROFIT). `orderId` for triggers is drawn from the\n`TriggerOrderId` namespace, which is independent of the regular\n`OrderId` counter — use `(orderId, isTrigger)` as the composite key" }, "marketId": { "type": "integer", "format": "uint16", "minimum": 0 }, "orderId": { "type": "integer", "format": "uint64", "minimum": 0 }, "orderType": { "type": "string", "description": "one of: `LIMIT`, `STOP`, `TAKE_PROFIT`" }, "origQty": { "type": "string", "format": "decimal" }, "origType": { "type": "string", "description": "same as `orderType`" }, "pendingTpsl": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/PendingTpsl", "description": "reserved TP/SL pair attached to this parent limit order. only present\nwhile the parent is unfilled — once filled, the trigger orders are\nactivated and listed independently" } ] }, "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", "description": "one of: NEW, PARTIALLY_FILLED, FILLED" }, "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 } } }, "Delegate": { "type": "object", "required": [ "address", "name", "flags" ], "properties": { "address": { "type": "string" }, "expiresAt": { "type": [ "integer", "null" ], "format": "int64" }, "flags": { "type": "integer", "format": "int32", "minimum": 0 }, "name": { "type": "string" } } }, "ExchangeInfo": { "type": "object", "required": [ "rateLimits", "assets", "symbols", "globalConfig" ], "properties": { "assets": { "type": "array", "items": { "$ref": "#/components/schemas/Asset" } }, "chainHash": { "type": [ "string", "null" ] }, "chainInfo": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/ChainInfo" } ] }, "globalConfig": { "$ref": "#/components/schemas/GlobalConfigResponse" }, "rateLimits": { "type": "array", "items": { "$ref": "#/components/schemas/RateLimit" } }, "symbols": { "type": "array", "items": { "$ref": "#/components/schemas/Symbol" } } } }, "FundingInfo": { "type": "object", "description": "funding rate metadata per symbol", "required": [ "symbol", "adjustedFundingRateCap", "adjustedFundingRateFloor", "fundingIntervalHours" ], "properties": { "adjustedFundingRateCap": { "type": "string", "format": "decimal" }, "adjustedFundingRateFloor": { "type": "string", "format": "decimal" }, "fundingIntervalHours": { "type": "integer", "format": "int32", "minimum": 0 }, "symbol": { "type": "string" } } }, "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" } } }, "GlobalConfigResponse": { "type": "object", "required": [ "maxOrdersPerUser", "maxTriggerOrdersPerUser", "maxTriggerOrdersToExecutePerMsg", "minNotionalTwapValue", "minNotionalTwapValuePerOrder", "twapExecutionIntervalSeconds" ], "properties": { "maxOrdersPerUser": { "type": "integer", "format": "uint16", "minimum": 0 }, "maxTriggerOrdersPerUser": { "type": "integer", "format": "uint16", "minimum": 0 }, "maxTriggerOrdersToExecutePerMsg": { "type": "integer", "format": "uint16", "minimum": 0 }, "minNotionalTwapValue": { "type": "string", "format": "decimal" }, "minNotionalTwapValuePerOrder": { "type": "string", "format": "decimal" }, "twapExecutionIntervalSeconds": { "type": "integer", "format": "uint64", "minimum": 0 } } }, "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", "description": "one of: NEW, PARTIALLY_FILLED, FILLED, CANCELED, EXPIRED" }, "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" } } } }, "JsonValidationErrorDetail": { "type": "object", "description": "One JSON shape failure: machine-readable `rule` + full serde\nmessage including line/column. Surfaced under `details` on the wire.", "required": [ "rule", "message" ], "properties": { "message": { "type": "string", "example": "invalid type: integer `24500000`, expected a string at line 4 column 30" }, "rule": { "type": "string", "example": "wrong_type" } } }, "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", "description": "one of: NEW, PARTIALLY_FILLED, FILLED, CANCELED, EXPIRED" }, "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" }, "clientOrderId": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0 }, "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" ] } } }, "PendingTpsl": { "type": "object", "required": [ "dynamicSize" ], "properties": { "dynamicSize": { "type": "boolean", "description": "if true, the activated trigger orders track the parent's filled size;\notherwise they use the size baked in at placement" }, "sl": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/TpslLeg" } ] }, "tp": { "oneOf": [ { "type": "null" }, { "$ref": "#/components/schemas/TpslLeg" } ] } } }, "PingResponse": { "type": "object" }, "PremiumIndex": { "type": "object", "description": "real-time mark price, index price, and estimated funding rate per symbol", "required": [ "symbol", "markPrice", "indexPrice", "lastFundingRate", "interestRate", "estimatedFundingRate", "nextFundingTime", "time" ], "properties": { "estimatedFundingRate": { "type": "string", "format": "decimal", "description": "pre-computed estimated 1h funding rate (8h rate ÷ 8) from current premium index accumulator" }, "indexPrice": { "type": "string", "format": "decimal" }, "interestRate": { "type": "string", "format": "decimal" }, "lastFundingRate": { "type": "string", "format": "decimal", "description": "funding rate for 8h period" }, "markPrice": { "type": "string", "format": "decimal" }, "nextFundingTime": { "type": "integer", "format": "int64", "description": "unix timestamp ms of next hourly funding settlement" }, "symbol": { "type": "string" }, "time": { "type": "integer", "format": "int64", "description": "server time unix ms" } } }, "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 } } }, "SubmitSolanaOffchainTxRequest": { "type": "object", "description": "Body for a Solana off-chain signed transaction.\n\nProduced by the bullet SDK's `solana` / `solanaSimple` authenticators\n(Phantom, Solflare, Ledger). The inner bytes are a Solana off-chain\nsigned message, NOT a borsh-serialized Sovereign tx.", "required": [ "body" ], "properties": { "body": { "type": "string", "description": "Base64-encoded Solana off-chain signed message envelope" } } }, "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", "baseAssetId", "quoteAsset", "marginAsset", "pricePrecision", "quantityPrecision", "baseAssetPrecision", "quotePrecision", "underlyingType", "underlyingSubType", "settlePlan", "triggerProtect", "filters", "orderTypes", "timeInForce", "liquidationFee", "marketTakeBound", "makerFeeBps", "takerFeeBps" ], "properties": { "baseAsset": { "type": "string" }, "baseAssetId": { "type": "integer", "format": "uint16", "minimum": 0 }, "baseAssetPrecision": { "type": "integer", "format": "uint8", "minimum": 0 }, "contractType": { "type": "string" }, "deliveryDate": { "type": "integer", "format": "int64" }, "filters": { "type": "array", "items": { "$ref": "#/components/schemas/Filter" } }, "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" } } }, "TpslLeg": { "type": "object", "required": [ "triggerOrderId", "orderPrice", "triggerPrice", "priceCondition", "orderType", "timeInForce" ], "properties": { "orderPrice": { "type": "string", "format": "decimal" }, "orderType": { "type": "string", "description": "LIMIT (bullet's TPSL legs are always limit orders — see `time_in_force`\nfor the actual TIF behaviour)" }, "priceCondition": { "type": "string", "description": "MARK_PRICE | ORACLE_PRICE | LAST_PRICE" }, "timeInForce": { "type": "string", "description": "GTC | GTX (post-only) | FOK | IOC — matches the parent BinanceOrder's\n`timeInForce` shape" }, "triggerOrderId": { "type": "integer", "format": "uint64", "description": "the reserved TriggerOrderId this leg will activate as", "minimum": 0 }, "triggerPrice": { "type": "string", "format": "decimal" } } }, "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" }, "clientOrderId": { "type": [ "integer", "null" ], "format": "uint64", "minimum": 0 }, "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" } } }, "SimulateParameters": { "type": "object", "description": "Parameters for a transaction simulation request.\n\nMirrors the sequencer's `SimulateParameters`. Documentation-only: like\n`/tx/submit`, the handler forwards the raw body, so this type is not\ndeserialized in-process.", "required": [ "sender", "call" ], "properties": { "call": { "type": "object", "description": "The runtime call to simulate, provided as JSON" }, "sender": { "type": "string", "description": "The credential ID of the transaction sender" }, "sequencer": { "$ref": "#/components/schemas/SequencerParameter", "description": "Optional sequencer configuration" }, "tx_details": { "$ref": "#/components/schemas/TxDetailsParameter", "description": "Optional transaction details (gas limit, fees)" }, "uniqueness": { "type": "object", "description": "Optional uniqueness data for the transaction" } } }, "SimulateOutcome": { "oneOf": [ { "allOf": [ { "$ref": "#/components/schemas/SuccessOutcome", "description": "The transaction executed successfully." }, { "type": "object", "required": [ "outcome" ], "properties": { "outcome": { "type": "string", "enum": [ "success" ] } } } ], "description": "The transaction executed successfully." }, { "allOf": [ { "$ref": "#/components/schemas/RevertOutcome", "description": "The transaction reverted during execution." }, { "type": "object", "required": [ "outcome" ], "properties": { "outcome": { "type": "string", "enum": [ "reverted" ] } } } ], "description": "The transaction reverted during execution." }, { "allOf": [ { "$ref": "#/components/schemas/FailOutcome", "description": "The transaction was skipped due to pre-execution errors." }, { "type": "object", "required": [ "outcome" ], "properties": { "outcome": { "type": "string", "enum": [ "skipped" ] } } } ], "description": "The transaction was skipped due to pre-execution errors." } ], "description": "Outcome of a transaction simulation.\n\nDiscriminated on `outcome`, mirroring the sequencer's `SimulateOutcome`\n(`sov-rollup-apis`): `success` / `reverted` / `skipped`." }, "SuccessOutcome": { "type": "object", "description": "Successful simulation outcome.", "required": [ "gas_used", "priority_fee", "events" ], "properties": { "events": { "type": "array", "items": { "$ref": "#/components/schemas/SimulatedEvent" }, "description": "Events emitted during execution" }, "gas_used": { "type": "string", "description": "Gas consumed by the transaction (gas-token amount, as a decimal string)" }, "priority_fee": { "type": "string", "description": "Priority fee paid (gas-token amount, as a decimal string)" } } }, "RevertOutcome": { "type": "object", "description": "Reverted simulation outcome.", "required": [ "detail" ], "properties": { "detail": { "type": "object", "description": "Structured detail about the revert (`ErrorContext`, an arbitrary JSON object)" } } }, "FailOutcome": { "type": "object", "description": "Skipped simulation outcome.", "required": [ "reason" ], "properties": { "reason": { "type": "string", "description": "The reason the transaction was skipped" } } }, "SimulatedEvent": { "type": "object", "description": "An event emitted during transaction simulation.", "required": [ "value", "key", "module" ], "properties": { "key": { "type": "string", "description": "The event key" }, "module": { "type": "string", "description": "The module that emitted the event" }, "value": { "type": "object", "description": "The event data (arbitrary JSON)" } } }, "SequencerParameter": { "type": "object", "description": "Optional sequencer configuration for a simulation request.", "properties": { "da_address": { "type": "string", "description": "Custom data availability address for the sequencer" }, "rollup_address": { "type": "string", "description": "Custom rollup address for the sequencer" } } }, "TxDetailsParameter": { "type": "object", "description": "Optional transaction details for a simulation request.", "properties": { "gas_limit": { "type": "array", "items": { "type": "integer", "format": "int64", "minimum": 0 }, "description": "Gas limit for the transaction, as an array of u64 values" }, "max_fee": { "type": "string", "description": "Maximum fee the sender is willing to pay" }, "max_priority_fee_bips": { "type": "integer", "format": "uint64", "description": "Maximum priority fee in basis points", "minimum": 0 } } }, "Filter": { "oneOf": [ { "type": "object", "required": [ "tickSize", "minPrice", "maxPrice", "filterType" ], "properties": { "filterType": { "type": "string", "enum": [ "PRICE_FILTER" ] }, "maxPrice": { "type": "string", "format": "decimal" }, "minPrice": { "type": "string", "format": "decimal" }, "tickSize": { "type": "string", "format": "decimal" } } }, { "type": "object", "required": [ "stepSize", "minQty", "maxQty", "filterType" ], "properties": { "filterType": { "type": "string", "enum": [ "LOT_SIZE" ] }, "maxQty": { "type": "string", "format": "decimal" }, "minQty": { "type": "string", "format": "decimal" }, "stepSize": { "type": "string", "format": "decimal" } } }, { "type": "object", "required": [ "limit", "filterType" ], "properties": { "filterType": { "type": "string", "enum": [ "MAX_NUM_ORDERS" ] }, "limit": { "type": "integer", "format": "uint16", "minimum": 0 } } }, { "type": "object", "required": [ "limit", "filterType" ], "properties": { "filterType": { "type": "string", "enum": [ "MAX_NUM_ALGO_ORDERS" ] }, "limit": { "type": "integer", "format": "uint16", "minimum": 0 } } }, { "type": "object", "required": [ "multiplierUp", "multiplierDown", "multiplierDecimal", "filterType" ], "properties": { "filterType": { "type": "string", "enum": [ "PERCENT_PRICE" ] }, "multiplierDecimal": { "type": "string" }, "multiplierDown": { "type": "string", "format": "decimal" }, "multiplierUp": { "type": "string", "format": "decimal" } } } ] } } } }