{
"openapi": "3.1.0",
"info": {
"title": "Derive v3 API",
"version": "0.2.0",
"description": "JSON-RPC 2.0 methods, served over WebSocket and HTTP POST."
},
"servers": [
{
"url": "https://api.derive.xyz/v3",
"description": "Production (HTTP POST base)"
},
{
"url": "https://testnet.api.derive.xyz/v3",
"description": "Testnet (HTTP POST base)"
}
],
"tags": [
{
"name": "Subaccounts",
"description": "List, inspect, and label subaccounts, portfolios, positions, and collateral."
},
{
"name": "Session Keys",
"description": "Register, edit, and list delegated signing keys."
},
{
"name": "Account",
"description": "Wallet-level account information and settings."
},
{
"name": "Orderbook",
"description": "Place, replace, cancel, and query orders, trigger orders, and algos."
},
{
"name": "RFQ",
"description": "Request-for-quote: send RFQs, quote, and execute block trades."
},
{
"name": "Vault Shareholders",
"description": "Deposit into and withdraw from vaults, and track shares, requests, and performance."
},
{
"name": "Vault Curators",
"description": "Create and operate curated vaults: settle deposit and withdrawal requests, and manage vault metadata."
},
{
"name": "History",
"description": "Per-account historical records: orders, trades, transfers, and settlements."
},
{
"name": "Market Maker Protection",
"description": "Configure, read, and reset market-maker protection."
},
{
"name": "Transfers & Withdrawals",
"description": "Move collateral between subaccounts, to other wallets, and on-chain."
},
{
"name": "Onchain Actions",
"description": "L1 onchain actions submitted via OnchainActionManager: register deposit addresses, list pending deposits, and inspect onchain action history."
},
{
"name": "System",
"description": "Rate limits and transaction lookups."
},
{
"name": "Market Data",
"description": "Instruments, currencies, tickers, and market-wide feeds."
},
{
"name": "Referrals",
"description": "Referral codes and program performance."
},
{
"name": "Other",
"description": "Uncategorized."
}
],
"paths": {
"/private/change_subaccount_label": {
"post": {
"tags": [
"Subaccounts"
],
"summary": "private/change_subaccount_label",
"operationId": "private_change_subaccount_label",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateChangeSubaccountLabelResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Updates the human-readable label for a subaccount. The label must be at most 16 characters, otherwise an invalid-params error is returned. Requires a signed session key with account-info scope; on success it echoes back the subaccount ID and the new label.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ChangeSubaccountLabelRequest"
}
}
}
}
}
},
"/private/get_all_portfolios": {
"post": {
"tags": [
"Subaccounts"
],
"summary": "private/get_all_portfolios",
"operationId": "private_get_all_portfolios",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Subaccount"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the complete portfolio (same shape as get_subaccount) for every subaccount owned by the given wallet, including valuations, margin figures, open orders, positions, and collaterals. If an individual subaccount's portfolio cannot be built, it is returned as a placeholder entry with failed_to_fetch set to true rather than failing the whole request.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllPortfoliosRequest"
}
}
}
}
}
},
"/private/get_collaterals": {
"post": {
"tags": [
"Subaccounts"
],
"summary": "private/get_collaterals",
"operationId": "private_get_collaterals",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateGetCollateralsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the subaccount ID and the list of its collateral balances, including each asset's amount and current value valued against live feed data. A lighter alternative to get_subaccount when only collateral holdings are needed.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetCollateralsRequest"
}
}
}
}
}
},
"/private/get_positions": {
"post": {
"tags": [
"Subaccounts"
],
"summary": "private/get_positions",
"operationId": "private_get_positions",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateGetPositionsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the subaccount ID and the list of its active positions, including size, mark price, average price, unrealized and realized PnL, and Greeks where applicable, valued against live feed data at request time. A lighter alternative to get_subaccount when only positions are needed.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPositionsRequest"
}
}
}
}
}
},
"/private/get_subaccount": {
"post": {
"tags": [
"Subaccounts"
],
"summary": "private/get_subaccount",
"operationId": "private_get_subaccount",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Subaccount"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the complete portfolio for a single subaccount: its label, manager and risk-universe identifiers, margin type and liquidation status, aggregate valuation and margin figures (positions, collaterals, initial and maintenance margin, open-order margin) as decimal strings, plus the full lists of open orders, positions, and collateral balances. Margin, mark price, and Greek values are computed from live feed data at request time.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSubaccountRequest"
}
}
}
}
}
},
"/private/get_subaccounts": {
"post": {
"tags": [
"Subaccounts"
],
"summary": "private/get_subaccounts",
"operationId": "private_get_subaccounts",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateGetSubaccountsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the wallet address and the sorted list of subaccount IDs owned by that wallet. Yields an empty list if the wallet has no subaccounts.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetSubaccountsRequest"
}
}
}
}
}
},
"/private/edit_session_key": {
"post": {
"tags": [
"Session Keys"
],
"summary": "private/edit_session_key",
"operationId": "private_edit_session_key",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SessionKey"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Updates an existing session key's label, IP allowlist, and/or off-chain scopes for a given wallet; it cannot change on-chain (protocol) scopes, for which you must re-register with private/set_session_key. Editing only the label needs account-info permission, while changing the IP allowlist or off-chain scopes requires admin/owner authorization. Returns the updated session key details.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EditSessionKeyRequest"
}
}
}
}
}
},
"/private/session_keys": {
"post": {
"tags": [
"Session Keys"
],
"summary": "private/session_keys",
"operationId": "private_session_keys",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateSessionKeysResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns every session key registered to the given wallet, including expired and not-yet-activated keys, each with its public address, scopes, expiry, label, IP allowlist, and permitted subaccounts.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SessionKeysRequest"
}
}
}
}
}
},
"/public/get_wallets_from_session_key": {
"post": {
"tags": [
"Session Keys"
],
"summary": "public/get_wallets_from_session_key",
"operationId": "public_get_wallets_from_session_key",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicGetWalletsFromSessionKeyResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Public lookup that returns the wallet addresses a given session key is registered to, sorted by expiry, with expired keys omitted. An optional scope filter narrows results to keys holding that off-chain scope; returns an error if no matching, unexpired keys exist.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetWalletsFromSessionKeyRequest"
}
}
}
}
}
},
"/private/get_account": {
"post": {
"tags": [
"Account"
],
"summary": "private/get_account",
"operationId": "private_get_account",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateGetAccountResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns account-level information for a given wallet address: the list of its subaccount IDs, WebSocket rate limits (matching, non-matching, perp, and option messages per second) and any per-endpoint overrides, cancel-on-disconnect and RFQ-maker flags, the account creation timestamp, and a fee_info block with fee discounts and per-instrument maker/taker fee overrides expressed as decimals. Returns an account-not-found error if the wallet has never been registered.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAccountRequest"
}
}
}
}
}
},
"/private/cancel": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel",
"operationId": "private_cancel",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels one resting order identified by order_id, subaccount_id and instrument_name. Requires any trade scope on the session; returns the cancelled order with its final status.",
"x-rate-limit-class": "matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelOrderRequest"
}
}
}
}
}
},
"/private/cancel_algo_order": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_algo_order",
"operationId": "private_cancel_algo_order",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels a single active algo order identified by order_id and subaccount_id, stopping any further child-order execution. Requires any trade scope; returns the cancelled order.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAlgoOrderRequest"
}
}
}
}
}
},
"/private/cancel_all": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_all",
"operationId": "private_cancel_all",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAllResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels every open order on the given subaccount. Optional cancel_trigger_orders and cancel_algo_orders flags additionally clear the subaccount's trigger and algo orders in the same call. Requires any trade scope; returns \"ok\" on success.",
"x-rate-limit-class": "endpoint",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAllRequest"
}
}
}
}
}
},
"/private/cancel_all_algo_orders": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_all_algo_orders",
"operationId": "private_cancel_all_algo_orders",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAllAlgoOrdersResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels every active algo order on the given subaccount. Requires any trade scope; returns \"ok\" on success.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAllAlgoOrdersRequest"
}
}
}
}
}
},
"/private/cancel_all_trigger_orders": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_all_trigger_orders",
"operationId": "private_cancel_all_trigger_orders",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAllTriggerOrdersResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels every pending trigger order on the given subaccount. Requires any trade scope; returns \"ok\" on success.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelAllTriggerOrdersRequest"
}
}
}
}
}
},
"/private/cancel_by_instrument": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_by_instrument",
"operationId": "private_cancel_by_instrument",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelByInstrumentResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels every open order for a subaccount on a single instrument. Requires any trade scope; returns the number of orders cancelled.",
"x-rate-limit-class": "matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelByInstrumentRequest"
}
}
}
}
}
},
"/private/cancel_by_label": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_by_label",
"operationId": "private_cancel_by_label",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelByLabelResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels a subaccount's open orders that carry the given client label, optionally scoped to a single instrument_name. When an instrument is supplied the call is acknowledged with the number of orders cancelled; without one it runs as a bulk fire-and-forget cancel and returns a -1 sentinel count. Requires any trade scope.",
"x-rate-limit-class": "custom",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelByLabelRequest"
}
}
}
}
}
},
"/private/cancel_by_nonce": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_by_nonce",
"operationId": "private_cancel_by_nonce",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelByNonceResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels a single order identified by its signing nonce, instrument_name and subaccount_id. The owning wallet is taken from the authenticated session rather than the request. Requires any trade scope; returns the cancelled order.",
"x-rate-limit-class": "matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelByNonceRequest"
}
}
}
}
}
},
"/private/cancel_trigger_order": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/cancel_trigger_order",
"operationId": "private_cancel_trigger_order",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels a single pending trigger order identified by order_id and subaccount_id. Requires any trade scope; returns the cancelled order.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelTriggerOrderRequest"
}
}
}
}
}
},
"/private/get_algo_orders": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/get_algo_orders",
"operationId": "private_get_algo_orders",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Order"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns all active algo orders (e.g. time-sliced execution orders) for the given subaccount as a flat list. Read-only query.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAlgoOrdersRequest"
}
}
}
}
}
},
"/private/get_open_orders": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/get_open_orders",
"operationId": "private_get_open_orders",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AggregatedOrdersResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns all currently open orders for the given subaccount, including each order's instrument, direction, prices, amounts and status. Only orders resting on the order book are returned: pending trigger orders that have not yet fired are available from get_trigger_orders, and active algo orders from get_algo_orders. Once a trigger order fires, the resulting order appears here if it rests on the book rather than filling immediately; algo orders execute as IOC slices and so never rest here. Read-only query.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOpenOrdersRequest"
}
}
}
}
}
},
"/private/get_order": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/get_order",
"operationId": "private_get_order",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Order"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns one order (active or completed) by order_id and subaccount_id; the subaccount filter enforces ownership. Returns the order or an order-does-not-exist error.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrderRequest"
}
}
}
}
}
},
"/private/get_trigger_orders": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/get_trigger_orders",
"operationId": "private_get_trigger_orders",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/AggregatedTriggerOrdersResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns all pending trigger (conditional) orders for the given subaccount that have not yet fired. Read-only query.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTriggerOrdersRequest"
}
}
}
}
}
},
"/private/order": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/order",
"operationId": "private_order",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderCreatedResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed limit or market order for a subaccount, specifying instrument, direction, amount, limit price and max fee, plus optional flags like time-in-force, reduce-only, post-only and MMP. The same endpoint also creates trigger orders (via trigger_type/trigger_price) and algo orders (via algo_type), though the two cannot be combined in one request. Requires a signed order payload and Orderbook trade scope for the instrument's asset; returns the created order with its assigned id and current status.",
"x-rate-limit-class": "matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrderRequest"
}
}
}
}
}
},
"/private/order_debug": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/order_debug",
"operationId": "private_order_debug",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderDebugResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Takes the same params as private/order and rebuilds the order Action without executing anything, returning the EIP-712 encoded_data, encoded_data_hashed, action_hash, typed_data_hash, domain_separator, action_typehash, module, owner and expected_signer, plus the decoded order action data. Byte-compare these against your local computation to find why a signature is rejected. Requires a logged-in session; no trade scope needed.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateOrderRequest"
}
}
}
}
}
},
"/private/order_quote": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/order_quote",
"operationId": "private_order_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderQuoteResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Dry-run pricing helper that estimates the outcome of a prospective order without placing it, returning projected fill price and amount, fees, pre/post initial margin, realized PnL, resulting order status and (where relevant) liquidation price and max tradable amount. All monetary values are returned as decimal strings. The private variant requires account-level authentication.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderQuoteRequest"
}
}
}
}
}
},
"/private/replace": {
"post": {
"tags": [
"Orderbook"
],
"summary": "private/replace",
"operationId": "private_replace",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReplaceOrderResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Atomically cancels a resting order (identified by order_id_to_cancel or nonce_to_cancel) and submits a replacement order in a single request. The payload is a full new-order specification plus the cancel target and an optional expected_filled_amount guard. Requires a signed order payload and Orderbook trade scope; returns both the cancelled and the newly created order.",
"x-rate-limit-class": "matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReplaceOrderRequest"
}
}
}
}
}
},
"/public/order_quote": {
"post": {
"tags": [
"Orderbook"
],
"summary": "public/order_quote",
"operationId": "public_order_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderQuoteResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Public dry-run variant of order_quote that estimates fill price, fees, margin impact, projected order status and realized PnL for a prospective order without placing it, returning all values as decimal strings. Unlike private/order_quote it bypasses session scope checks, so it can be used to preview costs without account authentication.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OrderQuoteRequest"
}
}
}
}
}
},
"/private/cancel_batch_quotes": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/cancel_batch_quotes",
"operationId": "private_cancel_batch_quotes",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelBatchResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels all open quotes on a subaccount that match the supplied filters (any combination of quote_id, rfq_id, label, and nonce, applied together) in a single atomic operation. Omitting the optional filters targets all of the subaccount's open quotes. Returns the list of cancelled quote ids. Requires an RFQ trade scope.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelBatchQuotesRequest"
}
}
}
}
}
},
"/private/cancel_batch_rfqs": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/cancel_batch_rfqs",
"operationId": "private_cancel_batch_rfqs",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelBatchRfqsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels all open RFQs on a subaccount that match the supplied filters (any combination of rfq_id, label, and nonce, applied together), cascade-cancelling their quotes. Omitting the optional filters targets all of the subaccount's open RFQs. Returns the set of cancelled RFQs. Requires an RFQ trade scope.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelBatchRfqsRequest"
}
}
}
}
}
},
"/private/cancel_quote": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/cancel_quote",
"operationId": "private_cancel_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Quote"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels one open quote owned by the subaccount, identified by quote_id (optionally further constrained by rfq_id, label, or nonce). Returns the cancelled quote, or a quote-not-found error if it does not exist or is no longer open. Requires an RFQ trade scope.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelQuoteRequest"
}
}
}
}
}
},
"/private/cancel_rfq": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/cancel_rfq",
"operationId": "private_cancel_rfq",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelRfqResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Cancels one open RFQ owned by the given subaccount and cascade-cancels any quotes makers have submitted against it, notifying those makers. Identify the RFQ by its rfq_id. Returns \"ok\" on success. Requires an RFQ trade scope.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelRfqRequest"
}
}
}
}
}
},
"/private/execute_quote": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/execute_quote",
"operationId": "private_execute_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuoteExecuteResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Taker-side call that accepts a specific maker quote and settles the trade atomically. You reference the rfq_id and quote_id and supply the taker's priced legs, direction, max fee, and EIP-712 signature (signer, signature, nonce, expiry), with an optional taker-protection flag. The signature is verified and the taker fill, maker quote, and RFQ are updated together in one atomic step. Requires trade scope for every instrument in the legs.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ExecuteQuoteRequest"
}
}
}
}
}
},
"/private/get_quotes": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/get_quotes",
"operationId": "private_get_quotes",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuoteGetResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated, merged view of a subaccount's quotes, combining currently open quotes with the archived history of filled, cancelled, and expired ones. Supports filtering by quote_id, rfq_id, status, and a from/to timestamp window, with page and page_size controls. Each entry includes priced legs, direction, fees, liquidity role, and fill percentage.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetQuotesRequest"
}
}
}
}
}
},
"/private/get_rfqs": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/get_rfqs",
"operationId": "private_get_rfqs",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RFQGetResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated, merged view of a subaccount's RFQs, combining currently open RFQs with the archived history of filled, cancelled, and expired ones. Supports filtering by rfq_id, status, and a from/to timestamp window, with page and page_size controls. Each entry includes legs, status, timestamps, cost bounds, and fill percentage.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetRfqsRequest"
}
}
}
}
}
},
"/private/poll_quotes": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/poll_quotes",
"operationId": "private_poll_quotes",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuotePollResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Taker-side call that lists the maker quotes received against RFQs owned by the subaccount. Supports filtering by quote_id, rfq_id, status, and a timestamp window, with pagination. Returns public quote views (including the maker's wallet) without any signing material.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PollQuotesRequest"
}
}
}
}
}
},
"/private/poll_rfqs": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/poll_rfqs",
"operationId": "private_poll_rfqs",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RFQPollResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Maker-side call that lists the RFQs a subaccount is eligible to quote, i.e. RFQs that are open to all makers or that name the maker's wallet as a counterparty. Supports filtering by rfq_id, status, an originating RFQ subaccount, and a timestamp window, with pagination. Returns public RFQ views without taker-private signing material.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PollRfqsRequest"
}
}
}
}
}
},
"/private/replace_quote": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/replace_quote",
"operationId": "private_replace_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuoteReplaceResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Maker-side call that atomically cancels an existing quote and submits a new signed quote for the same RFQ in one operation. You provide the new priced legs, direction, max fee, and EIP-712 signature, plus the quote to cancel (by quote_id or nonce_to_cancel). Returns the cancellation result together with the newly created quote. Requires trade scope for every instrument quoted.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ReplaceQuoteRequest"
}
}
}
}
}
},
"/private/rfq_get_best_quote": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/rfq_get_best_quote",
"operationId": "private_rfq_get_best_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RfqGetBestQuoteResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Taker-side dry run that evaluates a prospective RFQ (its legs and intended direction) without creating anything. Returns the best available maker quote if one exists, along with the expected fee, validity, projected liquidation prices, and realized-PnL estimate for taking it.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RfqGetBestQuoteRequest"
}
}
}
}
}
},
"/private/send_quote": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/send_quote",
"operationId": "private_send_quote",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Quote"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Maker-side call that submits a priced, signed quote in response to an existing RFQ. You provide the priced legs, direction, max fee, an EIP-712 signature (signer, signature, nonce, expiry), and optional label or MMP flag. The quote's signature is verified and validated against the referenced RFQ before it is stored. Returns the created quote. Requires trade scope for every instrument quoted.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SendQuoteRequest"
}
}
}
}
}
},
"/private/send_rfq": {
"post": {
"tags": [
"RFQ"
],
"summary": "private/send_rfq",
"operationId": "private_send_rfq",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Rfq"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Taker-side call that opens a new RFQ for a multi-leg structure on a subaccount, inviting makers to quote it. You supply the legs (instrument, amount, and direction per leg) plus optional limits such as min/max total cost, a partial-fill step, a label, and a list of specific counterparties to restrict who can see it. Returns the created RFQ including its assigned id and validity window. Requires trade scope for every instrument in the legs.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SendRfqRequest"
}
}
}
}
}
},
"/public/execute_quote_debug": {
"post": {
"tags": [
"RFQ"
],
"summary": "public/execute_quote_debug",
"operationId": "public_execute_quote_debug",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuoteExecuteDebugResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Public signing-preview helper that returns the taker's EIP-712 encoding artifacts (encoded data and hashes) plus the maker-side encoded legs and legs hash for a quote execution a client is about to sign. It does not verify signatures, persist anything, or execute the trade; use it to construct and check the exact payload before calling private/execute_quote.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicExecuteQuoteDebugRequest"
}
}
}
}
}
},
"/public/send_quote_debug": {
"post": {
"tags": [
"RFQ"
],
"summary": "public/send_quote_debug",
"operationId": "public_send_quote_debug",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/QuoteSendDebugResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Public signing-preview helper that returns the EIP-712 encoding artifacts (encoded data, its hash, the action hash, and the typed-data hash) for a maker quote a client is about to sign. It does not verify signatures, persist anything, or place a quote; use it to construct and check the exact payload to sign before calling private/send_quote.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicSendQuoteDebugRequest"
}
}
}
}
}
},
"/private/cancel_all_vault_requests": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/cancel_all_vault_requests",
"operationId": "private_cancel_all_vault_requests",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultCancelResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed cancel action that drains all of the caller's pending deposit and withdraw requests for a given vault and posts the corresponding on-chain operation. Input is the vault subaccount; any subaccount the caller owns may sign. Requires the user-cancel permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CancelVaultRequestRequest"
}
}
}
}
}
},
"/private/get_live_vault_requests": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/get_live_vault_requests",
"operationId": "private_get_live_vault_requests",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MultipleVaultRequestsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the caller's currently-pending vault deposit and withdraw requests, read live from the vault queue. Not paginated (the live queue is bounded); settled and terminal history is served by get_vault_request_history. The wallet parameter must match the authenticated connection.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLiveVaultRequestsRequest"
}
}
}
}
}
},
"/private/get_shareholder_vaults": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/get_shareholder_vaults",
"operationId": "private_get_shareholder_vaults",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultIdsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the subaccount ids of the vaults in which the given wallet holds shares. The wallet parameter must match the authenticated connection. Read-only.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetShareholderVaultsRequest"
}
}
}
}
}
},
"/private/get_vault_request_history": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/get_vault_request_history",
"operationId": "private_get_vault_request_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedVaultRequestHistory"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the caller's full vault action history (deposits, withdrawals, force-withdrawals, and cancels) across every status — enqueued, requested, applied, cancelled, rejected, or expired — with one row per action at its latest state. Paginated by page and page_size; monetary amounts, prices, and share counts are decimal strings. The wallet parameter must match the authenticated connection.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetVaultRequestHistoryRequest"
}
}
}
}
}
},
"/private/get_vault_shares": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/get_vault_shares",
"operationId": "private_get_vault_shares",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultSharesResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the caller's share balance for every vault it holds shares in, each paired with the full enriched vault row (the same shape as public/get_vault). The wallet parameter must match the authenticated connection. Read-only.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetVaultSharesRequest"
}
}
}
}
}
},
"/private/request_vault_deposit": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/request_vault_deposit",
"operationId": "private_request_vault_deposit",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultRequestAckResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed deposit action from the user's source subaccount and enqueues it in the vault's pending-deposit queue for the curator to settle. Inputs are the target vault subaccount, the deposit asset, and the amount as a decimal string. Returns an acknowledgement with the queued request; requires the user-deposit permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequestVaultDepositRequest"
}
}
}
}
}
},
"/private/request_vault_withdraw": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "private/request_vault_withdraw",
"operationId": "private_request_vault_withdraw",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultRequestAckResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed withdraw action that enqueues a request to burn a given number of vault shares and redeem the proceeds to the user's subaccount. Inputs are the vault subaccount and the share quantity to burn (decimal string). Returns an acknowledgement with the queued request; requires the user-withdraw permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RequestVaultWithdrawRequest"
}
}
}
}
}
},
"/public/get_vault": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "public/get_vault",
"operationId": "public_get_vault",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Vault"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the full vault record — on-chain state plus curator metadata — for one vault subaccount id. Unauthenticated and read-only.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetVaultRequest"
}
}
}
}
}
},
"/public/get_vault_action_history": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "public/get_vault_action_history",
"operationId": "public_get_vault_action_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedVaultActionHistory"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a vault's finalized deposit, withdrawal, fee-accrual, and cancel events — including NAV, share price, high-water mark, and the fee-share split across management, performance, curator, and protocol — at the vault level (per-holder position details are omitted). Inputs are the vault subaccount, an optional event_type filter, and pagination. Amounts and prices are decimal strings. Unauthenticated.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetVaultActionHistoryRequest"
}
}
}
}
}
},
"/public/get_vault_performance_history": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "public/get_vault_performance_history",
"operationId": "public_get_vault_performance_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultPerformanceHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a time series of a vault's mark-to-market performance (NAV, share price, total and curator shares, high-water mark, optional benchmark) sampled hourly and downsampled to the requested resolution (1h, 8h, 24h, or 1wk). Supports optional from/to unix-second bounds and a limit (newest first, default 1000, capped at 10000). Values are decimal strings, with live prices nullable. Unauthenticated.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetVaultPerformanceHistoryRequest"
}
}
}
}
}
},
"/public/get_vaults": {
"post": {
"tags": [
"Vault Shareholders"
],
"summary": "public/get_vaults",
"operationId": "public_get_vaults",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns every vault in the system, each paired with its subaccount id, paginated by page and page_size. Unauthenticated and read-only.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetVaultsRequest"
}
}
}
}
}
},
"/private/burn_vault_shares": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/burn_vault_shares",
"operationId": "private_burn_vault_shares",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultSettleResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Curator-only endpoint that settles a pending withdraw request by signing a burn approval at a quoted share price (USD per share). Takes the request id and the user's withdraw-action hash, burns the shares, and returns the settlement result. Requires the curator mint-and-burn permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/BurnSharesRequest"
}
}
}
}
}
},
"/private/create_vault": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/create_vault",
"operationId": "private_create_vault",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultCreateResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Registers a new vault on-chain from a signed action; the signing wallet becomes the vault's curator and seeds the initial deposit from its funding subaccount. Inputs set the deposit asset, initial deposit amount, initial share price, management/performance fee rates (in basis points), max slippage, redemption cooldown, an optional benchmark asset for the high-water mark, and the max sequencer fee authorized. Requires the vault curator-create permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/CreateVaultRequest"
}
}
}
}
}
},
"/private/force_burn": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/force_burn",
"operationId": "private_force_burn",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultForceBurnResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Curator-only endpoint that builds an on-chain action to forcibly redeem a given holder's entire share balance at the current mark-to-market share price. Inputs are the vault subaccount and the holder's wallet address. Requires the curator mint-and-burn permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ForceBurnRequest"
}
}
}
}
}
},
"/private/get_curated_vaults": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/get_curated_vaults",
"operationId": "private_get_curated_vaults",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultIdsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the subaccount ids of the vaults curated by the given wallet. The wallet parameter must match the authenticated connection. Read-only.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetCuratedVaultsRequest"
}
}
}
}
}
},
"/private/get_live_burn_requests": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/get_live_burn_requests",
"operationId": "private_get_live_burn_requests",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MultipleVaultRequestsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Curator-only endpoint that returns a FIFO page of a vault's pending withdraw (burn) requests. Inputs are the vault subaccount and a page limit. Requires the curator mint-and-burn permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLiveBurnRequestsRequest"
}
}
}
}
}
},
"/private/get_live_mint_requests": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/get_live_mint_requests",
"operationId": "private_get_live_mint_requests",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MultipleVaultRequestsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Curator-only endpoint that returns a FIFO page of a vault's pending deposit (mint) requests. Inputs are the vault subaccount and a page limit. Requires the curator mint-and-burn permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLiveMintRequestsRequest"
}
}
}
}
}
},
"/private/mint_vault_shares": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/mint_vault_shares",
"operationId": "private_mint_vault_shares",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultSettleResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Curator-only endpoint that settles a pending deposit request by signing a mint approval at a quoted share price (USD per share). Takes the request id and the user's deposit-action hash, mints the corresponding shares, and returns the settlement result. Requires the curator mint-and-burn permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MintSharesRequest"
}
}
}
}
}
},
"/private/reject_deposit_request": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/reject_deposit_request",
"operationId": "private_reject_deposit_request",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/VaultRequestAckResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Curator-only endpoint that removes a queued deposit request off-chain (no on-chain settlement), recording the rejection with an optional short reason. Takes the request id and returns an acknowledgement. Requires the curator mint-and-burn permission.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RejectDepositRequestRequest"
}
}
}
}
}
},
"/private/update_vault_info": {
"post": {
"tags": [
"Vault Curators"
],
"summary": "private/update_vault_info",
"operationId": "private_update_vault_info",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OffchainAckResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Applies an off-chain patch to a vault the caller curates, updating any of its display name, description, advisory mark-to-market cap (a USD decimal), or whitelist-only flag. Only the fields supplied are changed. The caller must own the vault's subaccount (i.e. be its curator); description length is capped.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateVaultInfoRequest"
}
}
}
}
}
},
"/private/get_deposit_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_deposit_history",
"operationId": "private_get_deposit_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/DepositHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns settled deposits for a single subaccount or an entire wallet (specify exactly one), optionally bounded by a start/end timestamp window. Each entry reports the deposited amount as a decimal, the fee routed to the security module (the net credited amount is amount minus fee), and the resolved settlement batch and status.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetDepositHistoryRequest"
}
}
}
}
}
},
"/private/get_erc20_transfer_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_erc20_transfer_history",
"operationId": "private_get_erc20_transfer_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns settled spot (ERC-20) transfers involving a single subaccount or an entire wallet (specify exactly one), optionally bounded by a start/end timestamp window. Each entry reports the transfer amount and fee as decimals along with direction — the sender sees the gross amount plus fee, the receiver sees the net credit — plus the resolved settlement batch and status.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetErc20TransferHistoryRequest"
}
}
}
}
}
},
"/private/get_funding_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_funding_history",
"operationId": "private_get_funding_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PerpSettlementHistoryResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated history of perpetual funding (settlement) events for a single subaccount or an entire wallet (specify exactly one), optionally bounded by a start/end timestamp window and filtered by perpetual instrument name. The response includes the funding events with their instrument name and settled amounts, plus pagination info with total count and page count.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetFundingHistoryRequest"
}
}
}
}
}
},
"/private/get_interest_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_interest_history",
"operationId": "private_get_interest_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterestHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns realized interest settlements per subaccount, for a single subaccount or an entire wallet (specify exactly one), optionally bounded by a start/end timestamp window. Each entry gives the settled interest as a decimal, where a negative value was paid (borrowed) and a positive value was received (supplied).",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetInterestHistoryRequest"
}
}
}
}
}
},
"/private/get_option_settlement_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_option_settlement_history",
"operationId": "private_get_option_settlement_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OptionSettlementHistoryResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns option settlement (expiry) events for a single subaccount or an entire wallet (specify exactly one). Each settlement includes the reconstructed option instrument name and the settled amounts for that expired position.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOptionSettlementHistoryParams"
}
}
}
}
}
},
"/private/get_order_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_order_history",
"operationId": "private_get_order_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedOrdersResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated history of orders for a single subaccount or for an entire wallet (specify exactly one), optionally bounded by a from/to timestamp window. Only orders in a terminal state (filled, cancelled, expired) are recorded here, one record per order. Trigger and algo orders appear once they terminate, carrying their accumulated filled amount; while they are still live — including partially executed algo orders and trigger orders that have not yet fired — read them from get_trigger_orders and get_algo_orders instead. Each page includes the order records plus pagination info with the total count and number of pages.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOrderHistoryRequest"
}
}
}
}
}
},
"/private/get_trade_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_trade_history",
"operationId": "private_get_trade_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PaginatedTradesResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated history of executed trades for a single subaccount or an entire wallet (specify exactly one), with optional filters for a time window, order id, instrument name, or quote id. The response includes the trade records and pagination info with total count and page count.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTradeHistoryRequest"
}
}
}
}
}
},
"/private/get_withdrawal_history": {
"post": {
"tags": [
"History"
],
"summary": "private/get_withdrawal_history",
"operationId": "private_get_withdrawal_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/WithdrawalHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns settled withdrawals for a single subaccount or an entire wallet (specify exactly one), optionally bounded by a start/end timestamp window. Each entry reports the withdrawn amount as a decimal, the fee routed to the security module (the net amount sent to the recipient is amount minus fee), and the resolved settlement batch and status.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetWithdrawalHistoryRequest"
}
}
}
}
}
},
"/public/get_liquidation_history": {
"post": {
"tags": [
"History"
],
"summary": "public/get_liquidation_history",
"operationId": "public_get_liquidation_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LiquidationHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated history of liquidation auctions, newest first, for a single subaccount or across all of them, optionally bounded by a start/end timestamp window over the auction start. Each entry gives the auctioned subaccount, whether the auction was solvent or insolvent, the fee charged at start, the start and end timestamps, and the bids that filled it with the fraction of the account each absorbed and the cash it moved.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLiquidationHistoryRequest"
}
}
}
}
}
},
"/private/get_mmp_config": {
"post": {
"tags": [
"Market Maker Protection"
],
"summary": "private/get_mmp_config",
"operationId": "private_get_mmp_config",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/MmpConfigResult"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the market maker protection (MMP) settings for a subaccount, optionally filtered to a single currency. Each entry reports the amount and delta limits (as decimal strings), the rolling interval and freeze duration (in milliseconds), and the current freeze state, including whether MMP is currently frozen and the timestamp at which it unfreezes.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MmpScopeRequest"
}
}
}
}
}
},
"/private/reset_mmp": {
"post": {
"tags": [
"Market Maker Protection"
],
"summary": "private/reset_mmp",
"operationId": "private_reset_mmp",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ResetMmpResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Clears an active market maker protection freeze and resets the rolling MMP window for a subaccount, optionally scoped to a single currency. Use this to resume quoting after MMP has frozen a subaccount. Requires a trading-scoped session key and returns \"ok\" on success.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/MmpScopeRequest"
}
}
}
}
}
},
"/private/set_mmp_config": {
"post": {
"tags": [
"Market Maker Protection"
],
"summary": "private/set_mmp_config",
"operationId": "private_set_mmp_config",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetMmpConfigResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Creates or fully replaces the market maker protection settings for a subaccount and currency. Accepts an amount limit and delta limit (as decimals) plus the rolling interval and freeze duration in milliseconds; omitted limits default to zero. Requires a trading-scoped session key and echoes the applied configuration back.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetMmpConfigRequest"
}
}
}
}
}
},
"/private/transfer_positions": {
"post": {
"tags": [
"Transfers & Withdrawals"
],
"summary": "private/transfer_positions",
"operationId": "private_transfer_positions",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferPositionsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Atomically transfers one or more derivative positions between a maker and a taker subaccount using matched, signed transfer quotes. Each side supplies its subaccount, signer, nonce, signature, expiry, max fee, direction, and priced legs (instrument, amount, price); the two quotes must mirror each other. Requires a session key with transfer permission and returns the resulting operation details.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TransferPositionsRequest"
}
}
}
}
}
},
"/private/transfer_spot": {
"post": {
"tags": [
"Transfers & Withdrawals"
],
"summary": "private/transfer_spot",
"operationId": "private_transfer_spot",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateTransferSpotResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed transfer of a single spot asset from one subaccount to another subaccount you own. You specify the source and destination subaccounts (or set new_subaccount_manager to create a new destination subaccount under a manager), the asset and its sub_id, the amount, a nonce, signer, signature with expiry, and the maximum USD sequencer fee. Requires a session key with a transfer permission and returns the operation id and uuid.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateTransferSpotRequest"
}
}
}
}
}
},
"/private/transfer_spot_external": {
"post": {
"tags": [
"Transfers & Withdrawals"
],
"summary": "private/transfer_spot_external",
"operationId": "private_transfer_spot_external",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateTransferSpotExternalResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed transfer of a single spot asset to a subaccount belonging to a different owner. Alongside the standard transfer fields (asset, sub_id, amount, nonce, signer, signature, expiry, max USD fee) you give the recipient's wallet address and either an existing destination subaccount or 0 to create a new one under new_subaccount_manager; the max fee must cover both the transfer and any subaccount-creation cost. Requires a session key permitted to transfer to a different owner and returns the operation id and uuid.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateTransferSpotExternalRequest"
}
}
}
}
}
},
"/private/update_whitelisted_recipients": {
"post": {
"tags": [
"Transfers & Withdrawals"
],
"summary": "private/update_whitelisted_recipients",
"operationId": "private_update_whitelisted_recipients",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWhitelistedRecipientsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Adds and/or removes recipient wallet addresses on an account's transfer whitelist via a signed, wallet-level action. Provide the owner wallet, signer, nonce, signature with expiry, and the add and remove address lists. This is an owner-or-admin operation (session keys need the admin scope); it returns the operation id, uuid, and the full whitelist after the update is applied.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/UpdateWhitelistedRecipientsRequest"
}
}
}
}
}
},
"/private/withdraw": {
"post": {
"tags": [
"Transfers & Withdrawals"
],
"summary": "private/withdraw",
"operationId": "private_withdraw",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateWithdrawResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Submits a signed request to withdraw a spot asset out of a subaccount. You provide the subaccount id, asset name, amount in underlying units, a nonce, the signer, an EIP-712 signature with its expiry, and the maximum sequencer fee (in USD) you authorise; setting force_batch controls whether the withdrawal is batched. Requires a session key with withdraw permission, and returns the accepted operation id and its uuid for tracking.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateWithdrawRequest"
}
}
}
}
}
},
"/public/withdraw_debug": {
"post": {
"tags": [
"Transfers & Withdrawals"
],
"summary": "public/withdraw_debug",
"operationId": "public_withdraw_debug",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Dry-run helper that returns the EIP-712 typed data and hashes that would be computed for the given withdrawal parameters, so clients can verify their own signing and hashing before submitting. Takes the same inputs as private/withdraw (subaccount, signer, nonce, amount, max fee, expiry, asset) but performs no state change and needs no signature.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicWithdrawDebugRequest"
}
}
}
}
}
},
"/public/get_onchain_action_history": {
"post": {
"tags": [
"Onchain Actions"
],
"summary": "public/get_onchain_action_history",
"operationId": "public_get_onchain_action_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOnchainActionHistoryResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the lifecycle of onchain actions submitted via `OnchainActionManager.sol`. Public endpoint.\n\nOnchain actions are either applied directly or with a `fallback` flag. Each onchain action is affected by the `fallback` flag uniquely:\n\n- Deposits: sequencer moved the deposit into the `fallback_subaccount`\n- SetSessionKey: no-op\n- Admin actions: no-op\n\nThe onchain action can have several states:\n\n- `applied`: action was successfully applied by the sequencer\n- `applied_with_fallback`: action was applied by the sequencer with fallback=true\n- `instant_fallback`: action failed its initial attempt, will be re-submitted with fallback=true\n- `retry_then_fallback`: action failed its initial attempt, will be re-submitted with fallback=false until the retry budget is exceeded, then re-submitted with fallback=true\n- `never_escalate`: action failed its initial attempt but will retry until successful, never with fallback=true",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOnchainActionHistoryParams"
}
}
}
}
}
},
"/public/get_pending_deposits": {
"post": {
"tags": [
"Onchain Actions"
],
"summary": "public/get_pending_deposits",
"operationId": "public_get_pending_deposits",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPendingDepositsResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns deposits queued on L1 but not yet applied by the sequencer, indexed for a wallet and keyed by (tx_hash, log_index). Once a deposit is applied it moves to private/get_deposit_history; this endpoint covers the window in between. Public because a first-time depositor has no account (and thus no session key) until their deposit is applied.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPendingDepositsParams"
}
}
}
}
}
},
"/public/register_deposit_address": {
"post": {
"tags": [
"Onchain Actions"
],
"summary": "public/register_deposit_address",
"operationId": "public_register_deposit_address",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegisterDepositAddressResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the deterministic on-chain deposit address for a wallet and records it so incoming deposits are watched and credited. Pass the wallet and optionally an existing subaccount id; when creating a new subaccount (subaccount omitted or 0) a non-zero manager_id is required. Repeated calls return the same cached address and keep it alive, while new registrations are rate limited per rolling window; unused addresses are dropped after 7 days.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RegisterDepositAddressParams"
}
}
}
}
}
},
"/public/getRateLimits": {
"post": {
"tags": [
"System"
],
"summary": "public/getRateLimits",
"operationId": "public_getRateLimits",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/RateLimitResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the caller's current remaining rate-limit allowances for the active connection, broken out into matching-request, non-matching-request, and per-endpoint buckets. On WebSocket connections it also includes the remaining connection allowance.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmptyRequest"
}
}
}
}
}
},
"/public/get_time": {
"post": {
"tags": [
"System"
],
"summary": "public/get_time",
"operationId": "public_get_time",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "integer"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the current server time in milliseconds since the UNIX epoch. Takes no parameters and requires no authentication. Use it to align the timestamps and nonces bound into signed actions with the server clock.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmptyRequest"
}
}
}
}
}
},
"/public/get_transaction": {
"post": {
"tags": [
"System"
],
"summary": "public/get_transaction",
"operationId": "public_get_transaction",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTransactionResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Looks up the settlement lifecycle of a previously submitted operation by its operation UUID (op_uuid). Returns the operation's serialized data along with its batch status, settlement transaction hash, and any error log; the status is null until the operation has been picked up for settlement.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTransactionParams"
}
}
}
}
}
},
"/public/get_all_currencies": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_all_currencies",
"operationId": "public_get_all_currencies",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Currency"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns detailed metadata for every configured currency, including supported instrument types, risk managers, spot price and 24h-ago price, SRM/portfolio margin collateral discounts, lending borrow/supply APYs, open-interest caps and utilization per manager, and protocol asset addresses. Currencies that exist but have no configured assets are omitted. Public endpoint, no authentication required.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmptyRequest"
}
}
}
}
}
},
"/public/get_all_instruments": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_all_instruments",
"operationId": "public_get_all_instruments",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllInstrumentsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a paginated list of full instrument definitions filtered by `instrument_type`, optional `currency`, and `expired` flag, with `page`/`page_size` (max 1000) controls and pagination metadata. Expired options are included when the `expired` flag is set. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllInstrumentsRequest"
}
}
}
}
}
},
"/public/get_all_live_instruments": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_all_live_instruments",
"operationId": "public_get_all_live_instruments",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a sorted list of the names of every currently live instrument (active and within its scheduled activation window). Takes no parameters and returns names only, not full definitions. Public endpoint.",
"x-rate-limit-class": "custom",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmptyRequest"
}
}
}
}
}
},
"/public/get_assets": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_assets",
"operationId": "public_get_assets",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Asset"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the assets of a given `asset_type` (option, perp, or erc20) for a `currency`, with `expired` controlling whether past-expiry options are included. Each entry includes the asset id, name, on-chain address and sub_id, collateral/position flags, and type-specific details (option strike/expiry/settlement price, perp funding config, or ERC20 lending indices). Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAssetsRequest"
}
}
}
}
}
},
"/public/get_currency": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_currency",
"operationId": "public_get_currency",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Currency"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the full detail record for one currency named by the required `currency` parameter: supported instrument types, risk managers, current and 24h spot price, margin collateral discounts, lending APYs and totals, per-manager open-interest caps and current OI, and protocol asset addresses. Returns a not-found error for unknown currencies. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetCurrencyRequest"
}
}
}
}
}
},
"/public/get_funding_rate_history": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_funding_rate_history",
"operationId": "public_get_funding_rate_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/FundingRateHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns funding-rate OHLC candles for a perpetual instrument (`instrument_name`) over an optional `start_timestamp`/`end_timestamp` window (UTC milliseconds) at a `period` granularity (defaults to 1h; 60s up to 1w supported). Each candle carries open/high/low/close per-hour rates plus a `funding_rate` mirroring the close. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetFundingRateHistoryRequest"
}
}
}
}
}
},
"/public/get_index_chart_data": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_index_chart_data",
"operationId": "public_get_index_chart_data",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/IndexCandle"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns spot index OHLC candles for a `currency` between required `start_timestamp` and `end_timestamp` (UTC seconds) at the given `period` granularity (1m up to 1w). Each candle includes open/high/low/close and a `price` mirroring the close. The requested range is clamped to a maximum number of buckets. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetIndexChartDataRequest"
}
}
}
}
}
},
"/public/get_instrument": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_instrument",
"operationId": "public_get_instrument",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Instrument"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the full public definition of one instrument named by `instrument_name`: type, activation window and active status, tick size, min/max/step amounts, maker/taker/base fee rates, pro-rata matching parameters, base/quote currencies, and type-specific details (option, perp, or spot). Expired options remain queryable by `instrument_name`. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetInstrumentRequest"
}
}
}
}
}
},
"/public/get_interest_rate_history": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_interest_rate_history",
"operationId": "public_get_interest_rate_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/InterestRateHistoryResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns lending borrow/supply APY OHLC candles for a `currency`'s pool over an optional time window (UTC milliseconds) at a `period` of 1h or larger (defaults to 1h; sub-hour periods are rejected). An optional `risk_universe_id` restricts to one pool; otherwise every universe's candles are returned, each tagged and carrying pool total supply/borrow. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetInterestRateHistoryRequest"
}
}
}
}
}
},
"/public/get_latest_signed_feeds": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_latest_signed_feeds",
"operationId": "public_get_latest_signed_feeds",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLatestSignedFeedsResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the most recent oracle-signed feed data — spot, forward, volatility (SVI), rate, perp, and perpetual funding-rate feeds — each with signer addresses and signatures for on-chain submission. Optional `currency` and `expiry` filters narrow the result (use `expiry` 0 for the non-expiry feeds: spot, perp and funding); both default to all. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetLatestSignedFeedsRequest"
}
}
}
}
}
},
"/public/get_option_settlement_prices": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_option_settlement_prices",
"operationId": "public_get_option_settlement_prices",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/OptionSettlementPricesResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the settlement price for each settled option expiry of a `currency`, with the expiry date (YYYYMMDD), unix expiry timestamp, and price. Only already-settled expiries are returned. Unknown currencies return a not-found error. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetOptionSettlementPricesRequest"
}
}
}
}
}
},
"/public/get_risk_universes": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_risk_universes",
"operationId": "public_get_risk_universes",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/RiskUniverse"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns every risk universe (the isolated risk-containment boundaries trades never cross), each with its display name and description, its managers — at most one Standard (`SM`) and one Portfolio (`PM2`), each listing the derivative instruments it risk-prices and the collateral assets it accepts with their margin discounts and deposit metadata — and its Security Module. The one call that answers which universe and manager to choose: pick a universe, pick a manager in it, and pass its `manager_id` when depositing to a new subaccount (the accepted collateral entries carry the `asset` address for the deposit). The no-margin fallback universe (id 0) is included; it custodies dead-lettered deposits and lists no tradeable instruments. Public endpoint, no authentication required.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/EmptyRequest"
}
}
}
}
}
},
"/public/get_ticker": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_ticker",
"operationId": "public_get_ticker",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TickerSlimSnapshot"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns the latest ticker snapshot for a single instrument named by `instrument_name`. The payload matches the data of a `ticker_slim.{instrument}.{interval}` subscription update (mark/index prices, best bid/ask, sizes, greeks, and related fields). Returns an error if no ticker is available. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTickerRequest"
}
}
}
}
}
},
"/public/get_tickers": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_tickers",
"operationId": "public_get_tickers",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTickersResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns a map of instrument name to latest ticker snapshot for an `instrument_type`. Options require both `currency` and an 8-digit `expiry_date` (YYYYMMDD); perps and spot accept an optional `currency` (omit to fetch all currencies) and reject `expiry_date`. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTickersRequest"
}
}
}
}
}
},
"/public/get_trade_history": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_trade_history",
"operationId": "public_get_trade_history",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicTradesResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns paginated, anonymized settled trades with optional filters: `trade_id` (a UUID, which overrides all other filters), `instrument_name`, `instrument_type` (erc20/option/perp), `currency`, `subaccount_id`, `batch_status` (a batch-status name, default Settled), and `from_timestamp`/`to_timestamp`. Each trade is enriched with its settlement status and transaction hash. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetPublicTradeHistoryRequest"
}
}
}
}
}
},
"/public/get_tradingview_chart_data": {
"post": {
"tags": [
"Market Data"
],
"summary": "public/get_tradingview_chart_data",
"operationId": "public_get_tradingview_chart_data",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TradingviewCandle"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns traded-price OHLCV candles for an `instrument_name` between required `start_timestamp` and `end_timestamp` (UTC seconds) at the given `period` (1m up to 1w), aggregated from executed trade history. Each candle includes open/high/low/close prices plus USD and contract volume, formatted for charting. Public endpoint.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetTradingviewChartDataRequest"
}
}
}
}
}
},
"/public/get_all_referral_codes": {
"post": {
"tags": [
"Referrals"
],
"summary": "public/get_all_referral_codes",
"operationId": "public_get_all_referral_codes",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Referrer"
}
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns every registered referral code along with the owner's wallet address and, when configured, the wallet that receives referral rewards. Takes no parameters.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetAllReferralCodesParams"
}
}
}
}
}
},
"/public/get_referral_performance": {
"post": {
"tags": [
"Referrals"
],
"summary": "public/get_referral_performance",
"operationId": "public_get_referral_performance",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetReferralPerformanceResult"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"description": "Returns broker-program referral performance for a referral code, identified either by the code itself or by the referrer's wallet, over a requested time window (start_ms to end_ms, capped at 28 days). The response includes total notional volume, referred fees, fee rewards, builder fees collected, the applicable fee-share percentage, and a per-role/currency/instrument-type breakdown, all as decimal strings.",
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/GetReferralPerformanceParams"
}
}
}
}
}
},
"/private/liquidate": {
"post": {
"tags": [
"Other"
],
"summary": "private/liquidate",
"operationId": "private_liquidate",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateLiquidateResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateLiquidateRequest"
}
}
}
}
}
},
"/private/set_session_key": {
"post": {
"tags": [
"Other"
],
"summary": "private/set_session_key",
"operationId": "private_set_session_key",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PrivateSetSessionKeyResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"x-rate-limit-class": "endpoint",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SetSessionKeyRequest"
}
}
}
}
}
},
"/public/start_auction": {
"post": {
"tags": [
"Other"
],
"summary": "public/start_auction",
"operationId": "public_start_auction",
"responses": {
"200": {
"description": "Success",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicStartAuctionResponse"
}
}
}
},
"default": {
"description": "JSON-RPC error (see Error Codes)"
}
},
"x-rate-limit-class": "non_matching",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PublicStartAuctionRequest"
}
}
}
}
}
}
},
"components": {
"schemas": {
"AccountFeeInfo": {
"type": "object",
"required": [
"base_fee_discount",
"rfq_maker_discount",
"rfq_taker_discount"
],
"properties": {
"base_fee_discount": {
"type": "string"
},
"option_maker_fee": {
"type": [
"string",
"null"
]
},
"option_taker_fee": {
"type": [
"string",
"null"
]
},
"perp_maker_fee": {
"type": [
"string",
"null"
]
},
"perp_taker_fee": {
"type": [
"string",
"null"
]
},
"rfq_maker_discount": {
"type": "string"
},
"rfq_taker_discount": {
"type": "string"
},
"spot_maker_fee": {
"type": [
"string",
"null"
]
},
"spot_taker_fee": {
"type": [
"string",
"null"
]
}
}
},
"Action": {
"description": "EIP-712 typed-data Action struct that you sign; its fields are defined below.",
"type": "object",
"required": [
"data",
"expiry",
"module",
"nonce",
"owner",
"signer",
"subaccount_id"
],
"properties": {
"data": {
"description": "ABI-encoded action data (`bytes`).",
"type": "array",
"items": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
}
},
"expiry": {
"description": "Unix timestamp after which the action is invalid (`uint256`).",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"module": {
"description": "Module address that will process this action (`address`).",
"$ref": "#/components/schemas/Address"
},
"nonce": {
"description": "Replay-protection nonce (`uint256`), interpreted as a UTC-**nanosecond** timestamp: it must fall within the nonce validity window (one day) of the action's timestamp.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"owner": {
"description": "Owner of the subaccount (`address`).",
"$ref": "#/components/schemas/Address"
},
"signer": {
"description": "Address that signed this action (`address`).",
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "Subaccount identifier (`uint256`).",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"Address": {
"description": "20-byte Ethereum address as a 0x-prefixed lowercase hex string.",
"type": "string",
"maxLength": 42,
"minLength": 42,
"pattern": "^0x[0-9a-fA-F]{40}$"
},
"AggregatedOrdersResult": {
"type": "object",
"required": [
"orders",
"subaccount_id"
],
"properties": {
"orders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Order"
}
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"AggregatedTriggerOrdersResult": {
"type": "object",
"required": [
"orders",
"subaccount_id"
],
"properties": {
"orders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Order"
}
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"AlgoType": {
"type": "string",
"enum": [
"twap"
]
},
"Asset": {
"type": "object",
"required": [
"address",
"asset_id",
"asset_name",
"asset_type",
"currency",
"is_collateral",
"is_position",
"sub_id"
],
"properties": {
"address": {
"type": "string"
},
"asset_id": {
"type": "string"
},
"asset_name": {
"type": "string"
},
"asset_type": {
"$ref": "#/components/schemas/AssetType"
},
"currency": {
"type": "string"
},
"erc20_details": {
"anyOf": [
{
"$ref": "#/components/schemas/SpotPublicDetails"
},
{
"type": "null"
}
]
},
"is_collateral": {
"type": "boolean"
},
"is_position": {
"type": "boolean"
},
"option_details": {
"anyOf": [
{
"$ref": "#/components/schemas/OptionDetails"
},
{
"type": "null"
}
]
},
"perp_details": {
"anyOf": [
{
"$ref": "#/components/schemas/PerpDetails"
},
{
"type": "null"
}
]
},
"sub_id": {
"type": "string"
}
}
},
"AssetEntry": {
"description": "A non-spot asset (option or perp) and its per-universe risk.",
"type": "object",
"required": [
"address",
"name",
"universes"
],
"properties": {
"address": {
"description": "EIP-55 checksummed protocol asset address.",
"type": "string"
},
"name": {
"description": "Registered asset name (e.g. \"ETH-OPTION\", \"ETH-PERP\").",
"type": "string"
},
"universes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AssetUniverse"
}
}
}
},
"AssetType": {
"description": "Asset type of the instrument: `\"option\"`, `\"perp\"`, or `\"erc20\"`.",
"type": "string",
"enum": [
"option",
"perp",
"erc20"
]
},
"AssetUniverse": {
"description": "Per-`(asset, universe)` open interest for an option/perp asset.",
"type": "object",
"required": [
"oi",
"risk_universe_id"
],
"properties": {
"oi": {
"$ref": "#/components/schemas/OpenInterestStats"
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"risk_universe_name": {
"description": "Display name of the universe (uppercase, e.g. \"PRIME\"); absent until set by the exchange.",
"type": [
"string",
"null"
]
}
}
},
"AuctionBidEvent": {
"description": "One executed bid within an auction. Amounts are decimal strings.",
"type": "object",
"required": [
"amounts_liquidated",
"cash_received",
"discount_pnl",
"percent_liquidated",
"positions_realized_pnl",
"positions_realized_pnl_excl_fees",
"realized_pnl",
"realized_pnl_excl_fees",
"timestamp",
"tx_hash"
],
"properties": {
"amounts_liquidated": {
"description": "Amounts of each asset that were closed. Always empty — see the module TODO; the protocol event does not carry the per-asset breakdown.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"cash_received": {
"description": "Cash the liquidated account received for the slice: what the bidder paid in the solvent phase, and negative in the insolvent phase, where the security module pays the bidder instead.",
"type": "string"
},
"discount_pnl": {
"description": "Always \"0\" — see the module TODO.",
"type": "string"
},
"percent_liquidated": {
"description": "Fraction of the account this bid took; \"1\" is the whole account.",
"type": "string"
},
"positions_realized_pnl": {
"description": "Always empty — see the module TODO.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"positions_realized_pnl_excl_fees": {
"description": "Always empty — see the module TODO.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"realized_pnl": {
"description": "Always \"0\" — see the module TODO.",
"type": "string"
},
"realized_pnl_excl_fees": {
"description": "Always \"0\" — see the module TODO.",
"type": "string"
},
"timestamp": {
"description": "When the sequencer applied the bid, unix ms.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"tx_hash": {
"description": "Settling L1 transaction; empty until the bid's batch settles.",
"type": "string"
}
}
},
"AuctionHistory": {
"description": "One auction phase and the bids that filled it.",
"type": "object",
"required": [
"auction_id",
"auction_type",
"bids",
"fee",
"start_timestamp",
"subaccount_id",
"tx_hash"
],
"properties": {
"auction_id": {
"description": "`{subaccount_id}-{start_time_sec}` — see the module docs.",
"type": "string"
},
"auction_type": {
"$ref": "#/components/schemas/AuctionType"
},
"bids": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AuctionBidEvent"
}
},
"end_timestamp": {
"description": "When the auction ended, unix ms; `null` while still live.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"fee": {
"description": "Liquidation fee charged at auction start; \"0\" for a phase opened by conversion to insolvent.",
"type": "string"
},
"start_timestamp": {
"description": "Auction/phase clock start, unix ms.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"description": "The liquidated (auctioned) subaccount.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"tx_hash": {
"description": "Settling L1 transaction of the op that opened the auction; empty until that batch settles.",
"type": "string"
}
}
},
"AuctionType": {
"description": "Which phase of the auction this entry describes.",
"type": "string",
"enum": [
"solvent",
"insolvent"
]
},
"BatchStatus": {
"description": "Batch lifecycle status — the single source of lifecycle truth for every operation in the batch (individual ops carry no status of their own). Each stage has a healthy variant and a corresponding `...Error` variant meaning that stage failed. Serialized as the variant name (string) in API responses.",
"type": "string",
"enum": [
"Batching",
"Executing",
"Proving",
"Settling",
"Settled",
"BatchingError",
"ExecutingError",
"ProvingError",
"SettlingError",
"SettledError"
]
},
"BurnSharesRequest": {
"description": "Fields common to every signed vault action. They appear alongside each endpoint's action-specific parameters in the same request object.",
"type": "object",
"required": [
"nonce",
"request_id",
"share_price",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id",
"withdraw_hash"
],
"properties": {
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"request_id": {
"$ref": "#/components/schemas/VaultRequestId"
},
"share_price": {
"description": "Quoted share price in USD per share, as a decimal string (e.g. `\"1\"`).",
"type": "string",
"format": "decimal"
},
"signature": {
"description": "0x-prefixed hex of the 65-byte EOA signature.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The subaccount the action is signed on; which subaccount applies depends on the specific method — see that method's reference.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"withdraw_hash": {
"description": "0x-prefixed hex of the 32-byte user withdraw-action hash.",
"type": "string"
}
}
},
"CancelAlgoOrderRequest": {
"type": "object",
"required": [
"order_id",
"subaccount_id"
],
"properties": {
"order_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelAllAlgoOrdersRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelAllAlgoOrdersResponse": {
"description": "The literal string `\"ok\"` returned on success.",
"type": "string",
"enum": [
"ok"
]
},
"CancelAllRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"cancel_algo_orders": {
"default": null,
"type": [
"boolean",
"null"
]
},
"cancel_trigger_orders": {
"default": null,
"type": [
"boolean",
"null"
]
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelAllResponse": {
"description": "The literal string `\"ok\"` returned on success.",
"type": "string",
"enum": [
"ok"
]
},
"CancelAllTriggerOrdersRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelAllTriggerOrdersResponse": {
"description": "The literal string `\"ok\"` returned on success.",
"type": "string",
"enum": [
"ok"
]
},
"CancelBatchQuotesRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"label": {
"default": null,
"type": [
"string",
"null"
]
},
"nonce": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"quote_id": {
"description": "Optional UUID v4 string",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"rfq_id": {
"description": "Optional UUID v4 string",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"CancelBatchResult": {
"type": "object",
"required": [
"cancelled_ids"
],
"properties": {
"cancelled_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"CancelBatchRfqsRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"label": {
"default": null,
"type": [
"string",
"null"
]
},
"nonce": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"rfq_id": {
"description": "Optional UUID v4 string",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"CancelBatchRfqsResponse": {
"type": "object",
"required": [
"cancelled_ids"
],
"properties": {
"cancelled_ids": {
"type": "array",
"items": {
"type": "string",
"format": "uuid"
}
}
}
},
"CancelByInstrumentRequest": {
"type": "object",
"required": [
"instrument_name",
"subaccount_id"
],
"properties": {
"instrument_name": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelByInstrumentResponse": {
"type": "object",
"required": [
"cancelled_orders"
],
"properties": {
"cancelled_orders": {
"type": "integer",
"format": "int64"
}
}
},
"CancelByLabelRequest": {
"type": "object",
"required": [
"label",
"subaccount_id"
],
"properties": {
"instrument_name": {
"default": null,
"type": [
"string",
"null"
]
},
"label": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelByLabelResponse": {
"type": "object",
"required": [
"cancelled_orders"
],
"properties": {
"cancelled_orders": {
"type": "integer",
"format": "int64"
}
}
},
"CancelByNonceRequest": {
"type": "object",
"required": [
"instrument_name",
"nonce",
"subaccount_id"
],
"properties": {
"instrument_name": {
"type": "string"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelByNonceResponse": {
"type": "object",
"required": [
"cancelled_orders"
],
"properties": {
"cancelled_orders": {
"type": "integer",
"format": "int64"
}
}
},
"CancelOrderRequest": {
"type": "object",
"required": [
"instrument_name",
"order_id",
"subaccount_id"
],
"properties": {
"instrument_name": {
"type": "string"
},
"order_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelQuoteRequest": {
"type": "object",
"required": [
"quote_id",
"subaccount_id"
],
"properties": {
"label": {
"default": null,
"type": [
"string",
"null"
]
},
"nonce": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"quote_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"rfq_id": {
"description": "Optional UUID v4 string",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"CancelReason": {
"type": "string",
"enum": [
"",
"user_request",
"mmp_trigger",
"insufficient_margin",
"signed_max_fee_too_low",
"cancel_on_disconnect",
"ioc_or_market_partial_fill",
"session_key_deregistered",
"subaccount_withdrawn",
"compliance",
"trigger_failed",
"validation_failed",
"algo_completed"
]
},
"CancelRfqRequest": {
"type": "object",
"required": [
"rfq_id",
"subaccount_id"
],
"properties": {
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"CancelRfqResponse": {
"description": "The literal string `\"ok\"` returned on success.",
"type": "string",
"enum": [
"ok"
]
},
"CancelTriggerOrderRequest": {
"type": "object",
"required": [
"order_id",
"subaccount_id"
],
"properties": {
"order_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"CancelVaultRequestRequest": {
"description": "Fields common to every signed vault action. They appear alongside each endpoint's action-specific parameters in the same request object.",
"type": "object",
"required": [
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id",
"vault_subaccount_id"
],
"properties": {
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signature": {
"description": "0x-prefixed hex of the 65-byte EOA signature.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The subaccount the action is signed on; which subaccount applies depends on the specific method — see that method's reference.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"vault_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"ChangeSubaccountLabelRequest": {
"type": "object",
"required": [
"label",
"subaccount_id"
],
"properties": {
"label": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"Collateral": {
"type": "object",
"required": [
"amount",
"amount_step",
"asset_name",
"asset_type",
"average_price",
"average_price_excl_fees",
"creation_timestamp",
"cumulative_interest",
"currency",
"delta",
"delta_currency",
"initial_margin",
"maintenance_margin",
"mark_price",
"mark_value",
"open_orders_margin",
"pending_interest",
"realized_pnl",
"realized_pnl_excl_fees",
"total_fees",
"unrealized_pnl",
"unrealized_pnl_excl_fees"
],
"properties": {
"amount": {
"type": "string"
},
"amount_step": {
"type": "string"
},
"asset_name": {
"type": "string"
},
"asset_type": {
"type": "string"
},
"average_price": {
"type": "string"
},
"average_price_excl_fees": {
"type": "string"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"cumulative_interest": {
"type": "string"
},
"currency": {
"type": "string"
},
"delta": {
"type": "string"
},
"delta_currency": {
"type": "string"
},
"initial_margin": {
"type": "string"
},
"maintenance_margin": {
"type": "string"
},
"mark_price": {
"type": "string"
},
"mark_value": {
"type": "string"
},
"open_orders_margin": {
"type": "string"
},
"pending_interest": {
"type": "string"
},
"realized_pnl": {
"type": "string"
},
"realized_pnl_excl_fees": {
"type": "string"
},
"total_fees": {
"type": "string"
},
"unrealized_pnl": {
"type": "string"
},
"unrealized_pnl_excl_fees": {
"type": "string"
}
}
},
"CreateOrderRequest": {
"description": "`private/order` params.",
"type": "object",
"required": [
"amount",
"direction",
"instrument_name",
"limit_price",
"max_fee",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"algo_duration_sec": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_num_slices": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/AlgoType"
},
{
"type": "null"
}
]
},
"amount": {
"description": "Order amount in units of the base, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"client": {
"default": null,
"type": [
"string",
"null"
]
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Optional extra fee per unit of volume, as a decimal string or JSON number. Defaults to zero.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"instrument_name": {
"type": "string"
},
"is_atomic_signing": {
"default": null,
"type": [
"boolean",
"null"
]
},
"label": {
"default": null,
"type": [
"string",
"null"
]
},
"limit_price": {
"description": "Limit price in quote currency, as a decimal string (e.g. `\"3100.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"max_fee": {
"description": "Max fee per unit of volume in quote currency, as a decimal string or a JSON number.",
"type": "string",
"format": "decimal"
},
"mmp": {
"default": null,
"type": [
"boolean",
"null"
]
},
"nonce": {
"type": "string"
},
"order_type": {
"default": "limit",
"$ref": "#/components/schemas/OrderType"
},
"reduce_only": {
"default": null,
"type": [
"boolean",
"null"
]
},
"referral_code": {
"default": null,
"type": [
"string",
"null"
]
},
"reject_post_only": {
"default": null,
"type": [
"boolean",
"null"
]
},
"reject_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"time_in_force": {
"default": "gtc",
"$ref": "#/components/schemas/TimeInForce"
},
"trigger_price": {
"description": "Trigger price as a decimal string or JSON number; omit for non-trigger orders.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"trigger_price_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/TriggerPriceType"
},
{
"type": "null"
}
]
},
"trigger_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/TriggerType"
},
{
"type": "null"
}
]
}
}
},
"CreateVaultRequest": {
"description": "Fields common to every signed vault action. They appear alongside each endpoint's action-specific parameters in the same request object.",
"type": "object",
"required": [
"cooldown_sec",
"deposit_spot_asset",
"initial_deposit",
"initial_share_price_usd",
"management_fee_bps",
"manager_id",
"max_fee_usd",
"max_slippage_bps",
"nonce",
"performance_fee_bps",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"benchmark_asset": {
"description": "Spot asset to denominate the high-water mark in. Omit (or null) for the feed-less USD default; set it to charge performance fees only on outperformance measured against that asset.",
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/Address"
},
{
"type": "null"
}
]
},
"cooldown_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"deposit_spot_asset": {
"$ref": "#/components/schemas/Address"
},
"initial_deposit": {
"description": "Initial deposit in the vault's deposit asset, as a USD decimal string (e.g. `\"15000\"`).",
"type": "string",
"format": "decimal"
},
"initial_share_price_usd": {
"description": "Initial share price the vault is seeded at, in USD, as a decimal string (e.g. `\"1\"` or `\"100\"`). Must lie within the protocol's permitted range.",
"type": "string",
"format": "decimal"
},
"management_fee_bps": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"manager_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"max_fee_usd": {
"description": "Maximum sequencer fee the signer authorises, in USD, as a decimal string (e.g. `\"1.5\"`).",
"type": "string",
"format": "decimal"
},
"max_slippage_bps": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"performance_fee_bps": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signature": {
"description": "0x-prefixed hex of the 65-byte EOA signature.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The subaccount the action is signed on; which subaccount applies depends on the specific method — see that method's reference.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"Currency": {
"description": "A currency's spot price and its assets grouped by type. Managers risking the currency are listed per universe under `managers`; asset-level risk — OI, lending, and discounts — lives under each asset's `universes`.",
"type": "object",
"required": [
"currency",
"managers",
"market_type",
"spot",
"spot_price"
],
"properties": {
"currency": {
"type": "string"
},
"managers": {
"description": "Managers risk-pricing this currency, one entry per universe where at least one manager covers it.",
"type": "array",
"items": {
"$ref": "#/components/schemas/UniverseManagers"
}
},
"market_type": {
"description": "Which instrument/collateral classes the currency is enabled for.",
"$ref": "#/components/schemas/MarketType"
},
"option": {
"description": "The option asset for this currency, if one is registered.",
"anyOf": [
{
"$ref": "#/components/schemas/AssetEntry"
},
{
"type": "null"
}
]
},
"perp": {
"description": "The perp asset for this currency, if one is registered.",
"anyOf": [
{
"$ref": "#/components/schemas/AssetEntry"
},
{
"type": "null"
}
]
},
"spot": {
"description": "Every spot asset registered to this currency (e.g. lending \"USDC\" and non-lending \"USDC-NL\").",
"type": "array",
"items": {
"$ref": "#/components/schemas/SpotAssetEntry"
}
},
"spot_price": {
"type": "string"
},
"spot_price_24h": {
"type": [
"string",
"null"
]
}
}
},
"DailyTradingStatistics": {
"type": "object",
"required": [
"c",
"h",
"l",
"n",
"oi",
"p",
"pr",
"v"
],
"properties": {
"c": {
"description": "Number of contracts traded during last 24 hours",
"type": "string",
"format": "decimal"
},
"h": {
"description": "Highest trade price during last 24h",
"type": "string",
"format": "decimal"
},
"l": {
"description": "Lowest trade price during last 24h",
"type": "string",
"format": "decimal"
},
"n": {
"description": "Number of trades during last 24h",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"oi": {
"description": "Current total open interest",
"type": "string",
"format": "decimal"
},
"p": {
"description": "Options: 24hr percent change in premium; Perps: 24hr percent change in mark price",
"type": "string",
"format": "decimal"
},
"pr": {
"description": "Premium volume traded during last 24 hours",
"type": "string",
"format": "decimal"
},
"v": {
"description": "Notional volume traded during last 24 hours",
"type": "string",
"format": "decimal"
}
}
},
"DepositEntry": {
"description": "`amount` and `fee` are decimal strings (e.g. `\"1.1\"`); the net credited amount is `amount - fee`. `operation_id`/`batch_uuid` are stable uuids.",
"type": "object",
"required": [
"amount",
"asset",
"batch_status",
"batch_uuid",
"fee",
"new_subaccount",
"operation_id",
"subaccount_id",
"timestamp",
"wallet"
],
"properties": {
"action_id": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"amount": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"batch_status": {
"$ref": "#/components/schemas/BatchStatus"
},
"batch_uuid": {
"type": "string"
},
"fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"new_subaccount": {
"type": "boolean"
},
"operation_id": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"tx_hash": {
"type": [
"string",
"null"
]
},
"wallet": {
"type": "string"
}
}
},
"DepositHistoryResult": {
"type": "object",
"required": [
"deposits"
],
"properties": {
"deposits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/DepositEntry"
}
}
}
},
"DepositType": {
"description": "How a deposit reached the protocol. `Standard` and `Instant` are the two CEX deposit-address flows: `Standard` (formerly `slow`) credits the depositor's own subaccount on-chain via its factory; `Instant` (formerly `fast`) pools every deposit and credits the owner off-chain from the factory's `DepositProcessed` events. `Direct` is a plain wallet deposit straight into a subaccount — no escrow, no factory. Only `Standard`/`Instant` are factory-routed (and registerable / sweepable); `Direct` is a read-only provenance tag.",
"type": "string",
"enum": [
"standard",
"instant",
"direct"
]
},
"Direction": {
"type": "string",
"enum": [
"buy",
"sell"
]
},
"EditSessionKeyRequest": {
"type": "object",
"required": [
"public_session_key",
"wallet"
],
"properties": {
"ip_whitelist": {
"default": null,
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"label": {
"default": null,
"type": [
"string",
"null"
]
},
"offchain_scopes": {
"default": null,
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"public_session_key": {
"type": "string"
},
"wallet": {
"type": "string"
}
}
},
"EmptyRequest": {
"description": "This method takes no parameters; send an empty object `{}`.",
"type": "null"
},
"Erc20Details": {
"type": "object",
"required": [
"decimals"
],
"properties": {
"decimals": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
},
"underlying_erc20": {
"description": "On-chain ERC20 token deposited into the spot asset (informational).",
"type": [
"string",
"null"
]
}
}
},
"ExecuteQuoteRequest": {
"type": "object",
"required": [
"direction",
"legs",
"max_fee",
"nonce",
"quote_id",
"rfq_id",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"client": {
"default": "",
"type": "string"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"enable_taker_protection": {
"default": false,
"type": "boolean"
},
"label": {
"default": "",
"type": "string"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"quote_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"referral_code": {
"default": "",
"type": "string"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"ExpirySettlementPrice": {
"description": "One settled expiry and its settlement price.",
"type": "object",
"required": [
"expiry_date",
"utc_expiry_sec"
],
"properties": {
"expiry_date": {
"description": "Expiry date in `YYYYMMDD` format.",
"type": "string"
},
"price": {
"description": "Settlement price. Only settled expiries are returned, so never null.",
"type": [
"string",
"null"
]
},
"utc_expiry_sec": {
"description": "UTC timestamp of expiry, unix seconds.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"ForceBurnRequest": {
"type": "object",
"required": [
"holder",
"subaccount_id"
],
"properties": {
"holder": {
"description": "The shareholder being exited.",
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The vault's subaccount ID.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"ForwardFeedDataResponse": {
"type": "object",
"required": [
"confidence",
"currency",
"deadline",
"expiry",
"fwd_diff",
"signatures",
"spot_aggregate_latest",
"spot_aggregate_start",
"timestamp"
],
"properties": {
"confidence": {
"type": "string"
},
"currency": {
"type": "string"
},
"deadline": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"expiry": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"fwd_diff": {
"type": "string"
},
"signatures": {
"$ref": "#/components/schemas/OracleSignatureDataResponse"
},
"spot_aggregate_latest": {
"type": "string"
},
"spot_aggregate_start": {
"type": "string"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"FundingFeedDataResponse": {
"type": "object",
"required": [
"confidence",
"currency",
"deadline",
"funding_rate",
"signatures",
"timestamp"
],
"properties": {
"confidence": {
"type": "string"
},
"currency": {
"type": "string"
},
"deadline": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"funding_rate": {
"description": "Per-hour funding rate as a decimal string.",
"type": "string"
},
"signatures": {
"$ref": "#/components/schemas/OracleSignatureDataResponse"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"FundingRateCandle": {
"description": "Single funding-rate OHLC candle. `funding_rate` mirrors `close` for backward compatibility with the pre-OHLC response shape; `timestamp` is the bucket start in UTC milliseconds.",
"type": "object",
"required": [
"close",
"currency",
"funding_rate",
"high",
"low",
"open",
"risk_universe_id",
"timestamp"
],
"properties": {
"close": {
"type": "string"
},
"currency": {
"type": "string"
},
"funding_rate": {
"type": "string"
},
"high": {
"type": "string"
},
"low": {
"type": "string"
},
"open": {
"type": "string"
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"timestamp": {
"type": "integer",
"format": "int64"
}
}
},
"FundingRateHistoryResult": {
"description": "Response shape for `public/get_funding_rate_history`.",
"type": "object",
"required": [
"funding_rate_history"
],
"properties": {
"funding_rate_history": {
"type": "array",
"items": {
"$ref": "#/components/schemas/FundingRateCandle"
}
}
}
},
"GetAccountRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"GetAlgoOrdersRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"GetAllInstrumentsRequest": {
"type": "object",
"required": [
"expired",
"instrument_type"
],
"properties": {
"currency": {
"default": null,
"type": [
"string",
"null"
]
},
"expired": {
"type": "boolean"
},
"instrument_type": {
"$ref": "#/components/schemas/AssetType"
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"risk_universe_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
}
},
"GetAllInstrumentsResponse": {
"type": "object",
"required": [
"instruments",
"pagination"
],
"properties": {
"instruments": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Instrument"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
},
"GetAllPortfoliosRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"GetAllReferralCodesParams": {
"type": "object"
},
"GetAssetsRequest": {
"type": "object",
"required": [
"asset_type",
"currency",
"expired"
],
"properties": {
"asset_type": {
"$ref": "#/components/schemas/AssetType"
},
"currency": {
"type": "string"
},
"expired": {
"type": "boolean"
}
}
},
"GetCollateralsRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetCuratedVaultsRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"description": "The curator wallet (0x hex).",
"type": "string"
}
}
},
"GetCurrencyRequest": {
"type": "object",
"required": [
"currency"
],
"properties": {
"currency": {
"type": "string"
}
}
},
"GetDepositHistoryRequest": {
"description": "Parameters for `private/get_deposit_history`. Takes `subaccount_id` plus an optional `[start_timestamp, end_timestamp]` window in unix milliseconds. `wallet`, when set, takes precedence over `subaccount_id` and returns the whole wallet's deposits. Results are capped at 1000 rows.",
"type": "object",
"properties": {
"end_timestamp": {
"description": "End of the window, unix milliseconds (default: unbounded / now).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"start_timestamp": {
"description": "Start of the window, unix milliseconds (default 0).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetErc20TransferHistoryRequest": {
"description": "Parameters for `private/get_erc20_transfer_history`. Matches `get_withdrawal_history`: `subaccount_id` plus an optional `[start_timestamp, end_timestamp]` window in unix milliseconds. `wallet`, when set, takes precedence over `subaccount_id` and returns the whole wallet's transfers. Results are capped at 1000 rows.",
"type": "object",
"properties": {
"end_timestamp": {
"description": "End of the window, unix milliseconds (default: unbounded / now).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"start_timestamp": {
"description": "Start of the window, unix milliseconds (default 0).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetFundingHistoryRequest": {
"description": "Parameters for `private/get_funding_history`.\n\n`subaccount_id`, `start_timestamp`, and `end_timestamp` accept either a JSON number or a string-encoded integer. Pagination is `page` >= 1, `page_size` in 1..=1000.",
"type": "object",
"properties": {
"end_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"instrument_name": {
"default": null,
"type": [
"string",
"null"
]
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetFundingRateHistoryRequest": {
"description": "Parameters for `public/get_funding_rate_history`. Timestamp fields accept either a JSON number or a string-encoded integer, and are UTC milliseconds.",
"type": "object",
"required": [
"instrument_name"
],
"properties": {
"end_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"instrument_name": {
"type": "string"
},
"period": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"start_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
}
}
},
"GetIndexChartDataRequest": {
"description": "Parameters for `public/get_index_chart_data`. Numeric fields accept either a JSON number or a string-encoded integer. Timestamps are UTC seconds.",
"type": "object",
"required": [
"currency",
"end_timestamp",
"period",
"start_timestamp"
],
"properties": {
"currency": {
"type": "string"
},
"end_timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"period": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"start_timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetInstrumentRequest": {
"type": "object",
"required": [
"instrument_name"
],
"properties": {
"instrument_name": {
"type": "string"
}
}
},
"GetInterestHistoryRequest": {
"description": "Parameters for `private/get_interest_history`. `wallet`, when set, takes precedence over `subaccount_id` and returns the whole wallet's settlements. `[start_timestamp, end_timestamp]` is a unix-millisecond window. Results are capped at 1000 rows, newest first.",
"type": "object",
"properties": {
"end_timestamp": {
"description": "End of the window, unix milliseconds (default: now / unbounded).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"start_timestamp": {
"description": "Start of the window, unix milliseconds (default 0).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetInterestRateHistoryRequest": {
"description": "Parameters for `public/get_interest_rate_history`. Timestamp fields accept either a JSON number or a string-encoded integer, and are UTC milliseconds.",
"type": "object",
"required": [
"currency"
],
"properties": {
"currency": {
"type": "string"
},
"end_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"period": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"risk_universe_id": {
"description": "Restrict to one risk universe's pool. Omit to return every universe's candles for the currency (each candle is tagged with its universe).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
}
}
},
"GetLatestSignedFeedsRequest": {
"type": "object",
"properties": {
"currency": {
"description": "Currency filter, (defaults to all currencies)",
"type": [
"string",
"null"
]
},
"expiry": {
"description": "Expiry filter for options and forward data (defaults to all expiries). Use `0` to get data only for spot and perpetuals.",
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
}
}
},
"GetLatestSignedFeedsResponse": {
"type": "object",
"required": [
"funding_data",
"fwd_data",
"perp_data",
"rate_data",
"spot_data",
"vol_data"
],
"properties": {
"funding_data": {
"description": "currency -> latest funding-rate feed data",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/FundingFeedDataResponse"
}
},
"fwd_data": {
"description": "currency -> expiry -> latest forward feed data",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ForwardFeedDataResponse"
}
}
},
"perp_data": {
"description": "currency -> feed type -> latest perp feed data",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/PerpFeedDataResponse"
}
}
},
"rate_data": {
"description": "currency -> expiry -> latest rate feed data",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RateFeedDataResponse"
}
}
},
"spot_data": {
"description": "currency -> latest spot feed data",
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/SpotFeedDataResponse"
}
},
"vol_data": {
"description": "currency -> expiry -> latest vol feed data",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/VolFeedDataResponse"
}
}
}
}
},
"GetLiquidationHistoryRequest": {
"description": "Parameters for `public/get_liquidation_history`. Omit `subaccount_id` to span every account. `[start_timestamp, end_timestamp]` is a unix-millisecond window over the auction *start*.",
"type": "object",
"properties": {
"end_timestamp": {
"description": "End of the window, unix milliseconds (default: unbounded).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"page": {
"description": "Page number, 1-based (default 1).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"description": "Results per page (default 100, max 1000).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_timestamp": {
"description": "Start of the window, unix milliseconds (default 0).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
}
}
},
"GetLiveBurnRequestsRequest": {
"type": "object",
"required": [
"limit",
"subaccount_id"
],
"properties": {
"limit": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetLiveMintRequestsRequest": {
"type": "object",
"required": [
"limit",
"subaccount_id"
],
"properties": {
"limit": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetLiveVaultRequestsRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"description": "The shareholder wallet (0x hex).",
"type": "string"
}
}
},
"GetOnchainActionHistoryParams": {
"type": "object",
"properties": {
"action_type": {
"description": "On-chain `actionType` id.",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"end_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"start_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"description": "L1 sender of the action (any hex casing).",
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetOnchainActionHistoryResponse": {
"type": "object",
"required": [
"actions",
"pagination"
],
"properties": {
"actions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OnchainActionHistoryEntry"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
},
"GetOpenOrdersRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"GetOptionSettlementHistoryParams": {
"description": "Parameters for `private/get_option_settlement_history`. One of `wallet` or `subaccount_id` must be provided; `wallet` returns every subaccount's settlements.",
"type": "object",
"properties": {
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetOptionSettlementPricesRequest": {
"description": "Parameters for `public/get_option_settlement_prices`.",
"type": "object",
"required": [
"currency"
],
"properties": {
"currency": {
"type": "string"
}
}
},
"GetOrderHistoryRequest": {
"type": "object",
"properties": {
"from_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"to_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetOrderRequest": {
"type": "object",
"required": [
"order_id",
"subaccount_id"
],
"properties": {
"order_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"GetPendingDepositsParams": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"description": "Wallet the pending deposits credit.",
"type": "string"
}
}
},
"GetPendingDepositsResult": {
"type": "object",
"required": [
"pending_deposits",
"wallet"
],
"properties": {
"pending_deposits": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PendingDepositEntry"
}
},
"wallet": {
"type": "string"
}
}
},
"GetPositionsRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetPublicTradeHistoryRequest": {
"type": "object",
"properties": {
"batch_status": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/BatchStatus"
},
{
"type": "null"
}
]
},
"currency": {
"default": null,
"type": [
"string",
"null"
]
},
"from_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"instrument_name": {
"default": null,
"type": [
"string",
"null"
]
},
"instrument_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/AssetType"
},
{
"type": "null"
}
]
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"to_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"trade_id": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetQuotesRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"from_timestamp": {
"default": 0,
"type": "integer",
"format": "int64"
},
"page": {
"default": 1,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"page_size": {
"default": 20,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"quote_id": {
"default": null,
"type": [
"string",
"null"
]
},
"rfq_id": {
"default": null,
"type": [
"string",
"null"
]
},
"status": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"to_timestamp": {
"default": 9223372036854775807,
"type": "integer",
"format": "int64"
}
}
},
"GetReferralPerformanceParams": {
"type": "object",
"required": [
"end_ms",
"start_ms"
],
"properties": {
"end_ms": {
"description": "End timestamp in UTC milliseconds.",
"type": "integer",
"format": "int64"
},
"referral_code": {
"description": "(Optional) referral code.",
"default": null,
"type": [
"string",
"null"
]
},
"start_ms": {
"description": "Start timestamp in UTC milliseconds.",
"type": "integer",
"format": "int64"
},
"wallet": {
"description": "(Optional) wallet of the referrer.",
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetReferralPerformanceResult": {
"type": "object",
"required": [
"fee_share_percentage",
"referral_code",
"rewards",
"stdrv_balance",
"total_builder_fee_collected",
"total_fee_rewards",
"total_notional_volume",
"total_referred_fees"
],
"properties": {
"fee_share_percentage": {
"type": "string"
},
"referral_code": {
"type": "string"
},
"rewards": {
"description": "Performance by liquidity role / currency / instrument type.",
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/ReferralPerformanceByInstrumentType"
}
}
}
},
"stdrv_balance": {
"type": "string"
},
"total_builder_fee_collected": {
"type": "string"
},
"total_fee_rewards": {
"type": "string"
},
"total_notional_volume": {
"type": "string"
},
"total_referred_fees": {
"type": "string"
}
}
},
"GetRfqsRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"from_timestamp": {
"default": 0,
"type": "integer",
"format": "int64"
},
"page": {
"default": 1,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"page_size": {
"default": 20,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"rfq_id": {
"default": null,
"type": [
"string",
"null"
]
},
"status": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"to_timestamp": {
"default": 9223372036854775807,
"type": "integer",
"format": "int64"
}
}
},
"GetShareholderVaultsRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"description": "The shareholder wallet (0x hex).",
"type": "string"
}
}
},
"GetSubaccountRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetSubaccountsRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"GetTickerRequest": {
"type": "object",
"required": [
"instrument_name"
],
"properties": {
"instrument_name": {
"type": "string"
}
}
},
"GetTickersRequest": {
"description": "Parameters for `public/get_tickers`. `expiry_date` accepts either a JSON number or a string-encoded 8-digit date (e.g. `20260511`).",
"type": "object",
"required": [
"instrument_type"
],
"properties": {
"currency": {
"default": null,
"type": [
"string",
"null"
]
},
"expiry_date": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"instrument_type": {
"$ref": "#/components/schemas/AssetType"
}
}
},
"GetTickersResponse": {
"description": "A map of instrument name to ticker: `{\"tickers\": {<instrument_name>: <ticker_data>}}`. Each ticker value matches the payload of a `ticker_slim.{instrument_name}.{interval}` subscription update.",
"type": "object",
"required": [
"tickers"
],
"properties": {
"tickers": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/TickerSlimSnapshot"
}
}
}
},
"GetTradeHistoryRequest": {
"type": "object",
"properties": {
"from_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"instrument_name": {
"default": null,
"type": [
"string",
"null"
]
},
"order_id": {
"default": null,
"type": [
"string",
"null"
]
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"quote_id": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"to_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"GetTradingviewChartDataRequest": {
"description": "Parameters for `public/get_tradingview_chart_data`. Numeric fields accept either a JSON number or a string-encoded integer. Timestamps are UTC seconds.",
"type": "object",
"required": [
"end_timestamp",
"instrument_name",
"period",
"start_timestamp"
],
"properties": {
"end_timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"instrument_name": {
"type": "string"
},
"period": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"start_timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetTransactionParams": {
"type": "object",
"required": [
"op_uuid"
],
"properties": {
"op_uuid": {
"type": "string"
}
}
},
"GetTransactionResult": {
"description": "`status` is the operation's batch status; `null` until the operation has been picked up for settlement.",
"type": "object",
"required": [
"data"
],
"properties": {
"data": {
"type": "string"
},
"error_log": {
"type": [
"string",
"null"
]
},
"status": {
"anyOf": [
{
"$ref": "#/components/schemas/BatchStatus"
},
{
"type": "null"
}
]
},
"transaction_hash": {
"type": [
"string",
"null"
]
}
}
},
"GetTriggerOrdersRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"GetVaultActionHistoryRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"event_type": {
"description": "Optional: \"vault_deposit\" | \"vault_withdraw\" | \"vault_fee_accrual\".",
"default": null,
"type": [
"string",
"null"
]
},
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetVaultPerformanceHistoryRequest": {
"type": "object",
"required": [
"resolution",
"subaccount_id"
],
"properties": {
"from": {
"description": "Optional inclusive lower bound (unix seconds).",
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"limit": {
"description": "Max points to return, newest first (default 1000, capped at 10000).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"resolution": {
"$ref": "#/components/schemas/PerformanceResolution"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"to": {
"description": "Optional exclusive upper bound (unix seconds).",
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
}
}
},
"GetVaultRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"GetVaultRequestHistoryRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"page": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"page_size": {
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"wallet": {
"description": "The shareholder wallet (0x hex).",
"type": "string"
}
}
},
"GetVaultSharesRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"description": "The shareholder wallet (0x hex).",
"type": "string"
}
}
},
"GetVaultsRequest": {
"type": "object",
"properties": {
"page": {
"default": 1,
"type": "integer",
"format": "uint",
"minimum": 0.0
},
"page_size": {
"default": 100,
"type": "integer",
"format": "uint",
"minimum": 0.0
}
}
},
"GetWalletsFromSessionKeyRequest": {
"type": "object",
"required": [
"public_session_key"
],
"properties": {
"public_session_key": {
"type": "string"
},
"scope": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/OffchainKeyScope"
},
{
"type": "null"
}
]
}
}
},
"GetWithdrawalHistoryRequest": {
"description": "Parameters for `private/get_withdrawal_history`. Matches `get_deposit_history`: `subaccount_id` plus an optional `[start_timestamp, end_timestamp]` window in unix milliseconds. `wallet`, when set, takes precedence over `subaccount_id` and returns the whole wallet's withdrawals. Results are capped at 1000 rows.",
"type": "object",
"properties": {
"end_timestamp": {
"description": "End of the window, unix milliseconds (default: unbounded / now).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"start_timestamp": {
"description": "Start of the window, unix milliseconds (default 0).",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"default": null,
"type": [
"string",
"null"
]
}
}
},
"IndexCandle": {
"description": "Single spot OHLC candle in `public/get_index_chart_data`. `price` mirrors the close; `timestamp` and `timestamp_bucket` are the bucket start in UTC seconds.",
"type": "object",
"required": [
"close_price",
"high_price",
"low_price",
"open_price",
"price",
"timestamp",
"timestamp_bucket"
],
"properties": {
"close_price": {
"type": "string"
},
"high_price": {
"type": "string"
},
"low_price": {
"type": "string"
},
"open_price": {
"type": "string"
},
"price": {
"type": "string"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"timestamp_bucket": {
"type": "integer",
"format": "int64"
}
}
},
"Instrument": {
"type": "object",
"required": [
"amount_step",
"base_asset_address",
"base_asset_sub_id",
"base_currency",
"base_fee",
"fifo_min_allocation",
"instrument_name",
"instrument_type",
"is_active",
"maker_fee_rate",
"maximum_amount",
"minimum_amount",
"pro_rata_amount_step",
"pro_rata_fraction",
"quote_currency",
"scheduled_activation",
"scheduled_deactivation",
"taker_fee_rate",
"tick_size"
],
"properties": {
"amount_step": {
"type": "string"
},
"base_asset_address": {
"description": "The traded asset's contract address — word 0 (`asset`) of the order action `data`. Use this (not `erc20_details`) when signing an order.",
"type": "string"
},
"base_asset_sub_id": {
"description": "The traded asset's sub-id — word 1 (`subId`) of the order action `data`. Decimal string; `\"0\"` for perps and spot.",
"type": "string"
},
"base_currency": {
"type": "string"
},
"base_fee": {
"type": "string"
},
"erc20_details": {
"anyOf": [
{
"$ref": "#/components/schemas/SpotPublicDetails"
},
{
"type": "null"
}
]
},
"fifo_min_allocation": {
"type": "string"
},
"instrument_name": {
"type": "string"
},
"instrument_type": {
"$ref": "#/components/schemas/AssetType"
},
"is_active": {
"type": "boolean"
},
"maker_fee_rate": {
"type": "string"
},
"mark_price_fee_rate_cap": {
"type": [
"string",
"null"
]
},
"maximum_amount": {
"type": "string"
},
"minimum_amount": {
"type": "string"
},
"option_details": {
"anyOf": [
{
"$ref": "#/components/schemas/OptionDetails"
},
{
"type": "null"
}
]
},
"perp_details": {
"anyOf": [
{
"$ref": "#/components/schemas/PerpDetails"
},
{
"type": "null"
}
]
},
"pro_rata_amount_step": {
"type": "string"
},
"pro_rata_fraction": {
"type": "string"
},
"quote_currency": {
"type": "string"
},
"scheduled_activation": {
"type": "integer",
"format": "int64"
},
"scheduled_deactivation": {
"type": "integer",
"format": "int64"
},
"taker_fee_rate": {
"type": "string"
},
"tick_size": {
"type": "string"
}
}
},
"InterestHistoryResult": {
"type": "object",
"required": [
"events"
],
"properties": {
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InterestPayment"
}
}
}
},
"InterestPayment": {
"description": "One realized interest settlement. `interest` is a decimal string; negative = paid, positive = received. `timestamp` is unix ms.",
"type": "object",
"required": [
"interest",
"subaccount_id",
"timestamp"
],
"properties": {
"interest": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"timestamp": {
"type": "integer",
"format": "int64"
}
}
},
"InterestRateCandle": {
"description": "One interest-rate candle: OHLC of the annualized borrow and supply APY plus the pool totals at the bucket close. `timestamp` is the bucket start in UTC milliseconds.",
"type": "object",
"required": [
"borrow_apy",
"risk_universe_id",
"supply_apy",
"timestamp",
"total_borrow",
"total_supply"
],
"properties": {
"borrow_apy": {
"$ref": "#/components/schemas/Ohlc"
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"supply_apy": {
"$ref": "#/components/schemas/Ohlc"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"total_borrow": {
"type": "string"
},
"total_supply": {
"type": "string"
}
}
},
"InterestRateHistoryResult": {
"description": "Response shape for `public/get_interest_rate_history`.",
"type": "object",
"required": [
"interest_rate_history"
],
"properties": {
"interest_rate_history": {
"type": "array",
"items": {
"$ref": "#/components/schemas/InterestRateCandle"
}
}
}
},
"LegUnpricedParams": {
"type": "object",
"required": [
"amount",
"direction",
"instrument_name"
],
"properties": {
"amount": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"instrument_name": {
"type": "string"
}
}
},
"LendingDetails": {
"description": "Lending pool stats for a `(spot_asset, universe)` pair. The pool's total supply is reported in the `current_open_interest` field.",
"type": "object",
"required": [
"borrow_apy",
"supply_apy",
"total_borrow",
"total_borrow_cap"
],
"properties": {
"borrow_apy": {
"type": "string"
},
"supply_apy": {
"type": "string"
},
"total_borrow": {
"type": "string"
},
"total_borrow_cap": {
"description": "Borrow ceiling for this lending asset in this universe.",
"type": "string"
}
}
},
"LiquidationHistoryResult": {
"type": "object",
"required": [
"auctions",
"pagination"
],
"properties": {
"auctions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/AuctionHistory"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
},
"LiquidityRole": {
"type": "string",
"enum": [
"maker",
"taker"
]
},
"ManagerCollateral": {
"description": "A spot asset the manager accepts as collateral, with deposit metadata and the manager's margin discounts for it (\"1\" = full credit, cash).",
"type": "object",
"required": [
"address",
"erc20",
"im_discount",
"min_deposit_usd",
"mm_discount",
"name"
],
"properties": {
"address": {
"description": "EIP-55 checksummed protocol asset address — the `asset` argument when depositing.",
"type": "string"
},
"erc20": {
"$ref": "#/components/schemas/Erc20Details"
},
"im_discount": {
"description": "Initial-margin credit for the asset under this manager.",
"type": "string"
},
"min_deposit_usd": {
"type": "string"
},
"mm_discount": {
"description": "Maintenance-margin credit for the asset under this manager.",
"type": "string"
},
"name": {
"description": "Registered asset name (e.g. \"USDC\").",
"type": "string"
}
}
},
"MarginType": {
"description": "Margin model applied by a manager: `SM` (standard, cross-collateral) or `PM2` (portfolio, scenario-based netting).",
"type": "string",
"enum": [
"SM",
"PM2"
]
},
"MarketType": {
"type": "string",
"enum": [
"ALL",
"SRM_BASE_ONLY",
"SRM_OPTION_ONLY",
"SRM_PERP_ONLY",
"CASH"
]
},
"MintSharesRequest": {
"description": "Fields common to every signed vault action. They appear alongside each endpoint's action-specific parameters in the same request object.",
"type": "object",
"required": [
"deposit_hash",
"nonce",
"request_id",
"share_price",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"deposit_hash": {
"description": "0x-prefixed hex of the 32-byte user deposit-action hash.",
"type": "string"
},
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"request_id": {
"$ref": "#/components/schemas/VaultRequestId"
},
"share_price": {
"description": "Quoted share price in USD per share, as a decimal string (e.g. `\"1.02\"`).",
"type": "string",
"format": "decimal"
},
"signature": {
"description": "0x-prefixed hex of the 65-byte EOA signature.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The subaccount the action is signed on; which subaccount applies depends on the specific method — see that method's reference.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"MmpConfigResult": {
"type": "object",
"required": [
"currency",
"is_frozen",
"mmp_amount_limit",
"mmp_delta_limit",
"mmp_frozen_time",
"mmp_interval",
"mmp_unfreeze_time",
"subaccount_id"
],
"properties": {
"currency": {
"type": "string"
},
"is_frozen": {
"type": "boolean"
},
"mmp_amount_limit": {
"type": "string"
},
"mmp_delta_limit": {
"type": "string"
},
"mmp_frozen_time": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"mmp_interval": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"mmp_unfreeze_time": {
"type": "integer",
"format": "int64"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"MmpScopeRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"currency": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"MultipleVaultRequestsResponse": {
"description": "Returned by `get_live_mint_requests` / `get_live_burn_requests`: a FIFO page plus the queue's total live length (so the caller can paginate).",
"type": "object",
"required": [
"requests",
"total"
],
"properties": {
"requests": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VaultRequestResponse"
}
},
"total": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"OffchainAckResponse": {
"description": "A generic `{ \"status\": \"ok\" }` acknowledgement returned by fire-and-forget operations that have no data to return (e.g. updating account settings, MMP config, or the active currency).",
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"type": "string"
}
}
},
"OffchainKeyScope": {
"description": "Additional permission scopes enforced off-chain (not part of the on-chain session-key scopes).",
"type": "string",
"enum": [
"account_info"
]
},
"Ohlc": {
"description": "Open, high, low, and close for one series, each a decimal string.",
"type": "object",
"required": [
"close",
"high",
"low",
"open"
],
"properties": {
"close": {
"type": "string"
},
"high": {
"type": "string"
},
"low": {
"type": "string"
},
"open": {
"type": "string"
}
}
},
"OnchainActionHistoryEntry": {
"type": "object",
"required": [
"acc",
"action_id",
"action_type",
"action_type_label",
"block_number",
"data",
"l1_sender",
"queue",
"status",
"updated_at"
],
"properties": {
"acc": {
"description": "Rolling accumulator from the ActionQueued event, 0x-hex.",
"type": "string"
},
"action_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"action_type": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"action_type_label": {
"type": "string"
},
"block_number": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"data": {
"description": "Raw action calldata, 0x-hex.",
"type": "string"
},
"error_code": {
"description": "Most recent submit rejection; null if the action never failed. Kept on applied/fallback rows as the reason the action struggled. The verbose error text stays internal (ClickHouse only).",
"type": [
"integer",
"null"
],
"format": "int64"
},
"error_message": {
"type": [
"string",
"null"
]
},
"fallback_at": {
"description": "Unix ms the action was escalated with `fallback=true`; null if never escalated.",
"type": [
"integer",
"null"
],
"format": "int64"
},
"first_failed_at": {
"description": "Unix ms of the first failed submit; null if the action never failed.",
"type": [
"integer",
"null"
],
"format": "int64"
},
"l1_sender": {
"type": "string"
},
"last_failed_at": {
"description": "Unix ms of the most recent failed submit; null if never failed.",
"type": [
"integer",
"null"
],
"format": "int64"
},
"op_uuid": {
"description": "Operation uuid assigned by the sequencer; null until applied.",
"type": [
"string",
"null"
]
},
"queue": {
"description": "Onchain queue: 'public' or 'admin'.",
"type": "string"
},
"status": {
"description": "Sequencer applied states: 'applied' | 'applied_with_fallback' Failed States: 'instant_fallback' | 'retry_then_fallback' | 'never_escalate'",
"type": "string"
},
"tx_hash": {
"type": [
"string",
"null"
]
},
"updated_at": {
"description": "Unix ms of the latest state change.",
"type": "integer",
"format": "int64"
}
}
},
"OpenInterestStats": {
"type": "object",
"required": [
"current_open_interest",
"interest_cap"
],
"properties": {
"current_open_interest": {
"type": "string"
},
"interest_cap": {
"type": "string"
}
}
},
"OptionDetails": {
"type": "object",
"required": [
"expiry",
"index",
"option_type",
"strike"
],
"properties": {
"expiry": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"index": {
"type": "string"
},
"option_type": {
"type": "string"
},
"settlement_price": {
"type": [
"string",
"null"
]
},
"strike": {
"type": "string"
}
}
},
"OptionPricing": {
"type": "object",
"required": [
"ai",
"bi",
"d",
"df",
"f",
"g",
"i",
"m",
"r",
"t",
"v"
],
"properties": {
"ai": {
"description": "Implied volatility of the current best ask.",
"type": "string"
},
"bi": {
"description": "Implied volatility of the current best bid.",
"type": "string"
},
"d": {
"description": "Delta of the option.",
"type": "string"
},
"df": {
"description": "Discount factor used to calculate the option premium.",
"type": "string"
},
"f": {
"description": "Forward price used to calculate the option premium.",
"type": "string"
},
"g": {
"description": "Gamma of the option.",
"type": "string"
},
"i": {
"description": "Implied volatility of the option.",
"type": "string"
},
"m": {
"description": "Mark price of the option.",
"type": "string"
},
"r": {
"description": "Rho of the option.",
"type": "string"
},
"t": {
"description": "Theta of the option.",
"type": "string"
},
"v": {
"description": "Vega of the option.",
"type": "string"
}
}
},
"OptionSettlementHistoryResponse": {
"type": "object",
"required": [
"settlements"
],
"properties": {
"settlements": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OptionSettlementResponse"
}
}
}
},
"OptionSettlementPricesResult": {
"type": "object",
"required": [
"expiries"
],
"properties": {
"expiries": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ExpirySettlementPrice"
}
}
}
},
"OptionSettlementResponse": {
"description": "One settled option position.",
"type": "object",
"required": [
"amount",
"expiry",
"instrument_name",
"settlement_price",
"settlement_value",
"subaccount_id"
],
"properties": {
"amount": {
"description": "Settled balance (negative = short, positive = long).",
"type": "string"
},
"expiry": {
"description": "Expiry of the option, unix seconds.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"instrument_name": {
"type": "string"
},
"settlement_price": {
"type": "string"
},
"settlement_value": {
"description": "Crystallized cash value = intrinsic value * amount.",
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"OracleSignatureDataResponse": {
"type": "object",
"required": [
"signatures",
"signers"
],
"properties": {
"signatures": {
"type": "array",
"items": {
"type": "string"
}
},
"signers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Address"
}
}
}
},
"Order": {
"type": "object",
"required": [
"amount",
"average_price",
"creation_timestamp",
"direction",
"extra_fee",
"filled_amount",
"instrument_name",
"is_transfer",
"last_update_timestamp",
"limit_price",
"max_fee",
"mmp",
"nonce",
"order_fee",
"order_id",
"order_status",
"order_type",
"quote_id",
"replaced_order_id",
"signature",
"signature_expiry_sec",
"signed_limit_price",
"signer",
"subaccount_id",
"time_in_force",
"trigger_price"
],
"properties": {
"algo_duration_sec": {
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_num_slices": {
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_slices_completed": {
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_type": {
"anyOf": [
{
"$ref": "#/components/schemas/AlgoType"
},
{
"type": "null"
}
]
},
"amount": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"average_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"cancel_reason": {
"default": "",
"$ref": "#/components/schemas/CancelReason"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"filled_amount": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"instrument_name": {
"type": "string"
},
"is_transfer": {
"type": "boolean"
},
"label": {
"default": "",
"type": "string"
},
"last_update_timestamp": {
"type": "integer",
"format": "int64"
},
"limit_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"max_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"mmp": {
"type": "boolean"
},
"nonce": {
"type": "string"
},
"order_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"order_id": {
"type": "string"
},
"order_status": {
"$ref": "#/components/schemas/OrderStatus"
},
"order_type": {
"$ref": "#/components/schemas/OrderType"
},
"quote_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"replaced_order_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signed_limit_price": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"signer": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"time_in_force": {
"$ref": "#/components/schemas/TimeInForce"
},
"trigger_price": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"trigger_price_type": {
"anyOf": [
{
"$ref": "#/components/schemas/TriggerPriceType"
},
{
"type": "null"
}
]
},
"trigger_reject_message": {
"type": [
"string",
"null"
]
},
"trigger_type": {
"anyOf": [
{
"$ref": "#/components/schemas/TriggerType"
},
{
"type": "null"
}
]
}
}
},
"OrderActionDataResponse": {
"type": "object",
"required": [
"asset_address",
"asset_sub_id",
"desired_amount",
"is_bid",
"limit_price",
"recipient_id",
"worst_fee"
],
"properties": {
"asset_address": {
"type": "string"
},
"asset_sub_id": {
"type": "string"
},
"desired_amount": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"is_bid": {
"type": "boolean"
},
"limit_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"recipient_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"worst_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
}
}
},
"OrderActionInputData": {
"description": "The `Action` envelope a debug route rebuilt from the request inputs, plus its decoded action data — i.e. what the signature commits to.",
"type": "object",
"required": [
"data",
"expiry",
"module",
"nonce",
"owner",
"signer",
"subaccount_id"
],
"properties": {
"data": {
"$ref": "#/components/schemas/OrderActionDataResponse"
},
"expiry": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"module": {
"type": "string"
},
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"owner": {
"type": "string"
},
"signer": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"OrderCreatedResponse": {
"type": "object",
"required": [
"order",
"trades"
],
"properties": {
"order": {
"$ref": "#/components/schemas/Order"
},
"trades": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Trade"
}
}
}
},
"OrderDebugResponse": {
"description": "Debug-route payload for one rebuilt action: the EIP-712 hashes plus the action input fields.",
"type": "object",
"required": [
"action_hash",
"action_typehash",
"domain_separator",
"encoded_data",
"encoded_data_hashed",
"expected_signer",
"input_data",
"module",
"owner",
"typed_data_hash"
],
"properties": {
"action_hash": {
"description": "EIP-712 struct hash of the `Action`: `keccak256(abi.encode(action_typehash, …, encoded_data_hashed, …))`.",
"type": "string"
},
"action_typehash": {
"description": "`ACTION_TYPEHASH` — keccak of the `Action` struct type string; invariant across deployments.",
"type": "string"
},
"domain_separator": {
"description": "EIP-712 domain separator of the Matching contract for this deployment.",
"type": "string"
},
"encoded_data": {
"description": "ABI-encoded, module-specific action payload (the `data` bytes), 0x-hex.",
"type": "string"
},
"encoded_data_hashed": {
"description": "`keccak256(encoded_data)` — the value packed into the struct hash.",
"type": "string"
},
"expected_signer": {
"description": "The signer the signature is checked against.",
"type": "string"
},
"input_data": {
"description": "The rebuilt `Action` envelope and its decoded module-specific `data`.",
"$ref": "#/components/schemas/OrderActionInputData"
},
"module": {
"description": "Per-action module contract address bound into the signed struct.",
"type": "string"
},
"owner": {
"description": "Wallet that owns the subaccount the action applies to.",
"type": "string"
},
"recovered_signer": {
"description": "null on the debug routes (no signature is checked there); on a signature-mismatch error this is the address actually recovered.",
"type": [
"string",
"null"
]
},
"typed_data_hash": {
"description": "Final EIP-712 digest the client signs: `keccak256(0x1901 || domain_separator || action_hash)`.",
"type": "string"
}
}
},
"OrderQuoteRequest": {
"description": "Parameters for `public/order_quote` and `private/order_quote`.",
"type": "object",
"required": [
"amount",
"direction",
"instrument_name",
"limit_price",
"max_fee",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"amount": {
"description": "Order amount in units of the base, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"client": {
"default": "",
"type": "string"
},
"direction": {
"description": "Order direction",
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Optional extra fee per unit of volume, as a decimal string or JSON number. Defaults to zero.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"instrument_name": {
"description": "Instrument name",
"type": "string"
},
"is_atomic_signing": {
"default": false,
"type": "boolean"
},
"label": {
"default": "",
"type": "string"
},
"limit_price": {
"description": "Limit price in quote currency, as a decimal string or a JSON number.",
"type": "string",
"format": "decimal"
},
"max_fee": {
"description": "Max fee per unit of volume in quote currency, as a decimal string or a JSON number.",
"type": "string",
"format": "decimal"
},
"mmp": {
"default": false,
"type": "boolean"
},
"nonce": {
"description": "Nonce.",
"type": "string"
},
"order_type": {
"default": "limit",
"$ref": "#/components/schemas/OrderType"
},
"reduce_only": {
"default": false,
"type": "boolean"
},
"referral_code": {
"default": "",
"type": "string"
},
"reject_post_only": {
"default": true,
"type": "boolean"
},
"reject_timestamp": {
"default": 9223372036854775807,
"type": "integer",
"format": "int64"
},
"signature": {
"description": "Ethereum signature of the order.",
"type": "string"
},
"signature_expiry_sec": {
"description": "Signature expiry (unix seconds).",
"type": "integer",
"format": "int64"
},
"signer": {
"description": "Owner wallet or session key that signed the order.",
"type": "string"
},
"subaccount_id": {
"description": "Subaccount ID",
"type": "integer",
"format": "int64"
},
"time_in_force": {
"default": "gtc",
"$ref": "#/components/schemas/TimeInForce"
},
"trigger_price": {
"description": "Trigger price as a decimal string or JSON number; omit for non-trigger orders.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"trigger_price_type": {
"anyOf": [
{
"$ref": "#/components/schemas/TriggerPriceType"
},
{
"type": "null"
}
]
},
"trigger_type": {
"anyOf": [
{
"$ref": "#/components/schemas/TriggerType"
},
{
"type": "null"
}
]
}
}
},
"OrderQuoteResponse": {
"description": "Estimated fill price, fees, and resulting margin for a proposed order — a non-binding dry-run. All price, fee, and margin fields are decimal strings.",
"type": "object",
"required": [
"estimated_fee",
"estimated_fill_amount",
"estimated_fill_price",
"estimated_order_status",
"estimated_realized_pnl",
"estimated_realized_pnl_excl_fees",
"is_valid",
"post_initial_margin",
"pre_initial_margin",
"suggested_max_fee"
],
"properties": {
"estimated_fee": {
"type": "string"
},
"estimated_fill_amount": {
"type": "string"
},
"estimated_fill_price": {
"type": "string"
},
"estimated_order_status": {
"$ref": "#/components/schemas/OrderStatus"
},
"estimated_realized_pnl": {
"type": "string"
},
"estimated_realized_pnl_excl_fees": {
"type": "string"
},
"invalid_reason": {
"type": [
"string",
"null"
]
},
"is_valid": {
"type": "boolean"
},
"max_amount": {
"type": [
"string",
"null"
]
},
"post_initial_margin": {
"type": "string"
},
"post_liquidation_price": {
"type": [
"string",
"null"
]
},
"pre_initial_margin": {
"type": "string"
},
"suggested_max_fee": {
"type": "string"
}
}
},
"OrderStatus": {
"type": "string",
"enum": [
"open",
"filled",
"rejected",
"cancelled",
"expired",
"untriggered",
"algo_active"
]
},
"OrderType": {
"type": "string",
"enum": [
"limit",
"market"
]
},
"PaginatedOrdersResult": {
"type": "object",
"required": [
"orders",
"pagination",
"subaccount_id"
],
"properties": {
"orders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Order"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"PaginatedTradesResult": {
"type": "object",
"required": [
"pagination",
"subaccount_id",
"trades"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"trades": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TradeHistoryResponse"
}
}
}
},
"PaginatedVaultActionHistory": {
"type": "object",
"required": [
"events",
"pagination",
"subaccount_id"
],
"properties": {
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicVaultActionResponse"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PaginatedVaultRequestHistory": {
"type": "object",
"required": [
"actions",
"pagination",
"wallet"
],
"properties": {
"actions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VaultActionResponse"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"wallet": {
"type": "string"
}
}
},
"Pagination": {
"description": "Response envelope for paginated RPCs.",
"type": "object",
"required": [
"count",
"num_pages"
],
"properties": {
"count": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"num_pages": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PendingDepositEntry": {
"type": "object",
"required": [
"action_id",
"action_type",
"amount",
"asset",
"block_number",
"deposit_type",
"log_index",
"manager_id",
"status",
"subaccount_id",
"timestamp",
"tx_hash",
"updated_at_ms"
],
"properties": {
"action_id": {
"description": "Per-queue id assigned by the `OnchainActionManager`; `0` for fast deposits (indexed from the factory event, not the pooled OAM action).",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"action_type": {
"description": "`Deposit` (existing subaccount), `DepositToNewSubaccount`, or `FastDeposit` (pooled, credited off-chain).",
"type": "string"
},
"amount": {
"description": "Amount in the asset's native ERC-20 units, as a decimal string.",
"type": "string"
},
"asset": {
"type": "string"
},
"block_number": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"credit_nonce": {
"description": "Fast only: the credit transfer's nonce, disambiguating a deposit's entries. Absent on slow entries and the uncredited remainder. Decimal string — the value exceeds JS number precision.",
"type": [
"string",
"null"
]
},
"deposit_type": {
"description": "`slow` or `fast`.",
"type": "string"
},
"log_index": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"manager_id": {
"description": "Manager of the new subaccount; `0` for existing-subaccount deposits.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"status": {
"description": "`detected` (transfer seen at the tip, pre-confirmation) `pending` (escrow swept, awaiting confirmation) `confirmed` (sweep tx past the confirmation range) `reverted` (the sweep reorged out — or uncreditable: no valid destination exists) Fast deposits additionally show: `crediting` (transfer in flight), `credited` (paid out) `partial_revert` (reorged out after a chunk was paid)",
"type": "string"
},
"subaccount_id": {
"description": "Credited subaccount; `0` for new-subaccount deposits.",
"type": "integer",
"format": "int64"
},
"timestamp": {
"description": "Milliseconds when the tracker first picked up the deposit - approximates the block timestamp of `block_number`. Shared by all of a deposit's entries.",
"type": "integer",
"format": "int64"
},
"tx_hash": {
"type": "string"
},
"updated_at_ms": {
"type": "integer",
"format": "int64"
}
}
},
"PerformanceResolution": {
"description": "Quantization of the hourly samples, requested by the caller.",
"type": "string",
"enum": [
"1h",
"8h",
"24h",
"1wk"
]
},
"PerpDetails": {
"type": "object",
"required": [
"aggregate_funding",
"funding_rate",
"index",
"max_rate_per_hour",
"min_rate_per_hour"
],
"properties": {
"aggregate_funding": {
"type": "string"
},
"funding_rate": {
"type": "string"
},
"index": {
"type": "string"
},
"max_rate_per_hour": {
"type": "string"
},
"min_rate_per_hour": {
"type": "string"
}
}
},
"PerpFeedDataResponse": {
"type": "object",
"required": [
"confidence",
"currency",
"deadline",
"signatures",
"spot_diff_value",
"timestamp",
"type"
],
"properties": {
"confidence": {
"type": "string"
},
"currency": {
"type": "string"
},
"deadline": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signatures": {
"$ref": "#/components/schemas/OracleSignatureDataResponse"
},
"spot_diff_value": {
"type": "string"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"type": {
"type": "string"
}
}
},
"PerpSettlementEventResponse": {
"type": "object",
"required": [
"batch_status",
"batch_uuid",
"funding",
"instrument_name",
"pnl",
"subaccount_id",
"timestamp"
],
"properties": {
"batch_status": {
"$ref": "#/components/schemas/BatchStatus"
},
"batch_uuid": {
"description": "UUID of the settlement batch; a settlement in a reverted or errored batch reflects that status.",
"type": "string"
},
"funding": {
"type": "string"
},
"instrument_name": {
"type": "string"
},
"pnl": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"tx_hash": {
"type": [
"string",
"null"
]
}
}
},
"PerpSettlementHistoryResponse": {
"type": "object",
"required": [
"events",
"pagination"
],
"properties": {
"events": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PerpSettlementEventResponse"
}
},
"pagination": {
"$ref": "#/components/schemas/Pagination"
}
}
},
"PollQuotesRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"from_timestamp": {
"default": 0,
"type": "integer",
"format": "int64"
},
"page": {
"default": 1,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"page_size": {
"default": 20,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"quote_id": {
"default": null,
"type": [
"string",
"null"
]
},
"rfq_id": {
"default": null,
"type": [
"string",
"null"
]
},
"status": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"to_timestamp": {
"default": 9223372036854775807,
"type": "integer",
"format": "int64"
}
}
},
"PollRfqsRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"from_timestamp": {
"default": 0,
"type": "integer",
"format": "int64"
},
"page": {
"default": 1,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"page_size": {
"default": 20,
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"rfq_id": {
"default": null,
"type": [
"string",
"null"
]
},
"rfq_subaccount_id": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"status": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"to_timestamp": {
"default": 9223372036854775807,
"type": "integer",
"format": "int64"
}
}
},
"Position": {
"type": "object",
"required": [
"amount",
"amount_step",
"average_price",
"average_price_excl_fees",
"creation_timestamp",
"cumulative_funding",
"delta",
"gamma",
"index_price",
"initial_margin",
"instrument_name",
"instrument_type",
"maintenance_margin",
"mark_price",
"mark_value",
"net_settlements",
"open_orders_margin",
"pending_funding",
"realized_pnl",
"realized_pnl_excl_fees",
"theta",
"total_fees",
"unrealized_pnl",
"unrealized_pnl_excl_fees",
"vega"
],
"properties": {
"amount": {
"type": "string"
},
"amount_step": {
"type": "string"
},
"average_price": {
"type": "string"
},
"average_price_excl_fees": {
"type": "string"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"cumulative_funding": {
"type": "string"
},
"delta": {
"type": "string"
},
"gamma": {
"type": "string"
},
"index_price": {
"type": "string"
},
"initial_margin": {
"type": "string"
},
"instrument_name": {
"type": "string"
},
"instrument_type": {
"$ref": "#/components/schemas/AssetType"
},
"leverage": {
"type": [
"string",
"null"
]
},
"liquidation_price": {
"type": [
"string",
"null"
]
},
"maintenance_margin": {
"type": "string"
},
"mark_price": {
"type": "string"
},
"mark_value": {
"type": "string"
},
"net_settlements": {
"type": "string"
},
"open_orders_margin": {
"type": "string"
},
"pending_funding": {
"type": "string"
},
"realized_pnl": {
"type": "string"
},
"realized_pnl_excl_fees": {
"type": "string"
},
"theta": {
"type": "string"
},
"total_fees": {
"type": "string"
},
"unrealized_pnl": {
"type": "string"
},
"unrealized_pnl_excl_fees": {
"type": "string"
},
"vega": {
"type": "string"
}
}
},
"PricedLegParamsAndResponse": {
"type": "object",
"required": [
"amount",
"direction",
"instrument_name",
"price"
],
"properties": {
"amount": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"instrument_name": {
"type": "string"
},
"price": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
}
}
},
"PrivateChangeSubaccountLabelResponse": {
"type": "object",
"required": [
"label",
"subaccount_id"
],
"properties": {
"label": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateGetAccountResponse": {
"type": "object",
"required": [
"cancel_on_disconnect",
"fallback_subaccount_id",
"fee_info",
"is_rfq_maker",
"per_endpoint_tps",
"subaccount_ids",
"wallet",
"websocket_matching_tps",
"websocket_non_matching_tps",
"websocket_option_tps",
"websocket_perp_tps",
"whitelisted_recipients"
],
"properties": {
"cancel_on_disconnect": {
"type": "boolean"
},
"creation_timestamp_sec": {
"type": [
"integer",
"null"
],
"format": "uint64",
"minimum": 0.0
},
"fallback_subaccount_id": {
"description": "Subaccount that receives deposits whose requested destination is unusable — unknown manager id, or the per-wallet subaccount cap already reached. Allocated with the account, and always in the fallback risk universe (id 0).",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"fee_info": {
"$ref": "#/components/schemas/AccountFeeInfo"
},
"is_rfq_maker": {
"type": "boolean"
},
"per_endpoint_tps": {
"type": "object",
"additionalProperties": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
}
},
"referral_code": {
"type": [
"string",
"null"
]
},
"subaccount_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
},
"wallet": {
"type": "string"
},
"websocket_matching_tps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"websocket_non_matching_tps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"websocket_option_tps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"websocket_perp_tps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"whitelisted_recipients": {
"description": "Recipients that session keys may withdraw or transfer ERC-20s to. The owner and `Admin`-scoped session keys bypass this list.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"PrivateGetCollateralsResponse": {
"type": "object",
"required": [
"collaterals",
"subaccount_id"
],
"properties": {
"collaterals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Collateral"
}
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateGetPositionsResponse": {
"type": "object",
"required": [
"positions",
"subaccount_id"
],
"properties": {
"positions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Position"
}
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateGetSubaccountsResponse": {
"type": "object",
"required": [
"subaccount_ids",
"wallet"
],
"properties": {
"subaccount_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
},
"wallet": {
"type": "string"
}
}
},
"PrivateLiquidateRequest": {
"type": "object",
"required": [
"cash_transfer",
"last_seen_trade_id",
"liquidate_subaccount_id",
"merge_account",
"nonce",
"percent_of_acc",
"price_limit",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"cash_transfer": {
"description": "Cash to transfer during liquidation, in USD as a decimal string (e.g. `\"5.0\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"last_seen_trade_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"liquidate_subaccount_id": {
"description": "Subaccount being liquidated.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"merge_account": {
"type": "boolean"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"percent_of_acc": {
"description": "Fraction of the account to liquidate (`\"1.0\"` = 100%), decimal string or JSON number. Must be a whole percent, i.e. a multiple of `\"0.01\"`.",
"type": "string",
"format": "decimal"
},
"price_limit": {
"description": "Signed limit price (`\"0\"` opts out), decimal string or JSON number.",
"type": "string",
"format": "decimal"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"subaccount_id": {
"description": "Bidder subaccount.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateLiquidateResponse": {
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateSessionKeysResponse": {
"type": "object",
"required": [
"public_session_keys"
],
"properties": {
"public_session_keys": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SessionKey"
}
}
}
},
"PrivateSetSessionKeyResponse": {
"type": "object",
"required": [
"expiry_sec",
"ip_whitelist",
"offchain_scopes",
"protocol_scopes",
"public_session_key",
"subaccount_ids"
],
"properties": {
"expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"ip_whitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"label": {
"type": [
"string",
"null"
]
},
"offchain_scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"protocol_scopes": {
"type": "array",
"items": {
"type": "string"
}
},
"public_session_key": {
"type": "string"
},
"subaccount_ids": {
"description": "Subaccounts the key may act on. Empty/omitted request (all subaccounts) is expanded to the wallet's current subaccount list.",
"type": "array",
"items": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
}
},
"PrivateTransferSpotExternalRequest": {
"type": "object",
"required": [
"amount",
"asset_name",
"max_fee_usd",
"new_subaccount_manager",
"nonce",
"recipient_address",
"signature",
"signature_expiry_sec",
"signer",
"sub_id",
"subaccount_id",
"to_subaccount_id"
],
"properties": {
"amount": {
"description": "Transfer amount in units of the asset, as a decimal string (e.g. `\"1.5\"`) or JSON number.",
"type": "string",
"format": "decimal"
},
"asset_name": {
"type": "string"
},
"max_fee_usd": {
"description": "Maximum sequencer fee the signer authorises, in USD, as a decimal string (e.g. `\"1.5\"`) or a JSON number. Must cover both the transfer fee and any subaccount-creation fee.",
"type": "string",
"format": "decimal"
},
"new_subaccount_manager": {
"description": "Manager id for the new subaccount when `to_subaccount_id == 0`.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"nonce": {
"type": "integer",
"format": "int64"
},
"recipient_address": {
"description": "Owner of the destination account/subaccount.",
"type": "string"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"sub_id": {
"type": "integer",
"format": "uint128",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"to_subaccount_id": {
"description": "Recipient's existing destination subaccount. `0` → create a new subaccount for `recipient_address` under `new_subaccount_manager`.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateTransferSpotExternalResponse": {
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateTransferSpotRequest": {
"type": "object",
"required": [
"amount",
"asset_name",
"max_fee_usd",
"new_subaccount_manager",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"sub_id",
"subaccount_id",
"to_subaccount_id"
],
"properties": {
"amount": {
"description": "Transfer amount in units of the asset, as a decimal string (e.g. `\"1.5\"`) or JSON number.",
"type": "string",
"format": "decimal"
},
"asset_name": {
"type": "string"
},
"max_fee_usd": {
"description": "Maximum sequencer fee the signer authorises, in USD, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"new_subaccount_manager": {
"description": "Non-zero → create a new sender-owned subaccount under this manager id.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"nonce": {
"type": "integer",
"format": "int64"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"sub_id": {
"type": "integer",
"format": "uint128",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"to_subaccount_id": {
"description": "Existing destination subaccount. Ignored when `new_subaccount_manager != 0`.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateTransferSpotResponse": {
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateWithdrawRequest": {
"type": "object",
"required": [
"amount_in_underlying",
"asset_name",
"force_batch",
"max_fee_usd",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"amount_in_underlying": {
"type": "string"
},
"asset_name": {
"type": "string"
},
"force_batch": {
"type": "boolean"
},
"max_fee_usd": {
"description": "Maximum sequencer fee the signer authorises, in USD, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"recipient": {
"description": "L1 address the funds are paid out to. Defaults to the subaccount's owner wallet when omitted.\n\nA non-owner signer (session key) may only pay out to an address on the owner's `whitelisted_recipients`, unless the key holds `Admin`.",
"default": null,
"type": [
"string",
"null"
]
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PrivateWithdrawResponse": {
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"ProtocolVault": {
"type": "object",
"required": [
"closed",
"config",
"global_hwm",
"last_fee_settled_at_sec",
"protocol_fee_share_bps",
"subaccount_id",
"total_shares"
],
"properties": {
"closed": {
"type": "boolean"
},
"config": {
"$ref": "#/components/schemas/VaultConfig"
},
"global_hwm": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"last_fee_settled_at_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"protocol_fee_share_bps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"total_shares": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
}
}
},
"PublicExecuteQuoteDebugRequest": {
"type": "object",
"required": [
"direction",
"legs",
"max_fee",
"nonce",
"quote_id",
"rfq_id",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"direction": {
"$ref": "#/components/schemas/Direction"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"quote_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PublicGetWalletsFromSessionKeyResponse": {
"type": "object",
"required": [
"wallets"
],
"properties": {
"wallets": {
"type": "array",
"items": {
"type": "string"
}
}
}
},
"PublicQuote": {
"type": "object",
"required": [
"cancel_reason",
"creation_timestamp",
"direction",
"fill_pct",
"last_update_timestamp",
"legs",
"legs_hash",
"liquidity_role",
"quote_id",
"rfq_id",
"status",
"subaccount_id",
"wallet"
],
"properties": {
"cancel_reason": {
"$ref": "#/components/schemas/RFQCancelReason"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"fill_pct": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"last_update_timestamp": {
"type": "integer",
"format": "int64"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"legs_hash": {
"type": "string"
},
"liquidity_role": {
"$ref": "#/components/schemas/LiquidityRole"
},
"quote_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"status": {
"$ref": "#/components/schemas/RFQStatus"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"PublicRfq": {
"type": "object",
"required": [
"cancel_reason",
"creation_timestamp",
"fill_rate",
"filled_pct",
"last_update_timestamp",
"legs",
"partial_fill_step",
"recent_fill_rate",
"rfq_id",
"status",
"subaccount_id",
"total_cost",
"valid_until",
"wallet"
],
"properties": {
"cancel_reason": {
"$ref": "#/components/schemas/RFQCancelReason"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"fill_rate": {
"description": "Lifetime taker fill rate as a decimal string; null until the wallet has enough lifetime RFQs for the rate to be meaningful.",
"type": [
"string",
"null"
],
"format": "decimal"
},
"filled_direction": {
"anyOf": [
{
"$ref": "#/components/schemas/Direction"
},
{
"type": "null"
}
]
},
"filled_pct": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"last_update_timestamp": {
"type": "integer",
"format": "int64"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LegUnpricedParams"
}
},
"partial_fill_step": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"recent_fill_rate": {
"description": "Decayed-recent taker fill rate as a decimal string; null until enough recent RFQ activity has accumulated for the rate to be meaningful.",
"type": [
"string",
"null"
],
"format": "decimal"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"status": {
"$ref": "#/components/schemas/RFQStatus"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"valid_until": {
"type": "integer",
"format": "int64"
},
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"PublicSendQuoteDebugRequest": {
"type": "object",
"required": [
"direction",
"legs",
"max_fee",
"nonce",
"rfq_id",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"direction": {
"$ref": "#/components/schemas/Direction"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PublicStartAuctionRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"subaccount_id": {
"description": "Subaccount to auction.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PublicStartAuctionResponse": {
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"PublicTradesResult": {
"type": "object",
"required": [
"pagination",
"trades"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"trades": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SettledTrade"
}
}
}
},
"PublicVaultActionResponse": {
"description": "A vault action at the aggregate, vault level. Per-holder position details (entry/exit price, before/after balances) are omitted — those are available on the private endpoints. Monetary fields (share price, NAV, high-water marks) are decimal strings.",
"type": "object",
"required": [
"curator_shares_minted",
"event_ts",
"event_type",
"holder",
"management_shares_minted",
"nav",
"new_high_water_mark",
"old_high_water_mark",
"operation_uuid",
"performance_shares_minted",
"protocol_shares_minted",
"share_price",
"shares_delta",
"status",
"subaccount_id",
"total_shares"
],
"properties": {
"curator_shares_minted": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"event_ts": {
"description": "Timestamp of this event (ms).",
"type": "integer",
"format": "int64"
},
"event_type": {
"description": "\"vault_deposit\" | \"vault_withdraw\" | \"vault_force_withdraw\".",
"type": "string"
},
"holder": {
"type": "string"
},
"management_shares_minted": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"nav": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"new_high_water_mark": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"old_high_water_mark": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"operation_uuid": {
"type": "string"
},
"performance_shares_minted": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"protocol_shares_minted": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"share_price": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"shares_delta": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"status": {
"description": "While the action is in the queue, one of: \"enqueued\" | \"sequencer_applied\" | \"user_cancel\" | \"curator_reject\" | \"protocol_reject\" | \"expired\".\n\nOnce the action is in the protocol, the status takes on `BatchStatus` values: \"Batching\" | \"Executing\" | \"Proving\" | \"Settling\" | \"Settled\" or an error.",
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"total_shares": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
}
}
},
"PublicWithdrawDebugRequest": {
"type": "object",
"required": [
"amount_in_underlying",
"asset_name",
"force_batch",
"max_fee_usd",
"nonce",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"amount_in_underlying": {
"type": "string"
},
"asset_name": {
"type": "string"
},
"force_batch": {
"type": "boolean"
},
"max_fee_usd": {
"description": "Maximum sequencer fee the signer authorises, in USD, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"recipient": {
"description": "L1 address the funds are paid out to. Defaults to the subaccount's owner wallet when omitted — matching what `private/withdraw` reconstructs.",
"default": null,
"type": [
"string",
"null"
]
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"Quote": {
"type": "object",
"required": [
"cancel_reason",
"creation_timestamp",
"direction",
"extra_fee",
"fee",
"fill_pct",
"is_transfer",
"label",
"last_update_timestamp",
"legs",
"legs_hash",
"liquidity_role",
"max_fee",
"mmp",
"nonce",
"quote_id",
"rfq_id",
"signature_expiry_sec",
"status",
"subaccount_id"
],
"properties": {
"batch_status": {
"description": "Settlement batch status (only for executed quotes).",
"anyOf": [
{
"$ref": "#/components/schemas/BatchStatus"
},
{
"type": "null"
}
]
},
"cancel_reason": {
"$ref": "#/components/schemas/RFQCancelReason"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"fill_pct": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"is_transfer": {
"type": "boolean"
},
"label": {
"type": "string"
},
"last_update_timestamp": {
"type": "integer",
"format": "int64"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"legs_hash": {
"type": "string"
},
"liquidity_role": {
"$ref": "#/components/schemas/LiquidityRole"
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"mmp": {
"type": "boolean"
},
"nonce": {
"type": "string"
},
"quote_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"status": {
"$ref": "#/components/schemas/RFQStatus"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"tx_hash": {
"description": "Blockchain transaction hash (only for executed quotes).",
"type": [
"string",
"null"
]
}
}
},
"QuoteExecuteDebugResult": {
"type": "object",
"required": [
"action_hash",
"encoded_data",
"encoded_data_hashed",
"encoded_legs",
"legs_hash",
"typed_data_hash"
],
"properties": {
"action_hash": {
"type": "string"
},
"encoded_data": {
"type": "string"
},
"encoded_data_hashed": {
"type": "string"
},
"encoded_legs": {
"type": "string"
},
"legs_hash": {
"type": "string"
},
"typed_data_hash": {
"type": "string"
}
}
},
"QuoteExecuteResponse": {
"type": "object",
"required": [
"cancel_reason",
"creation_timestamp",
"direction",
"extra_fee",
"fee",
"fill_pct",
"is_transfer",
"label",
"last_update_timestamp",
"legs",
"legs_hash",
"liquidity_role",
"max_fee",
"mmp",
"nonce",
"quote_id",
"rfq_filled_pct",
"rfq_id",
"signature_expiry_sec",
"status",
"subaccount_id"
],
"properties": {
"cancel_reason": {
"$ref": "#/components/schemas/RFQCancelReason"
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"fill_pct": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"is_transfer": {
"type": "boolean"
},
"label": {
"type": "string"
},
"last_update_timestamp": {
"type": "integer",
"format": "int64"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"legs_hash": {
"type": "string"
},
"liquidity_role": {
"$ref": "#/components/schemas/LiquidityRole"
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"mmp": {
"type": "boolean"
},
"nonce": {
"type": "string"
},
"quote_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"rfq_filled_pct": {
"description": "Cumulative fraction of the RFQ filled after this execution, as a decimal string (e.g. `\"0.5\"` = 50% filled).",
"type": "string",
"format": "decimal"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"status": {
"$ref": "#/components/schemas/RFQStatus"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"QuoteGetResponse": {
"type": "object",
"required": [
"pagination",
"quotes"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"quotes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Quote"
}
}
}
},
"QuotePollResponse": {
"type": "object",
"required": [
"pagination",
"quotes"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"quotes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicQuote"
}
}
}
},
"QuoteReplaceResponse": {
"type": "object",
"required": [
"cancelled_quote"
],
"properties": {
"cancelled_quote": {
"$ref": "#/components/schemas/Quote"
},
"create_quote_error": {
"anyOf": [
{
"$ref": "#/components/schemas/RPCError"
},
{
"type": "null"
}
]
},
"quote": {
"anyOf": [
{
"$ref": "#/components/schemas/Quote"
},
{
"type": "null"
}
]
}
}
},
"QuoteSendDebugResult": {
"type": "object",
"required": [
"action_hash",
"encoded_data",
"encoded_data_hashed",
"typed_data_hash"
],
"properties": {
"action_hash": {
"type": "string"
},
"encoded_data": {
"type": "string"
},
"encoded_data_hashed": {
"type": "string"
},
"typed_data_hash": {
"type": "string"
}
}
},
"RFQCancelReason": {
"type": "string",
"enum": [
"",
"user_request",
"insufficient_margin",
"signed_max_fee_too_low",
"mmp_trigger",
"cancel_on_disconnect",
"session_key_deregistered",
"subaccount_withdrawn",
"rfq_no_longer_open",
"compliance",
"validation_failed"
]
},
"RFQGetResponse": {
"type": "object",
"required": [
"pagination",
"rfqs"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"rfqs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Rfq"
}
}
}
},
"RFQPollResponse": {
"type": "object",
"required": [
"pagination",
"rfqs"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"rfqs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PublicRfq"
}
}
}
},
"RFQStatus": {
"type": "string",
"enum": [
"open",
"filled",
"cancelled",
"expired"
]
},
"RPCError": {
"type": "object",
"required": [
"code",
"message"
],
"properties": {
"code": {
"type": "integer",
"format": "int64"
},
"data": {
"type": [
"string",
"null"
]
},
"message": {
"type": "string"
}
}
},
"RateFeedDataResponse": {
"type": "object",
"required": [
"confidence",
"currency",
"deadline",
"expiry",
"rate",
"signatures",
"timestamp"
],
"properties": {
"confidence": {
"type": "string"
},
"currency": {
"type": "string"
},
"deadline": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"expiry": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"rate": {
"type": "string"
},
"signatures": {
"$ref": "#/components/schemas/OracleSignatureDataResponse"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"RateLimitInfo": {
"type": "object",
"required": [
"consumedPoints",
"isFirstInDuration",
"msBeforeNext",
"remainingPoints"
],
"properties": {
"consumedPoints": {
"description": "Total consumed points.",
"type": "integer",
"format": "int64"
},
"isFirstInDuration": {
"description": "Whether it's the first request in this duration window.",
"type": "boolean"
},
"msBeforeNext": {
"description": "Milliseconds before the next request is allowed (0 if none).",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"remainingPoints": {
"description": "Number of remaining points (tokens).",
"type": "integer",
"format": "int64"
}
}
},
"RateLimitResult": {
"type": "object",
"required": [
"remaining_matching",
"remaining_non_matching",
"remaining_per_endpoint"
],
"properties": {
"remaining_connections": {
"description": "Remaining WebSocket connection allowance for this account, present only on WebSocket connections.",
"anyOf": [
{
"$ref": "#/components/schemas/RateLimitInfo"
},
{
"type": "null"
}
]
},
"remaining_matching": {
"$ref": "#/components/schemas/RateLimitInfo"
},
"remaining_non_matching": {
"$ref": "#/components/schemas/RateLimitInfo"
},
"remaining_per_endpoint": {
"type": "object",
"additionalProperties": {
"$ref": "#/components/schemas/RateLimitInfo"
}
}
}
},
"ReferralPerformanceByInstrumentType": {
"description": "Referral performance for one `(role, currency, instrument_type)` bucket.",
"type": "object",
"required": [
"builder_fee",
"fee_reward",
"notional_volume",
"referred_fee",
"unique_traders_referred"
],
"properties": {
"builder_fee": {
"type": "string"
},
"fee_reward": {
"type": "string"
},
"notional_volume": {
"type": "string"
},
"referred_fee": {
"type": "string"
},
"unique_traders_referred": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"Referrer": {
"type": "object",
"required": [
"referral_code",
"wallet"
],
"properties": {
"receiving_wallet": {
"type": [
"string",
"null"
]
},
"referral_code": {
"type": "string"
},
"wallet": {
"type": "string"
}
}
},
"RegisterDepositAddressParams": {
"type": "object",
"required": [
"deposit_type",
"wallet"
],
"properties": {
"deposit_type": {
"description": "Which factory to register against. Required: the same `(wallet, subaccount, manager)` has a distinct escrow address per factory, so callers must always be explicit about which flow they want.",
"$ref": "#/components/schemas/DepositType"
},
"manager_id": {
"description": "Manager the deposit routes under. Required (non-zero) when creating a new subaccount (`subaccount_id` omitted or 0); must be 0 or omitted for an existing subaccount — it salts the deposit address, so a nonzero value would mint a distinct escrow for the same destination.",
"default": null,
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"subaccount_id": {
"default": 0,
"type": "integer",
"format": "int64"
},
"wallet": {
"description": "Wallet address to watch for deposits.",
"type": "string"
}
}
},
"RegisterDepositAddressResult": {
"type": "object",
"required": [
"deposit_address",
"deposit_type",
"wallet"
],
"properties": {
"deposit_address": {
"type": "string"
},
"deposit_type": {
"$ref": "#/components/schemas/DepositType"
},
"manager_id": {
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"subaccount_id": {
"type": [
"integer",
"null"
],
"format": "int64"
},
"wallet": {
"type": "string"
}
}
},
"RejectDepositRequestRequest": {
"type": "object",
"required": [
"request_id"
],
"properties": {
"reason": {
"description": "Optional human-readable reason for the rejection.",
"default": null,
"type": [
"string",
"null"
]
},
"request_id": {
"$ref": "#/components/schemas/VaultRequestId"
}
}
},
"ReplaceOrderRequest": {
"description": "`private/replace` parameters: a `private/order` payload plus the cancel-target fields (`order_id_to_cancel`, `nonce_to_cancel`, `expected_filled_amount`).",
"type": "object",
"required": [
"amount",
"direction",
"instrument_name",
"limit_price",
"max_fee",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"algo_duration_sec": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_num_slices": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int32"
},
"algo_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/AlgoType"
},
{
"type": "null"
}
]
},
"amount": {
"description": "Order amount in units of the base, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"client": {
"default": null,
"type": [
"string",
"null"
]
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"expected_filled_amount": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"extra_fee": {
"description": "Optional extra fee per unit of volume, as a decimal string or JSON number. Defaults to zero.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"instrument_name": {
"type": "string"
},
"is_atomic_signing": {
"default": null,
"type": [
"boolean",
"null"
]
},
"label": {
"default": null,
"type": [
"string",
"null"
]
},
"limit_price": {
"description": "Limit price in quote currency, as a decimal string (e.g. `\"3100.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"max_fee": {
"description": "Max fee per unit of volume in quote currency, as a decimal string or a JSON number.",
"type": "string",
"format": "decimal"
},
"mmp": {
"default": null,
"type": [
"boolean",
"null"
]
},
"nonce": {
"type": "string"
},
"nonce_to_cancel": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"order_id_to_cancel": {
"description": "Optional UUID v4 string",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"order_type": {
"default": "limit",
"$ref": "#/components/schemas/OrderType"
},
"reduce_only": {
"default": null,
"type": [
"boolean",
"null"
]
},
"referral_code": {
"default": null,
"type": [
"string",
"null"
]
},
"reject_post_only": {
"default": null,
"type": [
"boolean",
"null"
]
},
"reject_timestamp": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"time_in_force": {
"default": "gtc",
"$ref": "#/components/schemas/TimeInForce"
},
"trigger_price": {
"description": "Trigger price as a decimal string or JSON number; omit for non-trigger orders.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"trigger_price_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/TriggerPriceType"
},
{
"type": "null"
}
]
},
"trigger_type": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/TriggerType"
},
{
"type": "null"
}
]
}
}
},
"ReplaceOrderResponse": {
"type": "object",
"required": [
"cancelled_order"
],
"properties": {
"cancelled_order": {
"$ref": "#/components/schemas/Order"
},
"create_order_error": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/RPCError"
},
{
"type": "null"
}
]
},
"order": {
"default": null,
"anyOf": [
{
"$ref": "#/components/schemas/Order"
},
{
"type": "null"
}
]
},
"trades": {
"default": null,
"type": [
"array",
"null"
],
"items": {
"$ref": "#/components/schemas/Trade"
}
}
}
},
"ReplaceQuoteRequest": {
"type": "object",
"required": [
"direction",
"legs",
"max_fee",
"nonce",
"rfq_id",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"client": {
"default": "",
"type": "string"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "0",
"type": "string",
"format": "decimal"
},
"label": {
"default": "",
"type": "string"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"mmp": {
"default": false,
"type": "boolean"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"nonce_to_cancel": {
"default": null,
"type": [
"integer",
"null"
],
"format": "int64"
},
"quote_id_to_cancel": {
"description": "Optional UUID v4 string",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"referral_code": {
"default": "",
"type": "string"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"RequestVaultDepositRequest": {
"description": "Fields common to every signed vault action. They appear alongside each endpoint's action-specific parameters in the same request object.",
"type": "object",
"required": [
"amount",
"deposit_spot_asset",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id",
"vault_subaccount_id"
],
"properties": {
"amount": {
"description": "Deposit amount in the vault's deposit asset, as a decimal string (e.g. `\"1\"`).",
"type": "string",
"format": "decimal"
},
"deposit_spot_asset": {
"$ref": "#/components/schemas/Address"
},
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signature": {
"description": "0x-prefixed hex of the 65-byte EOA signature.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The subaccount the action is signed on; which subaccount applies depends on the specific method — see that method's reference.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"vault_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"RequestVaultWithdrawRequest": {
"description": "Fields common to every signed vault action. They appear alongside each endpoint's action-specific parameters in the same request object.",
"type": "object",
"required": [
"nonce",
"shares_to_burn",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id",
"vault_subaccount_id"
],
"properties": {
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"shares_to_burn": {
"description": "Number of vault shares to burn, as a decimal string.",
"type": "string",
"format": "decimal"
},
"signature": {
"description": "0x-prefixed hex of the 65-byte EOA signature.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"description": "The subaccount the action is signed on; which subaccount applies depends on the specific method — see that method's reference.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"vault_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"ResetMmpResponse": {
"type": "string",
"enum": [
"ok"
]
},
"Rfq": {
"type": "object",
"required": [
"ask_total_cost",
"bid_total_cost",
"cancel_reason",
"creation_timestamp",
"filled_pct",
"label",
"last_update_timestamp",
"legs",
"mark_total_cost",
"max_total_cost",
"min_total_cost",
"partial_fill_step",
"rfq_id",
"status",
"subaccount_id",
"total_cost",
"valid_until",
"wallet"
],
"properties": {
"ask_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"bid_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"cancel_reason": {
"$ref": "#/components/schemas/RFQCancelReason"
},
"counterparties": {
"type": [
"array",
"null"
],
"items": {
"$ref": "#/components/schemas/Address"
}
},
"creation_timestamp": {
"type": "integer",
"format": "int64"
},
"filled_direction": {
"anyOf": [
{
"$ref": "#/components/schemas/Direction"
},
{
"type": "null"
}
]
},
"filled_pct": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"label": {
"type": "string"
},
"last_update_timestamp": {
"type": "integer",
"format": "int64"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LegUnpricedParams"
}
},
"mark_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"max_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"min_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"partial_fill_step": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"status": {
"$ref": "#/components/schemas/RFQStatus"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"valid_until": {
"type": "integer",
"format": "int64"
},
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"RfqGetBestQuoteRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"client": {
"default": "",
"type": "string"
},
"direction": {
"default": "buy",
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "0",
"type": "string",
"format": "decimal"
},
"legs": {
"default": [],
"type": "array",
"items": {
"$ref": "#/components/schemas/LegUnpricedParams"
}
},
"rfq_id": {
"description": "RFQ ID to get best quote for.\n\nIf not provided, will return estimates based on mark prices.",
"default": null,
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"RfqGetBestQuoteResponse": {
"type": "object",
"required": [
"direction",
"down_liquidation_price",
"estimated_fee",
"estimated_realized_pnl",
"estimated_realized_pnl_excl_fees",
"estimated_total_cost",
"filled_pct",
"is_valid",
"orderbook_total_cost",
"post_initial_margin",
"post_liquidation_price",
"pre_initial_margin",
"suggested_max_fee",
"up_liquidation_price"
],
"properties": {
"best_quote": {
"anyOf": [
{
"$ref": "#/components/schemas/PublicQuote"
},
{
"type": "null"
}
]
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"down_liquidation_price": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"estimated_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"estimated_realized_pnl": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"estimated_realized_pnl_excl_fees": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"estimated_total_cost": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"filled_pct": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"invalid_reason": {
"type": [
"string",
"null"
]
},
"is_valid": {
"type": "boolean"
},
"orderbook_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"post_initial_margin": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"post_liquidation_price": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"pre_initial_margin": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"suggested_max_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"up_liquidation_price": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
}
}
},
"RiskUniverse": {
"description": "One risk universe: its display metadata, managers (each with what it lets you trade and deposit), and the Security Module absorbing the universe's losses. The universe-first mirror of `public/get_all_currencies` — pick a universe, pick a manager in it, and the `manager_id` is what you pass when depositing to a new subaccount.",
"type": "object",
"required": [
"managers",
"risk_universe_id",
"security_module"
],
"properties": {
"description": {
"description": "Short description of the universe; null until set by the exchange.",
"type": [
"string",
"null"
]
},
"managers": {
"description": "The universe's managers (at most one Standard and one Portfolio), each with the instruments it risk-prices and the collaterals it accepts.",
"type": "array",
"items": {
"$ref": "#/components/schemas/RiskUniverseManager"
}
},
"name": {
"description": "Display name (e.g. \"PRIME\"), always uppercase; null until set by the exchange.",
"type": [
"string",
"null"
]
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"security_module": {
"$ref": "#/components/schemas/SecurityModuleDetails"
}
}
},
"RiskUniverseManager": {
"description": "A manager and what a subaccount created under it can trade and hold.",
"type": "object",
"required": [
"collaterals",
"instruments",
"manager_id",
"margin_type"
],
"properties": {
"collaterals": {
"description": "Assets this manager accepts as deposit collateral.",
"type": "array",
"items": {
"$ref": "#/components/schemas/ManagerCollateral"
}
},
"instruments": {
"description": "Live derivative asset names tradeable under this manager, sorted (e.g. \"BTC-OPTION\", \"BTC-PERP\"). An option entry names the family — fetch its individual listings via `public/get_all_instruments`.",
"type": "array",
"items": {
"type": "string"
}
},
"manager_id": {
"description": "Pass this as `manager_id` when depositing to a new subaccount.",
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"margin_type": {
"$ref": "#/components/schemas/MarginType"
}
}
},
"SecurityModuleDetails": {
"description": "The universe's Security Module: the subaccount whose funds absorb insolvent losses before any socialization within the universe.",
"type": "object",
"required": [
"cash_asset",
"cash_currency",
"subaccount_id"
],
"properties": {
"cash_asset": {
"description": "EIP-55 checksummed address of the universe's cash asset.",
"type": "string"
},
"cash_currency": {
"description": "Currency of the cash asset (e.g. \"USDC\").",
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"SendQuoteRequest": {
"type": "object",
"required": [
"direction",
"legs",
"max_fee",
"nonce",
"rfq_id",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"client": {
"default": "",
"type": "string"
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"extra_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "0",
"type": "string",
"format": "decimal"
},
"label": {
"default": "",
"type": "string"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"max_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"mmp": {
"default": false,
"type": "boolean"
},
"nonce": {
"type": "integer",
"format": "int64"
},
"referral_code": {
"default": "",
"type": "string"
},
"rfq_id": {
"description": "UUID v4 string",
"type": "string",
"format": "uuid"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"SendRfqRequest": {
"type": "object",
"required": [
"legs",
"subaccount_id"
],
"properties": {
"client": {
"default": "",
"type": "string"
},
"counterparties": {
"default": null,
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"extra_fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "0",
"type": "string",
"format": "decimal"
},
"label": {
"default": "",
"type": "string"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/LegUnpricedParams"
}
},
"max_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"min_total_cost": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"partial_fill_step": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "1",
"type": "string",
"format": "decimal"
},
"referral_code": {
"default": "",
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"SessionKey": {
"type": "object",
"required": [
"expiry_sec",
"ip_whitelist",
"label",
"offchain_scopes",
"protocol_scopes",
"public_session_key",
"registered_sec",
"subaccount_ids"
],
"properties": {
"expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"ip_whitelist": {
"type": "array",
"items": {
"type": "string"
}
},
"label": {
"type": "string"
},
"offchain_scopes": {
"description": "Off-chain scopes (read-tier capabilities).",
"type": "array",
"items": {
"type": "string"
}
},
"protocol_scopes": {
"description": "Protocol-level (on-chain authority) scopes.",
"type": "array",
"items": {
"type": "string"
}
},
"public_session_key": {
"type": "string"
},
"registered_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_ids": {
"description": "Subaccounts this key may act on. An empty stored value means \"all subaccounts\" and is expanded to the wallet's current subaccount list.",
"type": "array",
"items": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
}
},
"SessionKeysRequest": {
"type": "object",
"required": [
"wallet"
],
"properties": {
"wallet": {
"type": "string"
}
}
},
"SetMmpConfigRequest": {
"description": "`mmp_interval` and `mmp_frozen_time` are specified in milliseconds (rounded down to the nearest whole second).",
"type": "object",
"required": [
"currency",
"mmp_frozen_time",
"mmp_interval",
"subaccount_id"
],
"properties": {
"currency": {
"type": "string"
},
"mmp_amount_limit": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "0",
"type": "string",
"format": "decimal"
},
"mmp_delta_limit": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"default": "0",
"type": "string",
"format": "decimal"
},
"mmp_frozen_time": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"mmp_interval": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"SetMmpConfigResponse": {
"description": "Echoes the inbound params back: decimal-string limits, ms intervals.",
"type": "object",
"required": [
"currency",
"mmp_amount_limit",
"mmp_delta_limit",
"mmp_frozen_time",
"mmp_interval",
"subaccount_id"
],
"properties": {
"currency": {
"type": "string"
},
"mmp_amount_limit": {
"type": "string"
},
"mmp_delta_limit": {
"type": "string"
},
"mmp_frozen_time": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"mmp_interval": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"SetSessionKeyRequest": {
"description": "Request parameters for registering a scoped session key. Address fields are 0x-prefixed hex strings.",
"type": "object",
"required": [
"expiry_sec",
"nonce",
"offchain_scopes",
"protocol_scopes",
"public_session_key",
"signature",
"signature_expiry_sec",
"signer",
"wallet"
],
"properties": {
"expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"ip_whitelist": {
"type": [
"array",
"null"
],
"items": {
"type": "string"
}
},
"label": {
"type": [
"string",
"null"
]
},
"nonce": {
"type": "string"
},
"offchain_scopes": {
"description": "Off-chain scopes which are validated in backend only",
"type": "array",
"items": {
"type": "string"
}
},
"protocol_scopes": {
"description": "Scopes granted to the session key, validated by the protocol. Each is a string like `\"trade:orderbook:all\"`.",
"type": "array",
"items": {
"type": "string"
}
},
"public_session_key": {
"description": "Session key address being authorized.",
"type": "string"
},
"signature": {
"description": "0x-prefixed hex, 65-byte r||s||v.",
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"subaccount_ids": {
"type": [
"array",
"null"
],
"items": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
},
"wallet": {
"description": "Wallet the session key is being registered for.",
"type": "string"
}
}
},
"SettledTrade": {
"description": "A settled trade returned by `public/get_trade_history`. Anonymized: no `order_id` or `label`. `wallet` is included since settled trades are visible on-chain.",
"type": "object",
"required": [
"direction",
"expected_rebate",
"extra_fee",
"index_price",
"instrument_name",
"liquidity_role",
"mark_price",
"quote_id",
"realized_pnl",
"realized_pnl_excl_fees",
"rfq_id",
"subaccount_id",
"timestamp",
"trade_amount",
"trade_fee",
"trade_id",
"trade_price",
"tx_hash",
"wallet"
],
"properties": {
"batch_status": {
"anyOf": [
{
"$ref": "#/components/schemas/BatchStatus"
},
{
"type": "null"
}
]
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"expected_rebate": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"extra_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"index_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"instrument_name": {
"type": "string"
},
"liquidity_role": {
"$ref": "#/components/schemas/LiquidityRole"
},
"mark_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"quote_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"realized_pnl": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"realized_pnl_excl_fees": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"rfq_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"trade_amount": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"trade_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"trade_id": {
"type": "string"
},
"trade_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"tx_hash": {
"type": "string"
},
"wallet": {
"type": "string"
}
}
},
"SignedAction": {
"description": "An Action bundled with its ECDSA signature (65 bytes: r||s||v).",
"type": "object",
"required": [
"action",
"signature"
],
"properties": {
"action": {
"description": "The signed action envelope.",
"$ref": "#/components/schemas/Action"
},
"signature": {
"description": "65-byte ECDSA signature (r||s||v).",
"type": "array",
"items": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
}
}
}
},
"SignedTransferQuoteRequest": {
"description": "Action info that needs to be signed by quoter or RFQ executor for a transfer. The quoter signs the legs hash + max fee; the executor signs the same legs hash + their own max fee.",
"type": "object",
"required": [
"direction",
"legs",
"max_fee",
"nonce",
"signature",
"signature_expiry_sec",
"signer",
"subaccount_id"
],
"properties": {
"direction": {
"$ref": "#/components/schemas/Direction"
},
"legs": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PricedLegParamsAndResponse"
}
},
"max_fee": {
"description": "Maximum fee the signer authorises, in USD, as a decimal string (e.g. `\"1.5\"`) or a JSON number.",
"type": "string",
"format": "decimal"
},
"nonce": {
"type": "string"
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "int64"
},
"signer": {
"$ref": "#/components/schemas/Address"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
}
}
},
"SpotAssetEntry": {
"description": "A spot asset and its per-universe risk: collateral discounts, lending, OI.",
"type": "object",
"required": [
"address",
"erc20",
"min_deposit_usd",
"name",
"universes"
],
"properties": {
"address": {
"description": "EIP-55 checksummed protocol asset address.",
"type": "string"
},
"erc20": {
"$ref": "#/components/schemas/Erc20Details"
},
"min_deposit_usd": {
"type": "string"
},
"name": {
"description": "Registered asset name (e.g. \"USDC\", \"USDC-NL\").",
"type": "string"
},
"universes": {
"type": "array",
"items": {
"$ref": "#/components/schemas/SpotUniverse"
}
}
}
},
"SpotFeedDataResponse": {
"type": "object",
"required": [
"confidence",
"currency",
"deadline",
"price",
"signatures",
"timestamp"
],
"properties": {
"confidence": {
"type": "string"
},
"currency": {
"type": "string"
},
"deadline": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"feed_source_type": {
"type": [
"string",
"null"
]
},
"price": {
"type": "string"
},
"signatures": {
"$ref": "#/components/schemas/OracleSignatureDataResponse"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"SpotPublicDetails": {
"type": "object",
"required": [
"borrow_index",
"decimals",
"supply_index",
"underlying_erc20_address"
],
"properties": {
"borrow_index": {
"type": "string"
},
"decimals": {
"type": "integer",
"format": "uint8",
"minimum": 0.0
},
"supply_index": {
"type": "string"
},
"underlying_erc20_address": {
"type": "string"
}
}
},
"SpotUniverse": {
"description": "Risk details for a single `(spot_asset, universe)` pair.",
"type": "object",
"required": [
"oi",
"pm2_im_discount",
"pm2_mm_discount",
"risk_universe_id",
"srm_im_discount",
"srm_mm_discount"
],
"properties": {
"lending": {
"description": "Lending stats; null if the asset has no pool in this universe.",
"anyOf": [
{
"$ref": "#/components/schemas/LendingDetails"
},
{
"type": "null"
}
]
},
"oi": {
"description": "Spot supply OI cap + current supply (for a lending asset, the current supply is the pool's total supplied collateral).",
"$ref": "#/components/schemas/OpenInterestStats"
},
"pm2_im_discount": {
"description": "PMRM2 collateral haircut (\"0\" if not collateralized).",
"type": "string"
},
"pm2_mm_discount": {
"type": "string"
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"srm_im_discount": {
"description": "SRM collateral discount (cash asset \"1\"; non-collateral \"0\").",
"type": "string"
},
"srm_mm_discount": {
"type": "string"
}
}
},
"Subaccount": {
"type": "object",
"required": [
"collaterals",
"collaterals_initial_margin",
"collaterals_maintenance_margin",
"collaterals_value",
"currency",
"failed_to_fetch",
"initial_margin",
"is_under_liquidation",
"label",
"maintenance_margin",
"manager_id",
"margin_type",
"mm_credits",
"open_orders",
"open_orders_margin",
"positions",
"positions_initial_margin",
"positions_maintenance_margin",
"positions_value",
"projected_margin_change",
"risk_universe_id",
"subaccount_id",
"subaccount_value",
"vault_deposit_holds"
],
"properties": {
"collaterals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Collateral"
}
},
"collaterals_initial_margin": {
"type": "string"
},
"collaterals_maintenance_margin": {
"type": "string"
},
"collaterals_value": {
"type": "string"
},
"currency": {
"type": "array",
"items": {
"type": "string"
}
},
"failed_to_fetch": {
"description": "`true` if this subaccount's portfolio could not be loaded; such subaccounts are returned as placeholders by `get_all_portfolios`.",
"type": "boolean"
},
"initial_margin": {
"type": "string"
},
"is_under_liquidation": {
"type": "boolean"
},
"label": {
"type": "string"
},
"maintenance_margin": {
"type": "string"
},
"manager_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"margin_type": {
"type": "string"
},
"mm_credits": {
"description": "MM credit from universe loss-socialization events: the socialized USDC debit lands on cash in full, and `debit × (1 − write_down)` is added back to maintenance margin while the 15-minute write-down runs. Events this subaccount has not yet realized contribute their expected credit, with the current subaccount value standing in for the MtM at realization. Zero while under auction — the credit is cleared when liquidation starts.",
"type": "string"
},
"open_orders": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Order"
}
},
"open_orders_margin": {
"type": "string"
},
"positions": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Position"
}
},
"positions_initial_margin": {
"type": "string"
},
"positions_maintenance_margin": {
"type": "string"
},
"positions_value": {
"type": "string"
},
"projected_margin_change": {
"type": "string"
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"subaccount_value": {
"type": "string"
},
"vault_deposit_holds": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VaultDepositHold"
}
}
}
},
"TickerSlimSnapshot": {
"type": "object",
"required": [
"A",
"B",
"I",
"M",
"a",
"b",
"maxp",
"minp",
"stats",
"t"
],
"properties": {
"A": {
"description": "Amount of contracts / tokens available at the best ask price.",
"type": "string"
},
"B": {
"description": "Amount of contracts / tokens available at the best bid price.",
"type": "string"
},
"I": {
"description": "Index price.",
"type": "string"
},
"M": {
"description": "Mark price.",
"type": "string"
},
"a": {
"description": "Best ask price.",
"type": "string"
},
"b": {
"description": "Best bid price.",
"type": "string"
},
"f": {
"description": "Current hourly funding rate (perpetuals only; `null` otherwise).",
"type": [
"string",
"null"
]
},
"maxp": {
"description": "Maximum price at which an aggressive buyer can be matched. Any portion of a market order that would execute above this price is cancelled. A limit buy order with limit price above this value is treated as post only (i.e. it is rejected if it would cross any existing resting order).",
"type": "string"
},
"minp": {
"description": "Minimum price at which an aggressive seller can be matched. Any portion of a market order that would execute below this price is cancelled. A limit sell order with limit price below this value is treated as post only (i.e. it is rejected if it would cross any existing resting order).",
"type": "string"
},
"option_pricing": {
"description": "Option greeks and implied vols (options only; `null` otherwise).",
"anyOf": [
{
"$ref": "#/components/schemas/OptionPricing"
},
{
"type": "null"
}
]
},
"stats": {
"description": "Trailing 24-hour trading statistics.",
"$ref": "#/components/schemas/DailyTradingStatistics"
},
"t": {
"description": "Snapshot creation timestamp, in milliseconds since the Unix epoch.",
"type": "integer",
"format": "int64"
}
}
},
"TimeInForce": {
"type": "string",
"enum": [
"gtc",
"post_only",
"fok",
"ioc"
]
},
"Trade": {
"description": "Info that the user expects to get delivered when requesting trade info.",
"type": "object",
"required": [
"direction",
"expected_rebate",
"extra_fee",
"index_price",
"instrument_name",
"is_transfer",
"liquidity_role",
"mark_price",
"op_uuid",
"order_id",
"quote_id",
"realized_pnl",
"realized_pnl_excl_fees",
"rfq_id",
"subaccount_id",
"timestamp",
"trade_amount",
"trade_fee",
"trade_id",
"trade_price"
],
"properties": {
"batch_status": {
"description": "Settlement batch status; `null` if processed by sequencer.",
"anyOf": [
{
"$ref": "#/components/schemas/BatchStatus"
},
{
"type": "null"
}
]
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"expected_rebate": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"extra_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"index_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"instrument_name": {
"type": "string"
},
"is_transfer": {
"type": "boolean"
},
"label": {
"default": "",
"type": "string"
},
"liquidity_role": {
"$ref": "#/components/schemas/LiquidityRole"
},
"mark_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"op_uuid": {
"type": "string"
},
"order_id": {
"type": "string"
},
"quote_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"realized_pnl": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"realized_pnl_excl_fees": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"rfq_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"trade_amount": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"trade_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"trade_id": {
"type": "string"
},
"trade_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"tx_hash": {
"type": [
"string",
"null"
]
}
}
},
"TradeHistoryResponse": {
"description": "A trade as returned by `private/get_trade_history`. Mirrors a private trades subscription event, except `batch_status` is the settlement status (`null` until the batch settles).",
"type": "object",
"required": [
"direction",
"expected_rebate",
"extra_fee",
"index_price",
"instrument_name",
"is_transfer",
"label",
"liquidity_role",
"mark_price",
"op_uuid",
"order_id",
"quote_id",
"realized_pnl",
"realized_pnl_excl_fees",
"rfq_id",
"subaccount_id",
"timestamp",
"trade_amount",
"trade_fee",
"trade_id",
"trade_price"
],
"properties": {
"batch_status": {
"anyOf": [
{
"$ref": "#/components/schemas/BatchStatus"
},
{
"type": "null"
}
]
},
"direction": {
"$ref": "#/components/schemas/Direction"
},
"expected_rebate": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"extra_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"index_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"instrument_name": {
"type": "string"
},
"is_transfer": {
"type": "boolean"
},
"label": {
"type": "string"
},
"liquidity_role": {
"$ref": "#/components/schemas/LiquidityRole"
},
"mark_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"op_uuid": {
"type": "string"
},
"order_id": {
"type": "string"
},
"quote_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"realized_pnl": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"realized_pnl_excl_fees": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"rfq_id": {
"description": "Optional UUID v4 string",
"type": [
"string",
"null"
],
"format": "uuid"
},
"subaccount_id": {
"type": "integer",
"format": "int64"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"trade_amount": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"trade_fee": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"trade_id": {
"type": "string"
},
"trade_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"tx_hash": {
"type": [
"string",
"null"
]
}
}
},
"TradingviewCandle": {
"description": "Single trades OHLCV candle in `public/get_tradingview_chart_data`. `timestamp` and `timestamp_bucket` are the bucket start in UTC seconds.",
"type": "object",
"required": [
"close_price",
"high_price",
"low_price",
"open_price",
"timestamp",
"timestamp_bucket",
"volume_contracts",
"volume_usd"
],
"properties": {
"close_price": {
"type": "string"
},
"high_price": {
"type": "string"
},
"low_price": {
"type": "string"
},
"open_price": {
"type": "string"
},
"timestamp": {
"type": "integer",
"format": "int64"
},
"timestamp_bucket": {
"type": "integer",
"format": "int64"
},
"volume_contracts": {
"type": "string"
},
"volume_usd": {
"type": "string"
}
}
},
"TransferEntry": {
"description": "`amount` and `fee` are decimal strings (e.g. `\"1.1\"`). `is_outgoing` marks the caller's side; on the sender's row `amount` is the gross debited and `fee` the in-kind fee, on the receiver's row `amount` is the net credited and `fee` is 0. `operation_id`/`batch_uuid` are stable uuids.",
"type": "object",
"required": [
"amount",
"asset",
"batch_status",
"batch_uuid",
"fee",
"from_subaccount_id",
"from_wallet",
"is_outgoing",
"operation_id",
"timestamp",
"to_subaccount_id",
"to_wallet"
],
"properties": {
"amount": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"batch_status": {
"$ref": "#/components/schemas/BatchStatus"
},
"batch_uuid": {
"type": "string"
},
"fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"from_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"from_wallet": {
"type": "string"
},
"is_outgoing": {
"type": "boolean"
},
"operation_id": {
"type": "string"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"to_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"to_wallet": {
"type": "string"
},
"tx_hash": {
"type": [
"string",
"null"
]
}
}
},
"TransferHistoryResult": {
"type": "object",
"required": [
"transfers"
],
"properties": {
"transfers": {
"type": "array",
"items": {
"$ref": "#/components/schemas/TransferEntry"
}
}
}
},
"TransferPositionsRequest": {
"description": "Params for `private/transfer_positions`.",
"type": "object",
"required": [
"maker_params",
"taker_params",
"wallet"
],
"properties": {
"maker_params": {
"$ref": "#/components/schemas/SignedTransferQuoteRequest"
},
"taker_params": {
"$ref": "#/components/schemas/SignedTransferQuoteRequest"
},
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"TransferPositionsResponse": {
"description": "Result for `private/transfer_positions`. Carries the synthesized maker and taker quote payloads so clients see a response shape parallel to `private/execute_quote`.",
"type": "object",
"required": [
"maker_quote",
"taker_quote"
],
"properties": {
"maker_quote": {
"$ref": "#/components/schemas/Quote"
},
"taker_quote": {
"$ref": "#/components/schemas/Quote"
}
}
},
"TriggerPriceType": {
"type": "string",
"enum": [
"mark",
"index"
]
},
"TriggerType": {
"type": "string",
"enum": [
"stoploss",
"takeprofit"
]
},
"UniverseManagers": {
"description": "The managers risk-pricing a currency within one universe.",
"type": "object",
"required": [
"risk_universe_id"
],
"properties": {
"pm": {
"description": "PMRM2 manager id risking this currency in the universe.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
},
"risk_universe_id": {
"type": "integer",
"format": "uint32",
"minimum": 0.0
},
"risk_universe_name": {
"description": "Display name of the universe (uppercase, e.g. \"PRIME\"); absent until set by the exchange.",
"type": [
"string",
"null"
]
},
"sm": {
"description": "SRM manager id risking this currency in the universe.",
"type": [
"integer",
"null"
],
"format": "uint32",
"minimum": 0.0
}
}
},
"UpdateVaultInfoRequest": {
"type": "object",
"required": [
"subaccount_id"
],
"properties": {
"description": {
"default": null,
"type": [
"string",
"null"
]
},
"mtm_cap": {
"description": "Advisory mark-to-market cap in USD, as a decimal string (e.g. `\"1000\"`).",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"name": {
"default": null,
"type": [
"string",
"null"
]
},
"subaccount_id": {
"description": "The vault's subaccount ID; the caller must be the vault's curator.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"whitelist_only": {
"default": null,
"type": [
"boolean",
"null"
]
}
}
},
"UpdateWhitelistedRecipientsRequest": {
"type": "object",
"required": [
"add",
"nonce",
"remove",
"signature",
"signature_expiry_sec",
"signer",
"wallet"
],
"properties": {
"add": {
"description": "Recipient wallet addresses to add to the whitelist.",
"type": "array",
"items": {
"type": "string"
}
},
"nonce": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"remove": {
"description": "Recipient wallet addresses to remove from the whitelist.",
"type": "array",
"items": {
"type": "string"
}
},
"signature": {
"type": "string"
},
"signature_expiry_sec": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signer": {
"type": "string"
},
"wallet": {
"description": "Wallet whose whitelist is being updated; becomes the action owner.",
"type": "string"
}
}
},
"UpdateWhitelistedRecipientsResponse": {
"type": "object",
"required": [
"op_uuid",
"operation_id",
"whitelisted_recipients"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"whitelisted_recipients": {
"description": "The account's whitelisted recipients after the update was applied.",
"type": "array",
"items": {
"type": "string"
}
}
}
},
"Vault": {
"type": "object",
"required": [
"curator",
"curator_shares",
"description",
"name",
"protocol",
"whitelist_only"
],
"properties": {
"benchmark_price": {
"description": "USD spot price of the HWM benchmark asset (`1.0` for feed-less USD vaults). null when a configured benchmark has no resolvable price.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"curator": {
"description": "The vault's curator — the owner wallet of the vault subaccount.",
"$ref": "#/components/schemas/Address"
},
"curator_shares": {
"description": "Shares held by the curator (the vault subaccount's owner) — their skin-in-the-game. Same units as `protocol.total_shares`.",
"type": "string",
"format": "decimal"
},
"description": {
"type": "string"
},
"mtm_cap": {
"description": "Optional non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"name": {
"type": "string"
},
"nav_benchmark": {
"description": "Live NAV expressed in the HWM benchmark asset's units. null when the vault couldn't be priced or its configured benchmark has no spot price.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"nav_usd": {
"description": "Live mark-to-market NAV (USD) — signed, so an insolvent vault surfaces as a negative value. null only when the vault couldn't be priced (e.g. missing data). Divide by `protocol.total_shares` for the pre-fee share price.",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"protocol": {
"$ref": "#/components/schemas/ProtocolVault"
},
"simulated_share_price_usd": {
"description": "Live share price (USD/share) as if curator fees were settled now — the price a depositor/withdrawer faces. null when unpriceable or the vault is insolvent (a fee settlement on negative NAV is meaningless).",
"default": null,
"type": [
"string",
"null"
],
"format": "decimal"
},
"whitelist_only": {
"type": "boolean"
}
}
},
"VaultActionResponse": {
"description": "A vault action as surfaced to the requesting user. Monetary fields (amounts, prices, share price) are decimal strings.",
"type": "object",
"required": [
"after_shares",
"amount",
"before_shares",
"creation_timestamp_ms",
"entry_price",
"error_reason",
"event_ts",
"event_type",
"exit_price",
"operation_id",
"operation_uuid",
"share_price",
"shares_delta",
"shares_requested",
"status",
"user_action_hash",
"vault_nonce",
"vault_subaccount_id",
"wallet"
],
"properties": {
"after_shares": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"amount": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"before_shares": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"creation_timestamp_ms": {
"description": "Timestamp the request was created (ms).",
"type": "integer",
"format": "int64"
},
"entry_price": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"error_reason": {
"type": "string"
},
"event_ts": {
"description": "Timestamp of this event (ms).",
"type": "integer",
"format": "int64"
},
"event_type": {
"description": "\"vault_deposit\" | \"vault_withdraw\" | \"vault_force_withdraw\" | \"vault_cancel\".",
"type": "string"
},
"exit_price": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"operation_uuid": {
"type": "string"
},
"share_price": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"shares_delta": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"shares_requested": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"status": {
"description": "While the action is in the queue, can be one of the following: \"enqueued\" | \"sequencer_applied\" | \"user_cancel\" | \"curator_reject\" | \"protocol_reject\" | \"expired\".\n\nOnce action is applied in the protocol, the status takes on `BatchStatus` values: \"Batching\" | \"Executing\" | \"Proving\" | \"Settling\" | \"Settled\" or an error.",
"type": "string"
},
"user_action_hash": {
"type": "string"
},
"vault_nonce": {
"type": "string"
},
"vault_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"wallet": {
"type": "string"
}
}
},
"VaultCancelResponse": {
"description": "Returned by `cancel_all_vault_requests`: identifiers to track the on-chain `VaultCancel` operation plus the ids of the wallet's pending requests that were cancelled.",
"type": "object",
"required": [
"cancelled_request_ids",
"op_uuid",
"operation_id"
],
"properties": {
"cancelled_request_ids": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VaultRequestId"
}
},
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"VaultConfig": {
"description": "Configuration for a vault subaccount's deposit/withdrawal controls.\n\nEvery field is immutable after vault creation. Mutable, informational settings (descriptions, an advisory TVL cap) live in off-chain vault state, not here.",
"type": "object",
"required": [
"cooldown_sec",
"deposit_spot_asset",
"management_fee_bps",
"max_slippage_bps",
"performance_fee_bps"
],
"properties": {
"benchmark_asset": {
"description": "Spot asset the high-water mark is denominated in. null is the feed-less default: the HWM is a constant USD unit (reads no feed, so a deposit-asset depeg cannot manufacture a performance fee). An address denominates the HWM in that spot asset's units — performance fees then accrue only on outperformance measured in the benchmark (e.g. an ETH vault charging fees on ETH-outperformance, not on an ETH-price rally).",
"anyOf": [
{
"$ref": "#/components/schemas/Address"
},
{
"type": "null"
}
]
},
"cooldown_sec": {
"description": "Min seconds between a holder's last deposit and their withdrawal.",
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"deposit_spot_asset": {
"$ref": "#/components/schemas/Address"
},
"management_fee_bps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"max_slippage_bps": {
"description": "Max deviation of the curator's quoted share price from the mtm-derived price, both sides. Bounded at creation by the protocol-wide maximum slippage limit.",
"type": "integer",
"format": "uint16",
"minimum": 0.0
},
"performance_fee_bps": {
"type": "integer",
"format": "uint16",
"minimum": 0.0
}
}
},
"VaultCreateResponse": {
"description": "Returned by `create_vault`: identifiers to track the on-chain `CreateVault` operation.",
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"VaultDepositHold": {
"type": "object",
"required": [
"amount",
"asset_name",
"currency",
"vault_id"
],
"properties": {
"amount": {
"type": "string"
},
"asset_name": {
"type": "string"
},
"currency": {
"type": "string"
},
"vault_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"VaultForceBurnResponse": {
"description": "Returned by `force_burn`: identifiers to track the on-chain `ForceBurn` operation.",
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"VaultIdsResponse": {
"description": "Returned by `get_curated_vaults` / `get_shareholder_vaults`: the vault subaccount ids the caller curates / holds shares in.",
"type": "object",
"required": [
"subaccount_ids"
],
"properties": {
"subaccount_ids": {
"type": "array",
"items": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
}
},
"VaultPerformanceHistoryResult": {
"type": "object",
"required": [
"points",
"resolution",
"subaccount_id"
],
"properties": {
"points": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VaultPerformancePointResponse"
}
},
"resolution": {
"$ref": "#/components/schemas/PerformanceResolution"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"VaultPerformancePointResponse": {
"description": "One point in a vault's performance series. `ts` is the bucket time (epoch millis); each monetary value is the bucket's last sample as a decimal string. Live prices are nullable (a vault that couldn't be priced).",
"type": "object",
"required": [
"benchmark_price",
"curator_shares",
"global_hwm",
"nav",
"nav_benchmark",
"share_price",
"total_shares",
"ts"
],
"properties": {
"benchmark_price": {
"description": "Optional non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"curator_shares": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"global_hwm": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"nav": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"nav_benchmark": {
"description": "Optional decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits, or null; a string or JSON number is accepted",
"type": [
"string",
"null"
],
"format": "decimal"
},
"share_price": {
"description": "Decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"total_shares": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"ts": {
"type": "integer",
"format": "int64"
}
}
},
"VaultRequestAckResponse": {
"description": "Returned by `request_vault_deposit` / `request_vault_withdraw`: the id the queued request was assigned (the user's handle for polling / cancelling).",
"type": "object",
"required": [
"request_id"
],
"properties": {
"request_id": {
"$ref": "#/components/schemas/VaultRequestId"
}
}
},
"VaultRequestId": {
"description": "Composite vault request id: `(vault_subaccount_id, wallet, vault_nonce)`\n\nUseful as a stable dedup key across off-chain and on-chain vault events.",
"type": "object",
"required": [
"vault_nonce",
"vault_subaccount_id",
"wallet"
],
"properties": {
"vault_nonce": {
"type": "string"
},
"vault_subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"VaultRequestResponse": {
"description": "One queued deposit/withdraw request as surfaced to the curator.",
"type": "object",
"required": [
"creation_timestamp_ms",
"id",
"signed_action",
"subaccount_id",
"user_action_hash",
"wallet"
],
"properties": {
"creation_timestamp_ms": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"id": {
"$ref": "#/components/schemas/VaultRequestId"
},
"signed_action": {
"description": "The user's signed deposit/withdraw envelope; the curator pairs their `MintShares`/`BurnShares` approval against it.",
"$ref": "#/components/schemas/SignedAction"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"user_action_hash": {
"description": "0x-prefixed hex of the 32-byte user-action hash the curator commits to.",
"type": "string"
},
"wallet": {
"$ref": "#/components/schemas/Address"
}
}
},
"VaultSettleResponse": {
"description": "Returned by `mint_vault_shares` / `burn_vault_shares`: identifiers to track the on-chain `MintShares` / `BurnShares` settlement.",
"type": "object",
"required": [
"op_uuid",
"operation_id"
],
"properties": {
"op_uuid": {
"type": "string"
},
"operation_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
}
}
},
"VaultShareEntryResponse": {
"description": "One row of `get_vault_shares`: the caller's share balance in a vault plus the full enriched vault row (same shape as `public/get_vault`).",
"type": "object",
"required": [
"shares",
"vault"
],
"properties": {
"shares": {
"description": "Shares the caller holds. Same units as `vault.protocol.total_shares`.",
"type": "string",
"format": "decimal"
},
"vault": {
"$ref": "#/components/schemas/Vault"
}
}
},
"VaultSharesResponse": {
"description": "Returned by `get_vault_shares`: one entry per vault the wallet holds shares in.",
"type": "object",
"required": [
"vaults"
],
"properties": {
"vaults": {
"type": "array",
"items": {
"$ref": "#/components/schemas/VaultShareEntryResponse"
}
}
}
},
"VaultsResponse": {
"description": "Returned by `public/get_vaults`: one page of vaults plus pagination info. Each row carries its subaccount id under `protocol.subaccount_id`.",
"type": "object",
"required": [
"pagination",
"vaults"
],
"properties": {
"pagination": {
"$ref": "#/components/schemas/Pagination"
},
"vaults": {
"type": "array",
"items": {
"$ref": "#/components/schemas/Vault"
}
}
}
},
"VolFeedDataResponse": {
"type": "object",
"required": [
"confidence",
"currency",
"deadline",
"expiry",
"signatures",
"timestamp",
"vol_data"
],
"properties": {
"confidence": {
"type": "string"
},
"currency": {
"type": "string"
},
"deadline": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"expiry": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"signatures": {
"$ref": "#/components/schemas/OracleSignatureDataResponse"
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"vol_data": {
"$ref": "#/components/schemas/VolSVIParamDataResponse"
}
}
},
"VolSVIParamDataResponse": {
"type": "object",
"required": [
"SVI_a",
"SVI_b",
"SVI_fwd",
"SVI_m",
"SVI_refTau",
"SVI_rho",
"SVI_sigma"
],
"properties": {
"SVI_a": {
"type": "string"
},
"SVI_b": {
"type": "string"
},
"SVI_fwd": {
"type": "string"
},
"SVI_m": {
"type": "string"
},
"SVI_refTau": {
"type": "string"
},
"SVI_rho": {
"type": "string"
},
"SVI_sigma": {
"type": "string"
}
}
},
"WithdrawalEntry": {
"description": "`amount` and `fee` are decimal strings (e.g. `\"1.1\"`); the net sent to the recipient is `amount - fee`. `wallet` is the account owner; `recipient` is the L1 destination. `asset` is the protocol asset (the native-ETH sentinel for ETH); `erc20_address` is the on-chain ERC20 the funds settle against (WETH for native ETH). `operation_id`/`batch_uuid` are the stable uuids.",
"type": "object",
"required": [
"amount",
"asset",
"batch_status",
"batch_uuid",
"erc20_address",
"fee",
"operation_id",
"recipient",
"subaccount_id",
"timestamp",
"wallet"
],
"properties": {
"amount": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"asset": {
"type": "string"
},
"batch_status": {
"$ref": "#/components/schemas/BatchStatus"
},
"batch_uuid": {
"type": "string"
},
"erc20_address": {
"type": "string"
},
"fee": {
"description": "Non-negative decimal string of the human value (e.g. `\"1.5\"`), up to 12 fractional digits; a string or JSON number is accepted",
"type": "string",
"format": "decimal"
},
"operation_id": {
"type": "string"
},
"recipient": {
"type": "string"
},
"subaccount_id": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"timestamp": {
"type": "integer",
"format": "uint64",
"minimum": 0.0
},
"tx_hash": {
"type": [
"string",
"null"
]
},
"wallet": {
"type": "string"
}
}
},
"WithdrawalHistoryResult": {
"type": "object",
"required": [
"withdrawals"
],
"properties": {
"withdrawals": {
"type": "array",
"items": {
"$ref": "#/components/schemas/WithdrawalEntry"
}
}
}
}
}
}
}