openapi: 3.0.3
servers:
- url: https://api.exchange.bullish.com/trading-api
description: PRODUCTION
- url: https://registered.api.exchange.bullish.com/trading-api
description: PRODUCTION
- url: https://prod.access.bullish.com/trading-api
description: PRODUCTION (Direct Connect)
- url: https://api.bugbounty.bullish.com/trading-api
description: SECURITY SANDBOX
- url: https://api.simnext.bullish-test.com/trading-api
description: API SANDBOX
- url: https://registered.api.simnext.bullish-test.com/trading-api
description: API SANDBOX
- url: https://simnext.access.bullish.com/trading-api
description: API SANDBOX (Direct Connect)
info:
description: REST API specification for the Bullish Trading API.
version: 1.0.0
title: Bullish Trading API
contact:
name: Bullish Help Center
email: support@bullish.com
url: https://support.bullish.com
tags:
- name: general
x-displayName: General
- name: asset-data
x-displayName: Asset Data
description: Non-authenticated APIs for accessing general asset data information
- name: market-data
x-displayName: Market Data
description: Non-authenticated APIs for accessing general market data information
- name: market-history-data
x-displayName: Market History Data
- name: index-price-data
x-displayName: Index Price Data
- name: derivatives-public
x-displayName: Derivatives
- name: auction-public
x-displayName: Auction
- name: session-management
x-displayName: Session Management
- name: trading-accounts
x-displayName: Trading Accounts
- name: account-assets
x-displayName: Account Assets
description: Authenticated APIs for reading account data
- name: orders
x-displayName: Orders
description: Authenticated APIs for interacting with orders
- name: trades
x-displayName: Trades
description: Authenticated APIs for reading trade data
- name: amm-instructions
x-displayName: AMM Instructions
description: |+
Authenticated APIs that allow users to Create, View and Terminate AMM instructions.
Please refer to the [AMM instruction Overview Doc](https://github.com/bullish-exchange/api-docs/wiki/Automated-Market-Making-%28AMM%29-Instructions)
for more details on how AMM instructions work.
- name: transfer
x-displayName: Transfer
description: Authenticated API for initiating asset transfers between trading accounts.
- name: custody
x-displayName: Custody
description: |+
Authenticated APIs for custody, [Custody Basic Examples](https://github.com/bullish-exchange/api-examples/blob/master/bullish/rest/custody_basics.py)
Custody APIs have a limit of 40 requests per IP, per minute. This is combined across all endpoints of type **/wallets/***
- name: derivatives
x-displayName: Derivatives
- name: market-maker-protection
x-displayName: Market Maker Protection (MMP)
- name: history
x-displayName: History
- name: otc
x-displayName: OTC
description: The OTC Clearing Facility API (OTC API) is available to customers to book trades negotiated outside of the Bullish Exchange order book to Bullish's clearing and settlement platform. Customers may agree to an OTC transaction through bilateral negotiations or via a 3rd party RFQ platform. Once the two customers agree on the trade details, they can use the OTC API to book the trade to their Bullish account to benefit from Bullish's risk and collateral management system. For purposes of clarity, the OTC API is not for trading purposes.
- name: idb
x-displayName: Inter-dealer Broker (IDB)
description: The Inter-dealer Broker (IDB) API is available to authorized inter-dealer brokers to book OTC trades on Bullish on behalf of their respective end customers.
- name: index-data
x-displayName: Index Data
- name: users
x-displayName: Users
description: Authenticated APIs for interacting with users
- name: command entry
x-displayName: Command Entry
description: Authenticated API for submitting commands into the exchange.
- name: time
x-displayName: Time
description: Non-authenticated API for reading time data
- name: account-model
x-displayName: SpotAccount Model
description: |
- name: order-model
x-displayName: Order Model
description: |
- name: create-order-request-model
x-displayName: Create Order Request Model
description: |
- name: update-order-quantity-request-model
x-displayName: Update Order Quantity Request Model
description: |
- name: trade-model
x-displayName: Trade Model
description: |
- name: obfuscated-trade-model
x-displayName: Obfuscated Trade Model
description: |
- name: market-model
x-displayName: Market Model
description: |
- name: orderbook-model
x-displayName: Order Book Model
description: |
- name: tick-model
x-displayName: Tick Model
description: |
- name: ohlcv-candle-model
x-displayName: OHLCV Candle Model
description: |
- name: position-model
x-displayName: Position Model
description: |
- name: spot-account-id
x-displayName: SpotAccount ID
description: |
- name: order-id
x-displayName: Order ID
description: |
- name: trade-id
x-displayName: Trade ID
description: |
- name: market-id
x-displayName: Market ID
description: |
- name: timestamp
x-displayName: Timestamp Model
description: |
- name: timestamp-as-string
x-displayName: Timestamp Model
description: |
- name: datetime
x-displayName: Datetime Model
description: |
- name: order-time-in-force
x-displayName: Order Time In Force
description: |
- name: order-time-in-force-as-string
x-displayName: Order Time In Force
description: |
- name: order-type
x-displayName: Order Type
description: |
- name: order-type-as-string
x-displayName: Order Type
description: |
- name: order-status
x-displayName: Order Status
description: |
- name: order-status-as-string
x-displayName: Order Status
description: |
- name: order-side
x-displayName: Order Side
description: |
- name: order-side-as-string
x-displayName: Order Side
description: |
- name: candle-window
x-displayName: Candle Window
description: |
- name: portfolio-margin-simulator
x-displayName: Portfolio Margin Simulator
x-tagGroups:
- name: Public Endpoints
tags:
- general
- asset-data
- market-data
- market-history-data
- index-price-data
- derivatives-public
- auction-public
- name: Private Endpoints
tags:
- session-management
- trading-accounts
- account-assets
- orders
- trades
- amm-instructions
- transfer
- custody
- derivatives
- market-maker-protection
- history
- otc
- idb
- portfolio-margin-simulator
paths:
/v1/nonce:
get:
tags:
- general
summary: Get Current Nonce Range
description: |
Get the current nonce range. The lower bound of nonce range is EPOCH start of day in microseconds, and upper bound of nonce range is EPOCH end of day in microseconds.
**Ratelimited:** `False`
operationId: getNonce
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Nonce"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/users/logout:
get:
x-position: 3
tags:
- session-management
summary: Logout
description: |
Logout of the session associated with the JWT. It requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header.
**Ratelimited:** `True`
operationId: logoutUser
responses:
"200":
description: OK
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v2/users/login:
post:
x-position: 1
tags:
- session-management
summary: Login
description: |
Login and generate a new session associated with a JWT. Once you log in from an IP, the same IP must be used for
the duration of the session for any subsequent requests.
**Ratelimited:** `True`
operationId: loginUserV2
responses:
"200":
description: returns JWT and the `authorizer` for signing requests
content:
application/json:
schema:
$ref: "#/components/schemas/LoginResponse"
"400":
description: Bad Request
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
description: login request body
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/LoginRequest"
security: []
/v1/users/hmac/login:
get:
x-position: 2
tags:
- session-management
summary: HMAC Login
description: |
Login and generate a new session associated with a JWT using HMAC. Once you log in from an IP, the same IP must
be used for the duration of the session for any subsequent requests.
**Ratelimited:** `True`
operationId: loginUserHmac
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-PUBLIC-KEY"
responses:
"200":
description: returns JWT and the `authorizer` for signing requests
content:
application/json:
schema:
$ref: "#/components/schemas/LoginResponse"
"400":
description: Bad Request
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/accounts/trading-accounts:
get:
tags:
- trading-accounts
summary: Get All Trading Accounts Details
description: |
Gets details for all trading accounts accessible by the API key used in the request. It requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header. The trading account's id will be used in all other REST API
**Ratelimited:** `True`
operationId: getTradingAccounts
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/TradingAccountResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/accounts/trading-accounts/{tradingAccountId}:
get:
tags:
- trading-accounts
summary: Get Trading Account Details by ID
description: |
Gets details for specific trading account by `tradingAccountId` and API key used in the request. It requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header.
**Ratelimited:** `True`
operationId: getTradingAccountById
parameters:
- in: path
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/TradingAccountResponse"
"400":
description: Bad Request Parameter
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/accounts/asset:
get:
tags:
- account-assets
summary: Get All Account Assets
description: |
Gets the asset accounts, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`
operationId: getAssetAccounts
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/AssetAccount"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/accounts/asset/{symbol}:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/AssetSymbol"
required: true
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
tags:
- account-assets
summary: Get All Account Assets by Symbol
description: |
Gets the asset account by symbol, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`
operationId: getAssetAccountBySymbol
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AssetAccount"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v2/orders:
get:
x-position: 1
tags:
- orders
summary: Get Orders
description: |
Retrieve a list of orders placed by a trading account with specified filters.
- Only the last 24 hours of data is available for querying
This endpoint requires [authentication](/rest/authentication#generate-a-jwt-token) and supports [pagination](/rest/general/pagination).
To filter by `createdAtDatetime` and `createdAtTimestamp`, additional parameters are required. For detailed instructions, see the [Filtering Support](/rest/general/filtering) section.
Additionally, this endpoint is subjected to rate limiting.
operationId: getOrdersV2
parameters:
- in: query
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: false
- in: query
name: clientOrderId
description: Unique numeric (i64) identifier generated on the client
side expressed as a string value
schema:
$ref: "#/components/schemas/OrderHandle"
required: false
- in: query
name: side
description: order side
schema:
$ref: "#/components/schemas/OrderSide"
required: false
- in: query
name: status
description: order status
schema:
$ref: "#/components/schemas/OrderStatus"
required: false
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
- in: query
name: isAuctionOrder
description: Filter orders by auction type. `true` returns auction orders (GTX) only, `false` returns non-auction orders only. Omit to return all orders
schema:
type: boolean
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/Order"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
post:
x-position: 4
tags:
- orders
summary: Create Order
description: |
Creates an order, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field ordering
and addition of null fields in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.
operationId: createOrderV2
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-NONCE-WINDOW-ENABLED"
- $ref: "#/components/parameters/BX-REFERRER"
responses:
"200":
description: Status OK. The create order command was successfully
acknowledged. To check the current status of the order, query [Get
Order by ID](/rest/api/get-order-by-id-v-2) using the
`orderId` received in the response payload. Please consult the
section [How To Ensure The Order Of *Create Order* or *Cancel Order*
Requests](/rest/order-processing-create-cancel-request-mechanism)
for more information.
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOrderCommandResponseV3"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
description: new order request body
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOrderCommandV3"
examples:
CreateLimitOrderCommand:
$ref: "#/components/examples/CreateLimitOrderCommand"
CreateMarketOrderCommand:
$ref: "#/components/examples/CreateMarketOrderCommand"
CreateStopLimitOrderCommand:
$ref: "#/components/examples/CreateStopLimitOrderCommand"
CreatePostOnlyOrderCommand:
$ref: "#/components/examples/CreatePostOnlyOrderCommand"
security:
- jwtTokenAuth: []
/v2/orders/{orderId}:
parameters:
- in: path
name: orderId
schema:
type: number
required: true
description: order ID
get:
x-position: 2
tags:
- orders
summary: Get Order by ID
description: |
Retrieve a specific order using its unique identifier.
This endpoint requires [authentication](/rest/authentication#generate-a-jwt-token) and is subjected to rate limiting.
operationId: getOrderByIdV2
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Order"
"404":
description: Order not found (order ID is invalid)
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v2/orders/client-order-id/{clientOrderId}:
parameters:
- in: path
name: clientOrderId
schema:
type: number
required: true
description: unique numeric (i64) identifier generated on the client side
get:
x-position: 3
tags:
- orders
summary: Get Order by clientOrder ID
description: |
Retrieve a specific order using its unique identifier generated on the client side.
This endpoint requires [authentication](/rest/authentication#generate-a-jwt-token) and is subjected to rate limiting.
operationId: trade-get-order-by-client-order-id-v2
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Order"
"401":
description: Not Authenticated
"404":
description: Order not found (clientOrder ID is invalid)
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v2/history/orders:
get:
tags:
- history
summary: Get Historical Orders
description: |
Retrieve a list of orders placed by a trading account with specified filters.
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
This endpoint requires [authentication](/rest/authentication#generate-a-jwt-token) and supports [pagination](/rest/general/pagination).
To filter by `createdAtDatetime` and `createdAtTimestamp`, additional parameters are required. For detailed instructions, see the [Filtering Support](/rest/general/filtering) section.
Additionally, this endpoint is subjected to rate limiting.
operationId: getOrdersHistoryV2
parameters:
- in: query
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: false
- in: query
name: orderId
schema:
$ref: "#/components/schemas/OrderID"
required: false
- in: query
name: clientOrderId
description: Unique numeric (i64) identifier generated on the client
side expressed as a string value
schema:
$ref: "#/components/schemas/OrderHandle"
required: false
- in: query
name: side
description: order side
schema:
$ref: "#/components/schemas/OrderSide"
required: false
- in: query
name: status
description: order status
schema:
$ref: "#/components/schemas/OrderStatus"
required: false
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as
string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as
string
schema:
$ref: "#/components/schemas/DateTime"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/Order"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v2/amm-instructions:
get:
x-position: 1
tags:
- amm-instructions
summary: Get AMM Instructions
description: |
Gets a list of AMM instructions based on applied filters.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
- [supports pagination](/rest/general/pagination)
**Ratelimited:** `True`
operationId: getAmmInstructions
parameters:
- in: query
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: false
- in: query
name: status
description: order status
schema:
$ref: "#/components/schemas/AMMInstructionStatus"
required: false
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/AMMInstruction"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
post:
x-position: 3
tags:
- amm-instructions
summary: Create AMM Instruction
description: |
Creates an AMM instruction, requires [bearer token](/rest/authentication#add-authenticated-request-header)
in authorization header.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field ordering
in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
**Ratelimited:** `True`
operationId: createAmmInstruction
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
responses:
"200":
description: Status OK. This means a create AMM instruction command
was successfully acknowledged. It does not necessarily mean the
instruction was created. To check the current status, query [Get AMM
Instruction by
ID](/rest/api/get-amm-instruction-by-id-v-2) using the
`instructionId` received in the response payload.
content:
application/json:
schema:
$ref: "#/components/schemas/CreateAMMInstructionCommandResponseV3"
examples:
CreateAMMInstructionCommandResponse:
$ref: "#/components/examples/CreateAMMInstructionCommandResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
description: new AMM instruction
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateAMMInstructionCommandV3"
examples:
CreateAMMInstructionCommand:
$ref: "#/components/examples/CreateAMMInstructionCommand"
security:
- jwtTokenAuth: []
/v2/amm-instructions/{instructionId}:
parameters:
- in: path
name: instructionId
schema:
type: number
required: true
description: unique AMM instruction ID
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
get:
x-position: 2
tags:
- amm-instructions
summary: Get AMM Instruction by ID
description: |
Gets a specific AMM instruction based on the `instructionId`,
requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`
operationId: getAmmInstructionByIdV2
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/AMMInstruction"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v2/command:
post:
tags:
- command entry
summary: Create Command
description: |
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
Command schemas and examples are provided below. Supported commands:
- V3CancelOrder
- V1CancelAllOrders
- V1CancelAllOrdersByMarket
- V1DelayedCancelAllOrders
- V1UnsetDelayedCancelAllOrders
- V1AmendOrder
- V3TerminateAMMInstruction
- V2TransferAsset
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.
operationId: submitCommand
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-NONCE-WINDOW-ENABLED"
responses:
"200":
description: Status OK. This means a command was successfully
acknowledged.
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V3CancelOrder: "#/components/schemas/CancelOrderCommandResponseV3"
V1CancelAllOrders: "#/components/schemas/CancelAllOrdersCommandResponse"
V1CancelAllOrdersByMarket: "#/components/schemas/CancelAllOrdersByMarketResponse"
V1DelayedCancelAllOrders: "#/components/schemas/DelayedCancelAllOrdersResponse"
V1UnsetDelayedCancelAllOrders: "#/components/schemas/UnsetDelayedCancelAllOrdersResponse"
V3TerminateAMMInstruction: "#/components/schemas/TerminateAMMInstructionCommandResponseV3"
V2TransferAsset: "#/components/schemas/TradingAccountTransferResponse"
V1AmendOrder: "#/components/schemas/AmendOrderCommandResponseV1"
oneOf:
- $ref: "#/components/schemas/CancelOrderCommandResponseV3"
- $ref: "#/components/schemas/CancelAllOrdersCommandResponse"
- $ref: "#/components/schemas/CancelAllOrdersByMarketResponse"
- $ref: "#/components/schemas/DelayedCancelAllOrdersResponse"
- $ref: "#/components/schemas/UnsetDelayedCancelAllOrdersResponse"
- $ref: "#/components/schemas/TerminateAMMInstructionCommandResponseV3"
- $ref: "#/components/schemas/TradingAccountTransferResponse"
- $ref: "#/components/schemas/AmendOrderCommandResponseV1"
examples:
CancelOrderCommand:
$ref: "#/components/examples/CancelOrderCommandResponse"
CancelAllOrdersCommand:
$ref: "#/components/examples/CancelAllOrdersCommandResponse"
CancelAllOrdersByMarketCommand:
$ref: "#/components/examples/CancelAllOrdersByMarketCommandResponse"
DelayedCancelAllOrdersCommand:
$ref: "#/components/examples/DelayedCancelAllOrdersCommandResponse"
UnsetDelayedCancelAllOrdersCommand:
$ref: "#/components/examples/UnsetDelayedCancelAllOrdersCommandResponse"
TerminateAMMInstructionCommand:
$ref: "#/components/examples/TerminateAMMInstructionCommandResponse"
TransferAssetCommand:
$ref: "#/components/examples/TransferAssetCommandResponse"
AmendOrderCommand:
$ref: "#/components/examples/AmendOrderCommandResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V3CancelOrder: "#/components/schemas/CancelOrderCommandV3"
V1CancelAllOrders: "#/components/schemas/CancelAllOrdersCommand"
V1CancelAllOrdersByMarket: "#/components/schemas/CancelAllOrdersByMarketCommand"
V1DelayedCancelAllOrders: "#/components/schemas/DelayedCancelAllOrdersCommand"
V1UnsetDelayedCancelAllOrders: "#/components/schemas/UnsetDelayedCancelAllOrdersCommand"
V3TerminateAMMInstruction: "#/components/schemas/TerminateAMMInstructionCommandV3"
V2TransferAsset: "#/components/schemas/TransferAssetCommandV2"
V1AmendOrder: "#/components/schemas/AmendOrderCommandV1"
oneOf:
- $ref: "#/components/schemas/CancelOrderCommandV3"
- $ref: "#/components/schemas/CancelAllOrdersCommand"
- $ref: "#/components/schemas/CancelAllOrdersByMarketCommand"
- $ref: "#/components/schemas/DelayedCancelAllOrdersCommand"
- $ref: "#/components/schemas/UnsetDelayedCancelAllOrdersCommand"
- $ref: "#/components/schemas/TerminateAMMInstructionCommandV3"
- $ref: "#/components/schemas/TransferAssetCommandV2"
- $ref: "#/components/schemas/AmendOrderCommandV1"
examples:
CancelOrderCommand:
$ref: "#/components/examples/CancelOrderCommand"
CancelAllOrdersCommand:
$ref: "#/components/examples/CancelAllOrdersCommand"
CancelAllOrdersByMarketCommand:
$ref: "#/components/examples/CancelAllOrdersByMarketCommand"
DelayedCancelAllOrdersCommand:
$ref: "#/components/examples/DelayedCancelAllOrdersCommand"
UnsetDelayedCancelAllOrdersCommand:
$ref: "#/components/examples/UnsetDelayedCancelAllOrdersCommand"
AmendOrderCommand:
$ref: "#/components/examples/AmendOrderCommand"
TerminateAMMInstructionCommand:
$ref: "#/components/examples/TerminateAMMInstructionCommand"
TransferAssetCommand:
$ref: "#/components/examples/TransferAssetCommand"
security:
- jwtTokenAuth: []
/v2/command#transferAsset:
post:
tags:
- transfer
summary: Transfer Asset Command
description: |
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.
operationId: submitTransferAssetCommand
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-NONCE-WINDOW-ENABLED"
responses:
"200":
description: Status OK. This means a command was successfully
acknowledged.
content:
application/json:
schema:
$ref: "#/components/schemas/TradingAccountTransferResponse"
examples:
TransferAssetResponse:
$ref: "#/components/examples/TransferAssetCommandResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TransferAssetCommandV2"
examples:
TransferAssetCommand:
$ref: "#/components/examples/TransferAssetCommand"
security:
- jwtTokenAuth: []
/v2/command#terminateAMMInstruction:
post:
x-position: 4
tags:
- amm-instructions
summary: Terminate AMM Instruction Command
description: |
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.
operationId: submitTerminateAMMInstructionCommand
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-NONCE-WINDOW-ENABLED"
responses:
"200":
description: Status OK. This means a command was successfully
acknowledged.
content:
application/json:
schema:
$ref: "#/components/schemas/TerminateAMMInstructionCommandResponseV3"
examples:
TerminateAMMInstructionResponse:
$ref: "#/components/examples/TerminateAMMInstructionCommandResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/TerminateAMMInstructionCommandV3"
examples:
TerminateAMMInstructionCommand:
$ref: "#/components/examples/TerminateAMMInstructionCommand"
security:
- jwtTokenAuth: []
/v2/command#cancellations:
post:
x-position: 5
tags:
- orders
summary: Cancel Order Commands
description: |
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
Command schemas and examples are provided below. Supported commands:
- V3CancelOrder
- V1CancelAllOrders
- V1CancelAllOrdersByMarket
- V1DelayedCancelAllOrders
- V1UnsetDelayedCancelAllOrders
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.
operationId: submitCancellationCommands
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-NONCE-WINDOW-ENABLED"
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V3CancelOrder: "#/components/schemas/CancelOrderCommandResponseV3"
V1CancelAllOrders: "#/components/schemas/CancelAllOrdersCommandResponse"
V1CancelAllOrdersByMarket: "#/components/schemas/CancelAllOrdersByMarketResponse"
V1DelayedCancelAllOrders: "#/components/schemas/DelayedCancelAllOrdersResponse"
V1UnsetDelayedCancelAllOrders: "#/components/schemas/UnsetDelayedCancelAllOrdersResponse"
oneOf:
- $ref: "#/components/schemas/CancelOrderCommandResponseV3"
- $ref: "#/components/schemas/CancelAllOrdersCommandResponse"
- $ref: "#/components/schemas/CancelAllOrdersByMarketResponse"
- $ref: "#/components/schemas/DelayedCancelAllOrdersResponse"
- $ref: "#/components/schemas/UnsetDelayedCancelAllOrdersResponse"
examples:
CancelOrderCommand:
$ref: "#/components/examples/CancelOrderCommandResponse"
CancelAllOrdersCommand:
$ref: "#/components/examples/CancelAllOrdersCommandResponse"
CancelAllOrdersByMarketCommand:
$ref: "#/components/examples/CancelAllOrdersByMarketCommandResponse"
DelayedCancelAllOrdersCommand:
$ref: "#/components/examples/DelayedCancelAllOrdersCommandResponse"
UnsetDelayedCancelAllOrdersCommand:
$ref: "#/components/examples/UnsetDelayedCancelAllOrdersCommandResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V3CancelOrder: "#/components/schemas/CancelOrderCommandV3"
V1CancelAllOrders: "#/components/schemas/CancelAllOrdersCommand"
V1CancelAllOrdersByMarket: "#/components/schemas/CancelAllOrdersByMarketCommand"
V1DelayedCancelAllOrders: "#/components/schemas/DelayedCancelAllOrdersCommand"
V1UnsetDelayedCancelAllOrders: "#/components/schemas/UnsetDelayedCancelAllOrdersCommand"
oneOf:
- $ref: "#/components/schemas/CancelOrderCommandV3"
- $ref: "#/components/schemas/CancelAllOrdersCommand"
- $ref: "#/components/schemas/CancelAllOrdersByMarketCommand"
- $ref: "#/components/schemas/DelayedCancelAllOrdersCommand"
- $ref: "#/components/schemas/UnsetDelayedCancelAllOrdersCommand"
examples:
CancelOrderCommand:
$ref: "#/components/examples/CancelOrderCommand"
CancelAllOrdersCommand:
$ref: "#/components/examples/CancelAllOrdersCommand"
CancelAllOrdersByMarketCommand:
$ref: "#/components/examples/CancelAllOrdersByMarketCommand"
DelayedCancelAllOrdersCommand:
$ref: "#/components/examples/DelayedCancelAllOrdersCommand"
UnsetDelayedCancelAllOrdersCommand:
$ref: "#/components/examples/UnsetDelayedCancelAllOrdersCommand"
security:
- jwtTokenAuth: []
/v2/command#amend:
post:
x-position: 6
tags:
- orders
summary: Amend Order Command
description: |
Ability to amend the `price`, `quantity` and `type` (i.e. change from Taker Only to Maker Only and vice versa) on GTC Limit orders. It can be applied only to open orders (`quantityFilled=0` and `status=OPEN`). For Auction Limit Orders (LOC), only `price` can be amended. Auction Market Orders (MOC) do not support amendment.
Submits a command to the trading engine to amend an order. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body. Quantities and prices does not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`. Higher tiers of rate limits available by providing the `BX-RATELIMIT-TOKEN` request header.
operationId: submitAmendmentCommand
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-NONCE-WINDOW-ENABLED"
responses:
"200":
description: Status OK. This means a command was successfully
acknowledged.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/AmendOrderCommandResponseV1"
examples:
AmendOrderResponse:
$ref: "#/components/examples/AmendOrderCommandResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOrderEntryResponse"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/AmendOrderCommandV1"
examples:
AmendOrderCommand:
$ref: "#/components/examples/AmendOrderCommand"
security:
- jwtTokenAuth: []
/v2/mmp-configuration:
post:
x-position: 2
tags:
- market-maker-protection
summary: Setup Market Maker Protection (MMP)
description: |
MMP configurations are setup per underlying asset symbol for a specific trading Account. While setting up MMP configurations you can specify `windowTimeInSeconds`, `frozenTimeInSeconds`, `quantityLimit` and `deltaLimit` and use it as best suited.
Please reach out to your relationship manager to understand how to enable MMP for your trading accounts.
- To get updates on the status of your set / reset MMP configs request for an underlying asset symbol over WS, please subscribe to `mmpRequest` TOPIC within the [Private Data WebSocket](/websocket/private/private-data).
- To get updates about MMP triggered event over WS, please subscribe to the `mmpTriggered` TOPIC within the [Private Data WebSocket](/websocket/private/private-data).
To update/amend your MMP configs, please use the ResetMMPCommandV1 to reset the MMP configurations, followed by setting up a new MMP config via setMMPCommandV1 per underlying asset symbol.
Notes:
- MMP is only applicable for Options [Orders created](/rest/api/create-order-v-2) with the `isMMP` flag set to `true`.
- ResetMMPCommandV1 will trigger only when there are no `isMMP=true` open orders on the account
operationId: setMmpConfiguration
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
anyOf:
- $ref: "#/components/schemas/SetMMPCommandResponse"
- $ref: "#/components/schemas/ResetMMPCommandResponse"
examples:
SetMMPCommandResponse:
$ref: "#/components/examples/SetMMPCommandResponse"
ResetMMPCommandResponse:
$ref: "#/components/examples/ResetMMPCommandResponse"
"400":
description: Bad Request
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/SetMMPCommandV1"
- $ref: "#/components/schemas/ResetMMPCommandV1"
examples:
SetMMPCommandV1:
$ref: "#/components/examples/SetMMPCommandV1"
ResetMMPCommandV1:
$ref: "#/components/examples/ResetMMPCommandV1"
security:
- jwtTokenAuth: []
get:
x-position: 1
tags:
- market-maker-protection
summary: Get Market Marker Protection (MMP) by Trading Account ID
description: |
Get market maker protection configurations under a trading account id
This endpoint requires [authentication](/rest/authentication#generate-a-jwt-token). To filter by `symbol`, additional parameters are required. For detailed instructions, see the [Filtering Support](/rest/general/filtering) section.
operationId: getMmpConfiguration
parameters:
- in: query
name: symbol
description: The underlying asset id you filter the configurations against. If symbol is provided, this API will only return the market maker protection configuration for this symbol for this trading account.
schema:
$ref: "#/components/schemas/UnderlyingAssetSymbol"
required: false
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
$ref: "#/components/schemas/GetMmpConfigurationResponse"
"400":
description: Bad Request
"401":
description: Not Authenticated
"403":
description: Access Forbidden
security:
- jwtTokenAuth: []
/v1/trades:
get:
tags:
- trades
summary: Get Trades
description: |
Get a list of trades based on specified filters.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
- Only the last 24 hours of data is available for querying
- [supports pagination](/rest/general/pagination)
- filtering on `createdAtDatetime`, `createdAtTimestamp` requires additional keywords, [see filtering support](/rest/general/filtering)
**Ratelimited:** `True`
operationId: getTrades
parameters:
- in: query
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: false
- in: query
name: orderId
description: unique order ID
schema:
$ref: "#/components/schemas/OrderID"
required: false
- in: query
name: clientOrderId
description: unique numeric (i64) identifier generated on the client side, only orderId or clientOrderId can be used
schema:
$ref: "#/components/schemas/OrderHandle"
required: false
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
- in: query
name: otcTradeId
description: unique Bullish otc trade id
schema:
$ref: "#/components/schemas/OtcTradeId"
required: false
- in: query
name: clientOtcTradeId
description: unique client otc trade id
schema:
$ref: "#/components/schemas/ClientOtcTradeId"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/Trade"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/trades/{tradeId}:
get:
parameters:
- in: path
name: tradeId
schema:
type: number
required: true
description: trade ID
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
tags:
- trades
summary: Get Trade by ID
description: |
Gets a trade by ID, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`
operationId: getTradeById
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Trade"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/trades/client-order-id/{clientOrderId}:
get:
parameters:
- in: path
name: clientOrderId
schema:
$ref: "#/components/schemas/OrderHandle"
required: true
description: unique numeric (i64) identifier generated on the client side
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
tags:
- trades
summary: Get Trades by clientOrder ID
description: |
Gets trade(s) associated with the clientOrderID, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True`
operationId: trade-get-trade-by-client-order-id
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Trade"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/history/trades:
get:
tags:
- history
summary: Get Historical Trades
description: |
Get a list of trades based on specified filters.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
- [supports pagination](/rest/general/pagination)
- filtering on `createdAtDatetime`, `createdAtTimestamp` requires additional keywords, [see filtering support](/rest/general/filtering)
**Ratelimited:** `True`
operationId: getTradesHistory
parameters:
- in: query
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: false
- in: query
name: orderId
description: unique order ID
schema:
$ref: "#/components/schemas/OrderID"
required: false
- in: query
name: tradeId
description: unique trade ID
schema:
$ref: "#/components/schemas/TradeID"
required: false
- in: query
name: clientOrderId
description: unique numeric (i64) identifier generated on the client side, only orderId or clientOrderId can be used
schema:
$ref: "#/components/schemas/OrderHandle"
required: false
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: otcTradeId
description: unique Bullish otc trade id
schema:
$ref: "#/components/schemas/OtcTradeId"
required: false
- in: query
name: clientOtcTradeId
description: unique client otc trade id
schema:
$ref: "#/components/schemas/ClientOtcTradeId"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/Trade"
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/transactions:
get:
tags:
- custody
summary: Get Custody Transaction History
description: |
Get custody transaction history, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
Please note that Custody endpoints utilize a non-multiplied asset format for long decimal assets like SHIB and PEPE, ensuring consistency with real-world asset representation. This differs from Trading endpoints, which use a multiplied asset format, such as SHIB1M and PEPE1M. For more information, please see [help center](https://bullishexchange.atlassian.net/wiki/spaces/BHC/pages/20807684/Understanding+Multiplied+Assets+PEPE1M+and+SHIB1M)
- [supports pagination](/rest/general/pagination)
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: getCustodyTransactionHistory
parameters:
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CustodyHistory"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/limits/{symbol}:
get:
tags:
- custody
summary: Get Withdrawal Limits for Symbol
description: |
Get withdrawal limits for symbol, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
Please note that Custody endpoints utilize a non-multiplied asset format for long decimal assets like SHIB and PEPE, ensuring consistency with real-world asset representation. This differs from Trading endpoints, which use a multiplied asset format, such as SHIB1M and PEPE1M. For more information, please see [help center](https://bullishexchange.atlassian.net/wiki/spaces/BHC/pages/20807684/Understanding+Multiplied+Assets+PEPE1M+and+SHIB1M)
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: getCustodyWithdrawalLimits
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/CustodySymbol"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CustodyLimits"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/deposit-instructions/crypto/{symbol}:
get:
tags:
- custody
summary: Get Deposit Instructions for Crypto
description: |
Get deposit instructions, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
Please note that Custody endpoints utilize a non-multiplied asset format for long decimal assets like SHIB and PEPE, ensuring consistency with real-world asset representation. This differs from Trading endpoints, which use a multiplied asset format, such as SHIB1M and PEPE1M. For more information, please see [help center](https://bullishexchange.atlassian.net/wiki/spaces/BHC/pages/20807684/Understanding+Multiplied+Assets+PEPE1M+and+SHIB1M)
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: getCryptoDepositInstructions
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/CustodySymbol"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CustodyCryptoDepositInstructions"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/withdrawal-instructions/crypto/{symbol}:
get:
tags:
- custody
summary: Get Withdrawal Instructions for Crypto
description: |
Get crypto withdrawal instructions, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header. Please note that all withdrawal addresses must be whitelisted via the Bullish website before any digital asset withdrawals can be processed.
Please note that Custody endpoints utilize a non-multiplied asset format for long decimal assets like SHIB and PEPE, ensuring consistency with real-world asset representation. This differs from Trading endpoints, which use a multiplied asset format, such as SHIB1M and PEPE1M. For more information, please see [help center](https://bullishexchange.atlassian.net/wiki/spaces/BHC/pages/20807684/Understanding+Multiplied+Assets+PEPE1M+and+SHIB1M)
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: getCryptoWithdrawalInstructions
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/CustodySymbol"
required: true
- in: query
name: signed
schema:
$ref: "#/components/schemas/CustodyDestinationSigned"
required: false
- in: query
name: locked
schema:
$ref: "#/components/schemas/CustodyDestinationLocked"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CustodyCryptoWithdrawalInstructions"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/deposit-instructions/fiat/{symbol}:
get:
tags:
- custody
summary: Get Deposit Instructions for Fiat
description: |
Get deposit instructions, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: getFiatDepositInstructions
parameters:
- in: path
name: symbol
example: USD
schema:
$ref: "#/components/schemas/InstrumentId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CustodyFiatDepositInstructions"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/withdrawal-instructions/fiat/{symbol}:
get:
tags:
- custody
summary: Get Withdrawal Instructions for Fiat
description: |
Get withdrawal instructions added by the user, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header. Please note that before withdrawal destinations can be used for withdrawing to, they must be whitelisted on the Bullish website.
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: getFiatWithdrawalInstructions
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/CustodyFiatSymbol"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CustodyFiatWithdrawalInstructions"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/self-hosted/initiate:
post:
tags:
- custody
summary: Initiate Self-Hosted Wallet Verification
description: |
This endpoint is used for initiating wallet verification requests.
Note: users will have 24 hours to complete the wallet verification by sending the exact total amount to the Bullish deposit address provided.
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: custody-initiate-self-hosted-verification
requestBody:
description: Self hosted wallet verification request
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CustodySelfHostedInitiateRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CustodySelfHostedInitiateResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/self-hosted/verification-attempts:
get:
tags:
- custody
summary: Get a List of Self-Hosted Wallet Verification Attempts
description: |
This endpoint provides a history of all Wallet Verification attempts, including those that are completed, pending verification and expired.
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: custody-get-self-hosted-verifications
parameters:
- in: query
name: address
schema:
$ref: "#/components/schemas/CustodyNetworkAddress"
required: false
- in: query
name: destinationId
schema:
$ref: "#/components/schemas/CustodyDestinationID"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/CustodyGetSelfHostedVerificationResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/withdrawal-instructions/{destinationId}:
delete:
tags:
- custody
summary: Delete Existing Wallet Address
description: |
This endpoint is used for deleting any existing withdrawal addresses.
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: custody-delete-withdrawal-instructions
parameters:
- in: path
name: destinationId
schema:
$ref: "#/components/schemas/CustodyDestinationID"
required: true
responses:
"200":
description: OK
"404":
description: A wallet destination is not found for the specified `destinationId`.
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/wallets/withdrawal:
post:
tags:
- custody
summary: Create Withdrawal
description: |
Trigger a withdrawal, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
The `BX-SIGNATURE` header should be created by signing the request with an ECDSA API Key as follows:
1. Construct a string that concatenates the following fields:
- `timestamp` - current epoch milliseconds e.g. 1697008474031
- `nonce` - a UUID identifier to protect against replay attacks e.g. 255241a1-2cde-4954-87b1-13beef547960
- `request method` - e.g. POST
- `request path` - e.g. /trading-api/v1/wallets/withdrawal
- `request body JSON string`, removing any spaces and newline characters
2. Hash the string using a SHA-256 hash function and sign the resulting hexdigest with your ``.
3. DER encode the signature, and base64 encode the DER encoded signature.
> **Bullish requires you to whitelist a withdrawal destination address before submitting a withdrawal request. You may view, approve, and manage your list of destination addresses in Account Settings on the Bullish website. If you attempt a withdrawal without first whitelisting an address in Account Settings, then the withdrawal attempt will fail.**
For a full example of using the withdrawal endpoint please see the [Custody Withdrawal Example](https://github.com/bullish-exchange/api-examples/blob/master/custody/custody_withdrawal_ecdsa.py)
Please note that Custody endpoints utilize a non-multiplied asset format for long decimal assets like SHIB and PEPE, ensuring consistency with real-world asset representation. This differs from Trading endpoints, which use a multiplied asset format, such as SHIB1M and PEPE1M. For more information, please see [help center](https://bullishexchange.atlassian.net/wiki/spaces/BHC/pages/20807684/Understanding+Multiplied+Assets+PEPE1M+and+SHIB1M)
The currently supported precisions for withdrawal quantities are as follows. Please note that fees are always specified in units of the symbol itself, not in smaller denominations (e.g. BTC not Satoshi, ETH not Wei) :
| Symbol | Precision | Remarks |
| ---------- |---------------- | --- |
| USD | 2dp | |
| BTC | 8dp | |
| DOGE | 8dp | |
| ETH | 8dp | |
| LTC | 8dp | |
| XRP | 6dp | |
| AAVE | 8dp | |
| CRV | 8dp | |
| LINK | 8dp | |
| MANA | 8dp | |
| MATIC | 8dp | |
| SUSHI | 8dp | |
| UNI | 8dp | |
| USDC | 6dp | |
| USDT | 6dp | |
| SHIB | 2dp | Please ensure to use the non-multiplied asset format (e.g., SHIB, PEPE, BONK) when creating withdrawals, as Custody endpoints align with real-world asset representation |
| PEPE | 2dp | Please ensure to use the non-multiplied asset format (e.g., SHIB, PEPE, BONK) when creating withdrawals, as Custody endpoints align with real-world asset representation |
| BONK | Round to the nearest ten (e.g., 120 or 130, not 125). | Please ensure to use the non-multiplied asset format (e.g., SHIB, PEPE, BONK) when creating withdrawals, as Custody endpoints align with real-world asset representation |
**Ratelimited:** `True` - see [custody limits](/rest/general/rate-limits)
operationId: createCustodyWithdrawal
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
requestBody:
description: withdrawal request
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CustodyApiEcdsaWithdrawalRequest"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CustodyApiWithdrawalResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/assets:
get:
tags:
- asset-data
summary: Get Assets
description: Get supported assets.
operationId: getAssets
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/Asset"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/assets/{symbol}:
get:
tags:
- asset-data
summary: Get Asset by Symbol
description: Get Asset by Symbol
operationId: getAssetBySymbol
parameters:
- in: path
name: symbol
schema:
type: string
required: true
example: BTC
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Asset"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/vol-grids:
get:
tags:
- asset-data
summary: Get Vol Grids
description: Returns grids for **all** options-enabled underlyings.
operationId: getVolGrids
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/VolGridConfiguration"
"500":
description: Internal Server Error
security: []
/v1/assets/{symbol}/vol-grid:
get:
parameters:
- in: path
name: symbol
schema:
type: string
required: true
example: BTC
description: The underlying asset symbol (e.g. `BTC`, `ETH`)
tags:
- asset-data
summary: Get Vol Grid by Symbol
description: Returns the current active BPM (Bullish Portfolio Margin) vol grid configuration for the specified underlying asset.
operationId: getVolGridByAsset
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/VolGridConfiguration"
"400":
description: Invalid asset symbol
"404":
description: Vol grid config not found for assetSymbol
"500":
description: Internal Server Error
security: []
/v1/derivatives-positions:
get:
tags:
- derivatives
summary: Get Derivatives Positions
description: Get derivatives positions
operationId: getDerivativesPositions
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account. `tradingAccountId` is mandatory in the query for users with multiple trading accounts. For users with a single trading account, it can be automatically retrieved from the login.
schema:
$ref: "#/components/schemas/TradingAccountId"
required: false
- in: query
name: symbol
example: BTC-USDC-PERP
schema:
$ref: "#/components/schemas/MarketSymbol"
- in: query
name: marketType
description: Optional - Filter for results by expiry date
example: DATED_FUTURE
schema:
$ref: "#/components/schemas/MarketTypeAsString"
- in: query
name: optionType
description: Optional - Filter for results by option type
example: CALL
schema:
$ref: "#/components/schemas/OptionTypeAsString"
- in: query
name: sort
description: Optional - Sort results by Market Type or Option Type
schema:
$ref: "#/components/schemas/MarketTypeOrOptionTypeSortByAsString"
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/DerivativesPositionResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/history/derivatives-settlement:
get:
tags:
- history
summary: Get Historical Hourly Derivatives Settlement
description: |
Get historical derivatives settlement.
- [supports pagination](/rest/general/pagination)
- filtering on `settlementDatetime` requires additional keywords, [see filtering support](/rest/general/filtering)
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days. By default the results are returned and sorted in descending order if specific settlement datetime is not specified.
operationId: getDerivativesSettlementHistory
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account. `tradingAccountId` is mandatory in the query for users with multiple trading accounts. For users with a single trading account, it can be automatically retrieved from the login.
schema:
$ref: "#/components/schemas/TradingAccountId"
required: false
- in: query
name: symbol
example: BTC-USDC-PERP
schema:
$ref: "#/components/schemas/DatedFutureMarketSymbol"
required: false
- in: query
name: settlementDatetime[gte]
description: start timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
- in: query
name: settlementDatetime[lte]
description: end timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/DerivativesSettlementResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/history/transfer:
get:
tags:
- history
summary: Get Historical Account Transfer
description: |
Get historical transfers.
- [supports pagination](/rest/general/pagination)
- filtering on `createdAtDatetime` and `createdAtTimestamp` requires additional keywords, [see filtering support](/rest/general/filtering)
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
operationId: getTransferHistory
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account. `tradingAccountId` is mandatory in the query for users with multiple trading accounts. For users with a single trading account, it can be automatically retrieved from the login.
schema:
$ref: "#/components/schemas/TradingAccountId"
required: false
- in: query
name: status
description: Status of the transfer request. Defaults to `CLOSED`
schema:
type: string
example: CLOSED
default: CLOSED
- in: query
name: requestId
description: Unique identifier of the transfer request
schema:
type: string
example: "561287547935260672"
- in: query
name: assetSymbol
description: Asset symbol of the transfer request
schema:
$ref: "#/components/schemas/AssetSymbol"
- in: query
name: createdAtDatetime[gte]
description: start datetime of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
- in: query
name: createdAtDatetime[lte]
description: end datetime of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/SubAccountTransferResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/markets:
parameters:
- in: query
name: marketType
description: Market Types to filter markets against
schema:
$ref: "#/components/schemas/MarketTypeAsString"
required: false
- in: query
name: optionType
description: Option Type to filter markets against. If this is present, only Option Markets will be returned
schema:
$ref: "#/components/schemas/OptionTypeAsString"
required: false
get:
tags:
- market-data
summary: Get Markets
description: Get Markets.
operationId: getMarkets
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 10
items:
$ref: "#/components/schemas/Market"
"404":
description: Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/markets/{symbol}:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
get:
tags:
- market-data
summary: Get Market by Symbol
description: Get Market by Symbol.
operationId: getMarketBySymbol
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Market"
"404":
description: Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/history/markets:
get:
tags:
- market-data
summary: Get Historical Markets
description: |
Get a list of historical markets, including expired markets.
This endpoint returns simplified market information and supports filtering by market type and expiry status.
operationId: getHistoricalMarkets
parameters:
- in: query
name: marketType
description: Filter by market type (can be specified multiple times for multiple types)
schema:
type: array
items:
type: string
enum:
- SPOT
- PERPETUAL
- DATED_FUTURE
- OPTION
style: form
explode: true
required: false
- in: query
name: status
description: Filter by expiry status (can be specified multiple times for multiple statuses)
schema:
type: array
items:
type: string
enum:
- ACTIVE
- EXPIRED
- ALL
style: form
explode: true
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
type: object
properties:
symbol:
type: string
description: Market symbol
example: "BTC-USD-20241231-100000-C"
expiryDatetime:
type: string
description: Expiry datetime in ISO 8601 format (only for DATED_FUTURE and OPTION markets)
example: "2025-12-31T08:00:00.000Z"
status:
type: string
description: Market expiry status
example: "EXPIRED"
enum:
- ACTIVE
- EXPIRING
- EXPIRED
example:
- symbol: "BTC-USD"
status: "ACTIVE"
- symbol: "BTC-USD-20241231-100000-C"
expiryDatetime: "2024-12-31T08:00:00.000Z"
status: "EXPIRED"
- symbol: "ETH-USD-20241231"
expiryDatetime: "2024-12-31T08:00:00.000Z"
status: "EXPIRED"
"400":
description: Bad Request - Invalid query parameters
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/history/markets/{symbol}:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/OptionAndDatedFuturesMarketSymbol"
required: true
get:
tags:
- market-data
summary: Get Historical Market by Symbol
description: Get Historical Market by Symbol. This endpoint will return specified market even if it is expired. Only applicable for this is applicable only for `DATED_FUTURE` and `OPTION` markets.
operationId: getHistoricalMarketBySymbol
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Market"
"404":
description: Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/markets/{symbol}/orderbook/hybrid:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: symbol to get
tags:
- market-data
summary: Get Market Order Book
description: |
Get Order Book by Market Symbol
**Ratelimited:** `False`
operationId: getMarketOrderBook
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/OrderBook"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/markets/{symbol}/trades:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: symbol to get
tags:
- market-data
summary: Get Latest Market Trades
description: |
Get Market Trades by Market Symbol.
- return 100 most recent trades
- lookup from local cache
**Ratelimited:** `False`
operationId: getLatestMarketTrades
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 100
items:
$ref: "#/components/schemas/ObfuscatedTrade"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/index-prices:
get:
tags:
- index-price-data
summary: Get Index Prices
description: |
Retrieves the index price of all supported assets
operationId: getIndexPrices
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/IndexPrice"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/index-prices/{assetSymbol}:
parameters:
- in: path
name: assetSymbol
schema:
$ref: "#/components/schemas/AssetSymbol"
required: true
get:
tags:
- index-price-data
summary: Get Index Price by Asset Symbol
description: Retrieves the index price of a specified asset
operationId: getIndexPriceBySymbol
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/IndexPrice"
"404":
description: Not found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/history/markets/{symbol}/trades:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: symbol to get
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
tags:
- market-history-data
summary: Get Historical Market Trades
description: |
Get Historical Market Trades by Market Symbol. Supports querying of up to 7 days of data at a time.
- [supports pagination](/rest/general/pagination)
**Ratelimited:** `False`
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
operationId: getHistoricalMarketTrades
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/ObfuscatedTradeWithId"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/history/option-trades:
get:
parameters:
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: optionType
description: Specifies if it's a call (right to buy) or a put (right to sell)
schema:
$ref: "#/components/schemas/OptionType"
required: false
tags:
- market-history-data
summary: Get Historical Options Market Trades
description: |
Get Historical Options Market Trades by `optionType`. If `optionType` is not specified in request parameters, both CALL & PUT markets will be returned
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
- Only max 100 data will be returned during the window
- Default: If `createdAtDatetime` is omitted, the endpoint returns a rolling 7-day window of trade history, starting from the most recent trade across all options markets
operationId: getHistoricalOptionTrades
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 100
items:
$ref: "#/components/schemas/OptionTrade"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"400":
description: Bad Request
"500":
description: Internal Server Error
security: []
/v1/history/markets/{symbol}/funding-rate:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/PerpMarketSymbol"
required: true
description: symbol to get
- in: query
name: updatedAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
- in: query
name: updatedAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
tags:
- market-history-data
summary: Get Historical Funding Rate
description: |
Get historical hourly funding rate for the requested perpetual market
- [supports pagination](/rest/general/pagination)
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
operationId: getFundingRateHistory
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 100
items:
$ref: "#/components/schemas/FundingRateHistoryResponse"
"400":
description: Bad Request
"404":
description: Market Symbol Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/option-ladder:
get:
parameters:
- in: query
name: baseSymbol
schema:
$ref: "#/components/schemas/AssetSymbol"
required: true
description: symbol to get
- in: query
name: expiry
description: Optional - Filter results by expiry date in YYYYMMDD format (e.g. 20250520)
schema:
$ref: "#/components/schemas/OptionExpiryDate"
- in: query
name: type
description: Optional - Filter results by type (`CALL` or ` PUT`) of the option markets
schema:
$ref: "#/components/schemas/OptionType"
- in: query
name: sort
description: Optional - Sort results by Option Type or Expiry Datetime
schema:
$ref: "#/components/schemas/OptionTypeOrExpiryDatetimeSortAsString"
tags:
- derivatives-public
summary: Get Option Ladder by Base Symbol
description: |
Returns the available options contracts. This data helps traders quickly assess the available options and their respective prices, implied volatilities, and Greeks (such as delta, gamma, theta, and vega).
operationId: getOptionLadder
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/OptionLadderResponse"
"400":
description: Bad Request
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/option-ladder/{symbol}:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/OptionMarketSymbol"
required: true
description: symbol to get. Only option markets are supported.
tags:
- derivatives-public
summary: Get Option Ladder by Symbol
description: |
Returns the for a given `baseSymbol`, organized by strike prices and expiration dates. This data helps traders quickly assess the available options and their respective prices, implied volatilities, and Greeks (such as delta, gamma, theta, and vega).
operationId: getOptionLadderBySymbol
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/OptionLadderResponse"
"400":
description: Bad Request
"404":
description: Option Market Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/markets/{symbol}/tick:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: symbol to get. Only perpetual markets are supported.
tags:
- market-data
summary: Get Market Tick
description: |
Get Current Tick by Market Symbol.
- return top 100
**Ratelimited:** `False`
operationId: getMarketTick
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/Tick"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/markets/{symbol}/candle:
get:
tags:
- market-data
summary: Get Market Candle
description: |
Get Current OHLCV Candle by Market Symbol
- [supports pagination](/rest/general/pagination)
- filtering on `createdAtDatetime`, `createdAtTimestamp` requires additional keywords, [see filtering support](/rest/general/filtering)
**Ratelimited:** `False`
operationId: getMarketCandles
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
- in: query
name: createdAtDatetime[gte]
description: start timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
- in: query
name: createdAtDatetime[lte]
description: end timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
- in: query
name: timeBucket
schema:
$ref: "#/components/schemas/TimeBucket"
required: true
description: time bucket size
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 1
maxItems: 25
items:
$ref: "#/components/schemas/OHLCVCandle"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/history/borrow-interest:
get:
tags:
- history
summary: Get Historical Hourly Borrow Interest
description: |
Get Historical Hourly Borrow Interest. Each entry denotes the hourly quantities for the specific asset.
Total borrowed quantity is inclusive of interest. `interest = totalBorrowedQuantity - borrowedQuantity`
which denotes the interest charged in the particular hour for the asset.
- [supports pagination](/rest/general/pagination)
- filtering `createdAtDatetime`, `createdAtTimestamp` requires additional keywords, [see filtering support](/rest/general/filtering)
- On a single query request you can retrieve data over a 7 day window, with the data available for the last 90 days
**Ratelimited:** `True`
operationId: getBorrowInterestHistory
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account. `tradingAccountId` is mandatory in the query for users with multiple trading accounts. For users with a single trading account, it can be automatically retrieved from the login.
schema:
$ref: "#/components/schemas/TradingAccountId"
required: false
- in: query
name: assetSymbol
example: BTC
schema:
$ref: "#/components/schemas/AssetSymbol"
required: true
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/BorrowInterest"
"404":
description: Resource Not Found
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security:
- jwtTokenAuth: []
/v1/time:
get:
tags:
- general
summary: Get Exchange Time
description: Get Current Exchange Time
operationId: getExchangeTime
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/CurrentExchangeTimeResponse"
"429":
description: Too Many Requests
"500":
description: Internal Server Error
security: []
/v1/simulate-portfolio-margin:
post:
tags:
- portfolio-margin-simulator
summary: Simulate Portfolio Margin
description: |
Use Portfolio margin simulator to determine your margin requirements and risk levels based on your current portfolio balances.
You can also append position details on top of your portfolio specifics to see simulated results.
operationId: simulatePortfolioMargin
parameters:
- in: query
name: includeExisting
schema:
$ref: "#/components/schemas/Boolean"
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/PortfolioSimulationResponse"
"400":
description: Bad Request
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/PortfolioSimulationRequest"
examples:
SimulatePortfolioMarginExample:
value:
tradingAccountId: "111000000000001"
positions:
- symbol: "BTC"
quantity: "1.5"
- symbol: "ETH"
quantity: "10.0"
orders:
- symbol: "BTCUSDC"
quantity: "0.5"
limitPrice: "95000.0"
timeInForce: "GTX"
referencePrices:
- symbol: "BTC"
price: "100000.0"
- symbol: "ETH"
price: "3500.0"
priceVolOffsetParams:
cryptoPriceMultipliers:
BTC: 1.2
ETH: 0.9
globalCryptoPriceMultiplier: 1.1
volOffset: 0.05
security:
- jwtTokenAuth: []
/v1/bulk-simulate-portfolio-margin:
post:
tags:
- portfolio-margin-simulator
summary: Simulate Portfolio Margin in Bulk
description: |
Use Portfolio margin simulator to determine your margin requirements and risk levels based on your current portfolio balances.
You can also append position details on top of your portfolio specifics to see simulated results.
This endpoint supports running multiple simulations at the same time.
operationId: bulkSimulatePortfolioMargin
parameters:
- in: query
name: includeExisting
description: When true, includes existing portfolio positions in the simulation. Defaults to false
required: false
schema:
$ref: "#/components/schemas/Boolean"
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PortfolioSimulationResponse"
"400":
description: Bad Request
"401":
description: Not Authenticated
"403":
description: Access Forbidden
"429":
description: Too Many Requests
"500":
description: Internal Server Error
requestBody:
required: true
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/PortfolioSimulationRequest"
examples:
BulkSimulatePortfolioMarginExample:
value:
- tradingAccountId: "111000000000001"
positions:
- symbol: "BTC"
quantity: "1.5"
- symbol: "ETH"
quantity: "10.0"
orders:
- symbol: "BTCUSDC"
quantity: "0.5"
limitPrice: "95000.0"
timeInForce: "GTX"
referencePrices:
- symbol: "BTC"
price: "100000.0"
- symbol: "ETH"
price: "3500.0"
priceVolOffsetParams:
cryptoPriceMultipliers:
BTC: 1.2
ETH: 0.9
globalCryptoPriceMultiplier: 1.1
volOffset: 0.05
security:
- jwtTokenAuth: []
/v2/otc-trades:
post:
x-position: 1
summary: Create OTC Trade
operationId: createOtcTrade
description: |
Creates an OTC trade, requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field ordering
and addition of null fields in the request body. Prices do not require strict precision.
E.g. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
tags:
- otc
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
- $ref: "#/components/parameters/BX-REFERRER"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOtcTradeCommand"
responses:
"200":
description: |
Status OK. The create OTC trade command was successfully acknowledged. To check the current status of the
OTC trade, query [Get Trade by ID](/rest/api/get-otc-trade-by-id) using `otcTradeId` or `clientOtcTradeId` received in the response payload.
content:
application/json:
schema:
$ref: "#/components/schemas/CreateOtcTradeResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Unauthorized. Either API details are missing or invalid
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Forbidden- You do not have access to the requested resource
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
get:
x-position: 2
summary: Get OTC Trades
operationId: getOtcTrades
description: |
Get the otc trade list based on specified filters.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
- [supports pagination](/rest/general/pagination)
- supports filtering on `status`, `tradingAccountId`, `sharedMatchKey`, `clientOtcTradeId`, `createdAtDatetime`, `createdAtTimestamp`, `brokeredBy`
tags:
- otc
parameters:
- in: query
name: status
description: OTC trade status
schema:
$ref: "#/components/schemas/OtcTradeExternalStatus"
required: false
- in: query
name: tradingAccountId
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
- in: query
name: sharedMatchKey
schema:
$ref: "#/components/schemas/SharedMatchKey"
- in: query
name: clientOtcTradeId
schema:
$ref: "#/components/schemas/ClientOtcTradeId"
required: false
- in: query
name: brokeredBy
description: Originating broker short code
schema:
$ref: "#/components/schemas/IdbShortCode"
required: false
- in: query
name: createdAtDatetime[ gte ]
description: Start timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[ lte ]
description: End timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/OtcTradeView"
"400":
description: For example, sending a request with an invalid trading account
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Not Authenticated
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Access Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/otc-trades/{otcTradeId}:
parameters:
- in: path
name: otcTradeId
schema:
type: string
required: true
description: Id of the OTC Trade
get:
x-position: 3
summary: Get OTC Trade by ID
operationId: getOtcTradeById
description: Retrieve a specific otc trade using its unique identifier.
tags:
- otc
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/OtcTradeView"
"400":
description: For example, sending a request with an invalid trading account
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Not Authenticated
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Access Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"404":
description: The given otcTradeId does not exist
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/otc-trades/unconfirmed-trade:
get:
x-position: 4
summary: Get Unconfirmed OTC Trade
operationId: getUnconfirmedOtcTrade
description: Retrieve the unconfirmed trade details using shared match key.
tags:
- otc
parameters:
- in: query
name: tradingAccountId
description: Id of the trading account for accepting the unconfirmed trade
schema:
$ref: "#/components/schemas/TradingAccountId"
required: true
- in: query
name: sharedMatchKey
description: Provided by your counterparty to identify the trade
schema:
$ref: "#/components/schemas/SharedMatchKey"
required: true
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: "#/components/schemas/UnconfirmedOtcTradeView"
"400":
description: For example, querying a closed OTC trade
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Not Authenticated
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Access Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"404":
description: The unconfirmed OTC trade does not exist
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/otc-command#approve:
post:
x-position: 5
summary: Approve OTC Trade
operationId: otc-command-approve
description: |
Authorize an OTC trade previously submitted on your behalf by an inter-dealer broker.
Submits a command to the trading engine to approve an OTC trade. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body.
Command schemas and examples are provided below. Supported commands:
- V1ApproveOtcTrade
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
tags:
- otc
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
requestBody:
required: true
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V1ApproveOtcTrade: "#/components/schemas/ApproveOtcTradeCommand"
oneOf:
- $ref: "#/components/schemas/ApproveOtcTradeCommand"
examples:
ApproveOtcTrade:
$ref: "#/components/examples/ApproveOtcTradeCommand"
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/ApproveOtcTradeResponse"
examples:
ApproveOtcTradeResponse:
$ref: "#/components/examples/ApproveOtcTradeResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Unauthorized. Either API details are missing or invalid
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Forbidden- You do not have access to the requested resource
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/otc-command#cancel:
post:
x-position: 6
summary: Cancel OTC Trade
operationId: otc-command-cancel
description: |
Cancel a pending OTC trade or reject an OTC trade previously submitted on your behalf by an inter-dealer broker.
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body.
Command schemas and examples are provided below. Supported commands:
- V1CancelOtcTrade
- V1CancelAllOtcTrades
Requires
- [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
tags:
- otc
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
requestBody:
required: true
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V1CancelOtcTrade: "#/components/schemas/CancelOtcTradeCommand"
V1CancelAllOtcTrades: "#/components/schemas/CancelAllOtcTradesCommand"
oneOf:
- $ref: "#/components/schemas/CancelOtcTradeCommand"
- $ref: "#/components/schemas/CancelAllOtcTradesCommand"
examples:
CancelOtcTrade:
$ref: "#/components/examples/CancelOtcTradeCommand"
CancelAllOtcTrades:
$ref: "#/components/examples/CancelAllOtcTradesCommand"
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
anyOf:
- $ref: "#/components/schemas/CancelOtcTradeResponse"
- $ref: "#/components/schemas/CancelAllOtcTradesResponse"
examples:
CancelOtcTradeResponse:
$ref: "#/components/examples/CancelOtcTradeResponse"
CancelAllOtcTradeResponse:
$ref: "#/components/examples/CancelAllOtcTradesResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Unauthorized. Either API details are missing or invalid
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Forbidden- You do not have access to the requested resource
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/otc-trades/delegated-accounts:
get:
x-position: 7
summary: Get Delegated Trading Accounts
operationId: otc-get-delegated-accounts
description: |
Get details for all of your trading accounts that are delegated to inter-dealer brokers.
This is the client-side view of the broker relationships exposed to brokers by
[IDB Get Delegated Trading Accounts](/rest/api/idb-otc-get-delegated-accounts).
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
tags:
- otc
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/ClientDelegatedAccountView"
examples:
ClientDelegatedAccountView:
value:
- tradingAccountId: "111000000000001"
idbShortCode: "IDB_A"
tradingAccountNickname: "OTC Desk Primary"
approvalMethod: "APPROVAL_REQUIRED"
- tradingAccountId: "111000000000002"
idbShortCode: "IDB_B"
tradingAccountNickname: "OTC Desk Secondary"
approvalMethod: "STRAIGHT_THROUGH"
"401":
description: Not Authenticated
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Access Forbidden. Returned when an inter-dealer broker calls this client-only endpoint
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/idb/delegated-accounts:
get:
x-position: 1
summary: IDB Get Delegated Trading Accounts
operationId: idb-otc-get-delegated-accounts
description: |
Get details for all delegated trading accounts from the broker perspective.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
- [supports pagination](/rest/general/pagination)
tags:
- idb
parameters:
- in: query
name: tradingAccountId
description: Optional filter by a single delegated trading account
schema:
$ref: "#/components/schemas/TradingAccountId"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
items:
$ref: "#/components/schemas/IdbDelegatedAccountView"
examples:
IdbDelegatedAccountView:
value:
- institutionName: "Alpha Traders"
institutionRegistrationNumber: "87654321"
tradingAccountId: "111000000000001"
tradingAccountNickname: "Alpha Traders Primary"
approvalMethod: "APPROVAL_REQUIRED"
- institutionName: "Beta Traders"
tradingAccountId: "111000000000002"
tradingAccountNickname: "Beta Traders OTC"
approvalMethod: "STRAIGHT_THROUGH"
"401":
description: Not Authenticated
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Access Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/idb/otc-trades:
post:
x-position: 2
summary: IDB Create OTC Trade
operationId: idb-otc-create-trade
description: |
Enables authorized inter-dealer broker to book a dual-sided OTC trade on behalf of two clients.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body. Prices do not require strict precision.
Eg. for asset precision of 4 - `100`, `100.0`, `100.00`, `100.000` and `100.0000` are all accepted.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
tags:
- idb
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
requestBody:
required: true
content:
application/json:
schema:
$ref: "#/components/schemas/IdbCreateOtcTradeCommand"
responses:
"200":
description: |
Status OK. The IDB create OTC trade command was successfully acknowledged. To check the current status of the OTC trades, query [IDB Get OTC Trades](/rest/api/idb-otc-get-trades) using `sharedMatchKey` received in the response payload.
content:
application/json:
schema:
$ref: "#/components/schemas/IdbCreateOtcTradeResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Unauthorized. Either API details are missing or invalid
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Forbidden- You do not have access to the requested resource
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/idb/otc-trades#list:
get:
x-position: 3
summary: IDB Get OTC Trades
operationId: idb-otc-get-trades
description: |
Get the brokered OTC trade list initiated by the IDB based on specified filters.
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
- supports filtering on `status`, `tradingAccountId`, `sharedMatchKey`, `createdAtDatetime`, `createdAtTimestamp`
- [supports pagination](/rest/general/pagination)
tags:
- idb
parameters:
- in: query
name: status
description: OTC trade status
schema:
$ref: "#/components/schemas/OtcTradeExternalStatus"
required: false
- in: query
name: tradingAccountId
schema:
type: array
items:
$ref: "#/components/schemas/TradingAccountId"
style: form
explode: true
example:
- "111000000000001"
description: Allow filtering across multiple delegated trading accounts; if tradingAccountId is null or omitted, returns trades for all delegated accounts
required: false
- in: query
name: sharedMatchKey
schema:
$ref: "#/components/schemas/SharedMatchKey"
- in: query
name: "createdAtDatetime[ gte ]"
description: Start timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: "createdAtDatetime[ lte ]"
description: End timestamp of window, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/IdbOtcTradeView"
examples:
IdbOtcTradeView:
value:
- otcTradeId: "200000000000000098"
institutionName: "Alpha Traders"
tradingAccountId: "111000000000001"
tradingAccountNickname: "Alpha Traders Primary"
sharedMatchKey: "qt6mlga14z3k9e420y2qap5"
status: "REJECTED"
statusReason: "OTC trade has expired"
statusReasonCode: "9028"
createdAtDatetime: "2026-02-26T07:28:49.087Z"
createdAtTimestamp: "1772090929087"
expireDatetime: "2026-02-26T07:43:49.087Z"
expireTimestamp: "1772091829087"
remarks: "alpha first trade"
idbRemarks: "otc trades between Alpha and Beta"
trades:
- symbol: BTC-USDC-PERP
side: SELL
price: "98213.0000"
quantity: "1.50000000"
isTaker: true
brokeredBy: "IDB_A"
- otcTradeId: "200000000000000099"
institutionName: "Beta Traders"
tradingAccountId: "111000000000002"
tradingAccountNickname: "Beta Traders OTC"
sharedMatchKey: "qt6mlga14z3k9e420y2qap5"
status: "REJECTED"
statusReason: "OTC trade has expired"
statusReasonCode: "9028"
createdAtDatetime: "2026-02-26T07:28:49.087Z"
createdAtTimestamp: "1772090929087"
expireDatetime: "2026-02-26T07:43:49.087Z"
expireTimestamp: "1772091829087"
idbRemarks: "otc trades between Alpha and Beta"
trades:
- symbol: BTC-USDC-PERP
side: BUY
price: "98213.0000"
quantity: "1.50000000"
isTaker: false
brokeredBy: "IDB_A"
"400":
description: For example, sending a request with an invalid trading account
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Not Authenticated
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Access Forbidden
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/idb/otc-command#cancel:
post:
x-position: 4
summary: IDB Cancel OTC Trade
operationId: idb-otc-command-cancel
description: |
Cancel a pending OTC trade that was previously initiated by the IDB.
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body.
Command schemas and examples are provided below. Supported commands:
- V1IdbCancelOtcTrade
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
tags:
- idb
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
requestBody:
required: true
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V1IdbCancelOtcTrade: "#/components/schemas/IdbCancelOtcTradeCommand"
oneOf:
- $ref: "#/components/schemas/IdbCancelOtcTradeCommand"
examples:
IdbCancelOtcTrade:
$ref: "#/components/examples/IdbCancelOtcTradeCommand"
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/IdbCancelOtcTradeResponse"
examples:
IdbCancelOtcTradeResponse:
$ref: "#/components/examples/IdbCancelOtcTradeResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Unauthorized. Either API details are missing or invalid
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Forbidden- You do not have access to the requested resource
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v2/idb/otc-command#update-remarks:
post:
x-position: 5
summary: IDB Update Remarks
operationId: idb-otc-command-update-remarks
description: |
Update the IDB remarks of a previously initiated OTC trade.
Submits a command to the trading engine. A successful response indicates that the command entry was acknowledged
but does not indicate that the command was executed.
This endpoint uses the [signing format](/rest/authentication#signing-format) which does not require strict field
ordering and addition of null fields in the request body.
Command schemas and examples are provided below. Supported commands:
- V1IdbUpdateRemarks
- requires [bearer token](/rest/authentication#add-authenticated-request-header) in authorization header
tags:
- idb
parameters:
- $ref: "#/components/parameters/BX-SIGNATURE"
- $ref: "#/components/parameters/BX-TIMESTAMP"
- $ref: "#/components/parameters/BX-NONCE"
requestBody:
required: true
content:
application/json:
schema:
discriminator:
propertyName: commandType
mapping:
V1IdbUpdateRemarks: "#/components/schemas/IdbUpdateRemarksCommand"
oneOf:
- $ref: "#/components/schemas/IdbUpdateRemarksCommand"
examples:
IdbUpdateRemarks:
$ref: "#/components/examples/IdbUpdateRemarksCommand"
responses:
"200":
description: Status OK. This means a command was successfully acknowledged.
content:
application/json:
schema:
oneOf:
- $ref: "#/components/schemas/IdbUpdateRemarksResponse"
examples:
IdbUpdateRemarksResponse:
$ref: "#/components/examples/IdbUpdateRemarksResponse"
"400":
description: |
Bad Request
For example, sending a request with the `BX-SIGNATURE` header missing will result in the following response:
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"401":
description: Unauthorized. Either API details are missing or invalid
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"403":
description: Forbidden- You do not have access to the requested resource
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
"500":
description: Internal Server Error
content:
application/json:
schema:
$ref: "#/components/schemas/BadOtcTradeEntryResponse"
security:
- jwtTokenAuth: []
/v1/expiry-prices/{symbol}:
get:
summary: Get Expiry Prices
operationId: get-expiry-prices--symbol
description: Retrieves Expiry Price and Expiry Notional for respective Options and Dated Futures markets.
tags:
- derivatives-public
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/DerivativeMarketSymbol"
required: true
responses:
"200":
description: Retrieve expiry price and expiry notional for options and dated future.
content:
application/json:
schema:
$ref: "#/components/schemas/MarketExpiryPriceResponse"
"400":
description: Expiry price for market is not (yet) available
"500":
description: Internal Server Error
"404":
description: Invalid symbol provided
/v1/markets/{symbol}/auctions:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: market symbol, e.g. BTCUSDC
tags:
- auction-public
summary: Get Auction by Symbol
description: Get current auction information and phase for a symbol.
operationId: getAuctionBySymbol
responses:
"200":
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/Auction"
"400":
description: Bad Request
"404":
description: Symbol not found or auction not available
"500":
description: Internal Server Error
security: []
/v1/markets/{symbol}/auctions/noii:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: market symbol, e.g. BTCUSDC
tags:
- auction-public
summary: Get Auction Net Order Imbalance Indicator
description: |
Get NOII (Net Order Imbalance Indicator) snapshot. Available during Lockdown phase only.
Returns empty array in other phases.
operationId: getAuctionNoii
responses:
"200":
description: OK
content:
application/json:
schema:
type: object
properties:
data:
type: array
items:
$ref: "#/components/schemas/AuctionNoii"
"400":
description: Bad Request
"404":
description: Symbol not found or auction not available
"500":
description: Internal Server Error
security: []
/v1/history/markets/{symbol}/auctions:
get:
parameters:
- in: path
name: symbol
schema:
$ref: "#/components/schemas/MarketSymbol"
required: true
description: market symbol, e.g. BTCUSDC
- in: query
name: createdAtDatetime[gte]
description: start timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
- in: query
name: createdAtDatetime[lte]
description: end timestamp of period, ISO 8601 with millisecond as string
schema:
$ref: "#/components/schemas/DateTime"
required: false
tags:
- market-history-data
summary: Get Historical Auction Results
description: |
Get historical auction results for a symbol.
- [supports pagination](/rest/general/pagination)
- filtering on `createdAtDatetime` requires additional keywords, [see filtering support](/rest/general/filtering)
operationId: getHistoricalAuctionResults
responses:
"200":
description: OK
content:
application/json:
schema:
type: array
minItems: 0
maxItems: 25
items:
$ref: "#/components/schemas/AuctionResult"
"400":
description: Bad Request
"404":
description: Symbol not found
"500":
description: Internal Server Error
security: []
components:
securitySchemes:
jwtTokenAuth:
type: http
scheme: bearer
bearerFormat: JWT
parameters:
BX-SIGNATURE:
in: header
name: BX-SIGNATURE
description: signature obtained using the [signing format](/rest/authentication#signing-format)
required: true
schema:
type: string
BX-TIMESTAMP:
in: header
name: BX-TIMESTAMP
description: timestamp is the number of milliseconds since EPOCH
required: true
schema:
type: string
BX-NONCE:
in: header
name: BX-NONCE
description: nonce is a client side incremented unsigned 64 bit integer
required: true
schema:
type: string
BX-REFERRER:
in: header
name: BX-REFERRER
description: A numeric referrer id if applicable
required: false
schema:
type: string
BX-PUBLIC-KEY:
in: header
name: BX-PUBLIC-KEY
description: public key being used to generate the JWT
required: true
schema:
type: string
BX-NONCE-WINDOW-ENABLED:
in: header
name: BX-NONCE-WINDOW-ENABLED
description: |
string representation of a boolean value, [enables out-of-order order requests to be processed](/rest/order-processing-create-cancel-request-mechanism)
schema:
type: string
enum:
- "false"
- "true"
default: "false"
schemas:
Boolean:
type: boolean
format: true or false
example: true
MarketTypeOrOptionTypeSortByAsString:
type: string
description: Sorting parameter that can have the following string values `"marketType"`, `"optionType"`
enum:
- marketType
- optionType
example: optionType
OptionTypeOrExpiryDatetimeSortAsString:
type: string
description: Sorting parameter that can have the following string values `"optionType"`, `"expiryDatetime"`
enum:
- optionType
- expiryDatetime
example: optionType
MarketTypeAsString:
type: string
description: market type can have the following string values `"SPOT"`, `"PERPETUAL"`, `"DATED_FUTURE"`, `"OPTION"`
enum:
- SPOT
- PERPETUAL
- DATED_FUTURE
- OPTION
example: SPOT
OptionTypeAsString:
type: string
description: option type can have the following string values `"CALL"`, `"PUT"`
enum:
- CALL
- PUT
example: CALL
OrderTypeAsString:
type: string
description: order type can have the following string values `"LMT"`, `"MKT"`, `"STOP_LIMIT"`, `"POST_ONLY"`. `"MKT"` and `"STOP_LIMIT"` are not applicable for Options
example: "LMT"
OrderTypeAsStringV2:
type: string
description: order type can have the following string values `"LIMIT"`, `"MARKET"`, `"STOP_LIMIT"`, `"POST_ONLY"`. `"MARKET"` and `"STOP_LIMIT"` are not applicable for Options
example: "LIMIT"
OrderTypeAsStringAmend:
type: string
description: order type can have the following string values `"LIMIT"`, `"POST_ONLY"`
example: "LIMIT"
OrderSideAsString:
type: string
description: order side can have the following string values `"BUY"`, `"SELL"`
example: BUY
OrderTimeInForceAsString:
type: string
description: time in force can have the following string values `"GTC"`, `"FOK"`, `"IOC"`, `"GTX"` (Good Till Crossing - for auction orders), see [details](/rest/general/order-type)
example: "GTX"
OrderStatusAsString:
type: string
description: order status can have the following string values `"OPEN"`, `"CLOSED"`, `"CANCELLED"`, `"REJECTED"`
example: OPEN
TimeStampAsString:
type: string
format: string
example: "1621490985000"
description: unsigned 64 bit integer value which is the number of milliseconds since EPOCH expressed as string
OrderID:
type: string
example: "297735387747975680"
AMMInstructionID:
type: string
example: "297735387747975680"
RequestID:
type: string
example: "197735387747975680"
OrderHandle:
description: Unique numeric (i64) identifier generated on the client side expressed as a string value
type: string
example: "299834741023572480"
TradingAccountId:
description: unique trading account ID
type: string
example: "111000000000001"
MarketID:
type: string
example: "10000"
TradeID:
type: string
example: "100020000000000060"
AssetValue:
description: see [asset value](/rest/general/price-quantity-precision) format
type: string
example: "1.00000000"
UsdcValue:
description: see [asset value](/rest/general/price-quantity-precision) format
type: string
example: "1.0000"
UserId:
type: string
example: "12345"
description: Bullish user ID
TimeStampInSeconds:
type: integer
format: int64
example: 1621490985
description: number of seconds since EPOCH as integer
DateTime:
type: string
format: date-time
example: "2025-05-20T01:01:01.000Z"
description: ISO 8601 with millisecond as string
OptionExpiryDate:
type: string
example: "20250520"
description: Expiry date of the option market in YYYYMMDD format (e.g. 20250520)
TimeStamp:
type: string
format: int64
example: "1621490985000"
description: number of milliseconds since EPOCH as string
CustodyDestinationID:
type: string
example: "1560ec0b406c0d909bb9f5f827dd6aa14a1f638884f33a2a3134878102e78038"
description: destination id provided by bullish that uniquely identifies a whitelisted address or account
CustodyDestinationUserWalletType:
type: string
enum:
- HOSTED
- SELF_HOSTED
- UNKNOWN
description: The host type of the wallet. `HOSTED` wallet uses a custodial wallet service, `SELF_HOSTED` wallet is a non-custodial wallet.
CustodyDestinationSigned:
type: boolean
example: true
description: Whether this destination has been signed by the user. Some operations such as withdrawal requires the destination to be signed.
CustodyDestinationLocked:
type: boolean
example: true
description: Whether this destination is currently in a withdrawal lock period. Addresses are locked upon whitelisting for a 24-hour security period.
CustodyLockExpiryDateTime:
type: string
format: date-time
example: "2026-06-24T12:00:00Z"
description: ISO 8601 Zulu timestamp of when the withdrawal lock period expires. Applies only when `locked` is true.
CustodyDestinationVaspName:
type: string
example: Bullish
description: The name of the hosting VASP of the wallet. This is only applicable for `HOSTED` wallets.
CustodySelfHostedRequestedDepositAmount:
type: string
example: "12.3456"
description: User-requested amount for the deposit.
CustodySelfHostedVerificationAmount:
type: string
example: "0.0012"
description: Bullish specified additional small deposit amount to add to the `requestedDepositAmount` for wallet verification.
CustodySelfHostedDepositAddress:
type: string
example: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
description: The address of the Bullish trading account that the user should deposit to during a self hosted deposit attempt.
CustodySelfHostedDepositMemo:
type: string
example: MZAXEMRXA
description: The memo or destination tag of the Bullish trading account that the user should deposit to during a self hosted deposit attempt.
CustodySelfHostedTotalDepositAmount:
type: string
example: "12.3468"
description: The actual amount that the user should deposit for wallet verification. It is the sum of `requestedDepositAmount` and `verificationAmount`.
CustodySelfHostedVerificationStatus:
type: string
enum:
- VERIFIED
- PENDING_VERIFICATION
- VERIFICATION_EXPIRED
description: |
The status for the self-hosted wallet verification attempt.
- `VERIFIED` - Self-hosted wallet has been verified
- `PENDING_VERIFICATION` - pending verification via satoshi test
- `VERIFICATION_EXPIRED` - the verification has expired
NetworkID:
type: string
example: "ETH"
description: the network of the native coin or token, e.g. BTC, ETH, SOL
CustodyNetworkAddress:
type: string
example: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
description: an address on the given network
CustodySymbol:
type: string
example: "USDC"
description: symbol representing coin or token, e.g. USDC, BTC, ETH, SHIB
CustodyFiatSymbol:
type: string
example: "USD"
description: symbol representing fiat currency, e.g. USD, EUR
CustodyTransactionID:
type: string
example: "DB:9e6304a08c9cc2a33e6bc6429a088eae2a6b940c8e312aede3a3780257b9b979"
description: unique identifier for tracking a withdrawal during signing and in history
CustodyTransactionHistoryID:
type: string
example: "DB:9e6304a08c9cc2a33e6bc6429a088eae2a6b940c8e312aede3a3780257b9b979"
description: unique identifier for tracking a deposit or withdrawal
CustodyDirection:
type: string
example: "DEPOSIT"
description: direction of transaction from API user's perspective, 'DEPOSIT' or 'WITHDRAWAL'
CustodyBankName:
type: string
example: Silvergate Bank
description: name of bank
CustodyPhysicalBankAddress:
type: string
description: physical location of bank
example: 4250 Executive Square Suite 300 La Jolla, CA 92037
CustodyBankAccountNumber:
type: string
description: bank account number
example: "9873481227"
CustodyBankNetworkID:
type: string
description: the fiat network, e.g. SWIFT, ABA or SEPA
example: SWIFT
CustodyBankRoutingCode:
type: string
description: routing code of bank
example: "322286803"
CustodyQuantity:
type: string
description: total quantity of symbol to withdraw including fee in units of symbol, not in smaller denominations (e.g. BTC not Satoshi, ETH not Wei) - quantity received will have fee subtracted.
example: "100000.00"
CustodyWithdrawalFee:
type: string
example: "3.00"
description: withdrawal fee charged in units of symbol, not in smaller denominations (e.g. BTC not Satoshi, ETH not Wei)
CustodyDepositMemo:
type: string
example: "925891241"
description: memo or destination tag used during deposit to help identify account to credit funds to
CustodyMinimumDepositAmount:
type: string
example: "0.01"
description: the minimum deposit amount required for this symbol and network. Deposits under this amount will not be credited to your account
CustodyWithdrawalMemo:
type: string
example: MZAXEMRXA
description: memo or destination tag that will be used as a reference on transaction
CustodyWithdrawalLabel:
type: string
example: Our cold wallet
description: descriptive label of destination provided by user
CustodyTransactionStatus:
type: string
example: "COMPLETE"
description: one of 'PENDING', 'COMPLETE', 'CANCELLED', 'FAILED'
CustodyTransactionDetails:
type: object
properties:
address:
type: string
description: crypto network address
example: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
blockchainTxId:
type: string
description: transaction id on chain
example: "0xec557f2c7278d2dae2d98a27b9bd43f386789a4209090cbbd11595f1bed4a4c2"
swiftUetr:
type: string
description: unique end-to-end-transaction reference for swift transactions
example: b55aa5cd-baa2-4122-8c17-ae9b856ae36a
CustodyAvailableWithdrawalLimit:
type: string
example: "20000.0"
description: remaining limit on amount of coin or token that could be withdrawn now, in units of the symbol itself, not in smaller denominations (e.g. BTC not Satoshi, ETH not Wei)
Custody24HWithdrawalLimit:
type: string
example: "1000000.00"
description: limit on amount of coin or token that can be withdrawn over a 24 hour period, in units of the symbol itself, not in smaller denominations (e.g. BTC not Satoshi, ETH not Wei)
CustodyCreatedAtDateTime:
type: string
example: "2022-09-16T07:56:15.000Z"
description: time of initial transaction
PublicKey:
type: string
example: PUB_R1_6PTdfWbXvXWQduhcCiRooGHTVpriu15xMqfr7EDq6sWLDj7NjS
Signature:
type: string
example: SIG_R1_K35d5hSY5FbNoJwrCfmH6QvPG7m9XmhL2mgWYcSB7q2hKJ2mv39Luck9WBJroSB635ZAXhdg36TYG7QJX1fTidbsMvyE8N
AssetAccount:
type: object
required:
- tradingAccountId
- assetId
- assetSymbol
- availableQuantity
- borrowedQuantity
- lockedQuantity
- loanedQuantity
- updatedAtDatetime
- updatedAtTimestamp
properties:
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
assetId:
description: asset ID
allOf:
- $ref: "#/components/schemas/AssetID"
assetSymbol:
description: asset symbol
allOf:
- $ref: "#/components/schemas/AssetSymbol"
availableQuantity:
description: the assets that are available to use on the account, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
borrowedQuantity:
description: the assets on the account that are borrowed, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
lockedQuantity:
description: the assets on the account that are locked in orders, loans and AMM instructions, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
loanedQuantity:
description: the assets on the account that are being loaned, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
updatedAtDatetime:
description: denotes the time the AMM instruction was updated by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
updatedAtTimestamp:
description: denotes the time the AMM instruction was updated by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
CreateOrderCommandResponseV3:
type: object
required:
- message
- requestId
- orderId
properties:
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
orderId:
description: unique order ID
allOf:
- $ref: "#/components/schemas/OrderID"
clientOrderId:
description: unique numeric identifier generated on the client side expressed as a string value
type: string
example:
message: "Command acknowledged - CreateOrder"
requestId: "633910976353665024"
orderId: "633910775316480001"
clientOrderId: "1234567"
AmendOrderCommandResponseV1:
type: object
required:
- commandType
- message
- requestId
- orderId
properties:
commandType:
description: The command type
type: string
enum:
- V1AmendOrder
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
orderId:
description: unique order ID
allOf:
- $ref: "#/components/schemas/OrderID"
clientOrderId:
description: Will be updated as part of a successful order amendment
type: string
example:
commandType: "V1AmendOrder"
message: "Command acknowledged - AmendOrder"
requestId: "633910976353665024"
orderId: "633910775316480001"
clientOrderId: "1234567-1"
CancelOrderCommandResponseV3:
type: object
required:
- commandType
- message
- requestId
properties:
commandType:
description: The command type
type: string
enum:
- V3CancelOrder
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
orderId:
description: unique order ID
allOf:
- $ref: "#/components/schemas/OrderID"
clientOrderId:
description: unique numeric identifier generated on the client side expressed as a string value
type: string
example:
commandType: "V3CancelOrder"
message: "Command acknowledged - CancelOrder"
requestId: "633910976353665024"
orderId: "633910775316480001"
CancelAllOrdersCommandResponse:
type: object
required:
- commandType
- message
- requestId
properties:
commandType:
description: The command type
type: string
enum:
- V1CancelAllOrders
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
commandType: "V1CancelAllOrders"
message: "Command acknowledged - CancelAllOrders"
requestId: "633910976353665024"
DelayedCancelAllOrdersResponse:
type: object
required:
- commandType
- message
- requestId
properties:
commandType:
description: The command type
type: string
enum:
- V1DelayedCancelAllOrders
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
commandType: "V1DelayedCancelAllOrders"
message: "Command acknowledged - DelayedCancelAllOrders"
requestId: "633910976353665024"
UnsetDelayedCancelAllOrdersResponse:
type: object
required:
- commandType
- message
- requestId
properties:
commandType:
description: The command type
type: string
enum:
- V1UnsetDelayedCancelAllOrders
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
commandType: "V1UnsetDelayedCancelAllOrders"
message: "Command acknowledged - UnsetDelayedCancelAllOrders"
requestId: "633910976353665024"
CreateOrderCommandV3:
type: object
required:
- commandType
- symbol
- type
- side
- quantity
- timeInForce
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V3CreateOrder'
type: string
clientOrderId:
allOf:
- $ref: "#/components/schemas/OrderHandle"
symbol:
allOf:
- $ref: "#/components/schemas/MarketSymbol"
type:
allOf:
- $ref: "#/components/schemas/OrderTypeAsStringV2"
side:
allOf:
- $ref: "#/components/schemas/OrderSideAsString"
price:
description: price
allOf:
- $ref: "#/components/schemas/AssetValue"
stopPrice:
description: stop price
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
timeInForce:
allOf:
- $ref: "#/components/schemas/OrderTimeInForceAsString"
allowBorrow:
description: allows to borrow on the order
type: boolean
default: false
example: false
isMMP:
description: Indicate if the order is subject to `Market Maker Protection`. Only applicable to option markets
type: boolean
example: true
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
TradingAccountResponse:
type: object
required:
- isBorrowing
- isLending
- isPrimaryAccount
- maxInitialLeverage
- rateLimitToken
- tradingAccountDescription
- tradingAccountId
- tradingAccountName
- isDefaulted
- riskLimitUSD
- totalBorrowedUSD
- totalCollateralUSD
- initialMarginUSD
- warningMarginUSD
- liquidationMarginUSD
- fullLiquidationMarginUSD
- defaultedMarginUSD
- endCustomerId
- isConcentrationRiskEnabled
- liquidityAddonUSD
- marketRiskUSD
- marginProfile
- totalLiabilitiesUSD
- tradeFeeRate
properties:
isBorrowing:
description: whether the trading account is borrowing
type: string
example: "false"
isLending:
description: whether the trading account is lending
type: string
example: "false"
makerFee:
description: Deprecated and no longer accurate. See `tradeFeeRate` instead
type: string
example: "0.00000000"
deprecated: true
takerFee:
description: Deprecated and no longer accurate. See `tradeFeeRate` instead
type: string
example: "0.00020000"
deprecated: true
maxInitialLeverage:
description: max initial leverage
type: string
example: "1"
tradingAccountId:
description: id of the trading account
allOf:
- $ref: "#/components/schemas/TradingAccountId"
tradingAccountName:
description: name of the trading account
type: string
example: algo trading account
tradingAccountDescription:
description: description of the trading account
type: string
example: algo trading account with experimental strategy
isPrimaryAccount:
description: whether this is the primary account
type: string
example: "false"
rateLimitToken:
description: unique rate limit token of the trading account
type: string
example: 97d98951b12fb11f330dd9cb1b807d888c702679ee602edcf1ebc6bac17ad63d
isDefaulted:
description: whether the trading account is defaulted
type: string
example: "false"
tradeFeeRate:
description: Trade fees per `feeGroupId` for this trading account
type: array
minItems: 0
items:
allOf:
- $ref: "#/components/schemas/TradeFeeRate"
riskLimitUSD:
description: The maximum allowed borrowing for this trading account (in USD currency)
type: string
example: "10000.0000"
totalLiabilitiesUSD:
description: The The total liabilities for this trading account (in USD currency)
type: string
example: "14000.0000"
totalBorrowedUSD:
description: total borrowed across all assets in this trading account displayed in the reference asset in USD
type: string
example: "12000.0000"
totalCollateralUSD:
description: total collateral across all assets in this trading account displayed in the reference asset in USD
type: string
example: "13000.0000"
initialMarginUSD:
description: The minimum margin one must maintain in order to be able to purposefully increase risk
type: string
example: "0000.0000"
warningMarginUSD:
description: The minimum margin when the customer will receive warning via email/notifications over UI
type: string
example: "0000.0000"
liquidationMarginUSD:
description: The minimum value of margin one must maintain in order to avoid liquidation
type: string
example: "0000.0000"
fullLiquidationMarginUSD:
description: The value of margin when full liquidation occurs
type: string
example: "0000.0000"
defaultedMarginUSD:
description: The value of margin when this trading account will be moved into a Defaulted state
type: string
example: "0000.0000"
endCustomerId:
description: The end customer id used for self trade prevention (default is institution id, max 32 characters)
type: string
example: "PrimeBroker"
isConcentrationRiskEnabled:
description: whether concentration risk checks are enforced for an account when sending new orders. By default, concentration risk checks will apply to all accounts
type: string
example: "true"
liquidityAddonUSD:
description: expected market impact of unwinding the portfolio in the case of a liquidation event
type: string
example: "1000.0000"
marketRiskUSD:
description: the worst possible loss on the portfolio based on scenario analysis
type: string
example: "2000.0000"
marginProfile:
description: Contains the market risk multipliers applied to a trading account to derive the five individual Margin Requirement values
allOf:
- $ref: "#/components/schemas/MarginProfile"
MarginProfile:
properties:
initialMarketRiskMultiplierPct:
description: market risk multiplier used to calculate initial margin requirement of the account
type: string
example: "200.00"
warningMarketRiskMultiplierPct:
description: market risk multiplier used to calculate warning margin requirement of the account
type: string
example: "150.00"
liquidationMarketRiskMultiplierPct:
description: market risk multiplier used to calculate liquidation margin requirement of the account
type: string
example: "100.00"
fullLiquidationMarketRiskMultiplierPct:
description: market risk multiplier used to calculate full liquidation margin requirement of the account
type: string
example: "75.00"
defaultedMarketRiskMultiplierPct:
description: market risk multiplier used to calculate defaulted margin requirement of the account
type: string
example: "50.00"
CreateAMMInstructionCommandResponseV3:
type: object
required:
- message
- requestId
- instructionId
properties:
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
instructionId:
description: unique AMM instruction ID
allOf:
- $ref: "#/components/schemas/AMMInstructionID"
example:
message: "Command acknowledged - CreateAMMInstruction"
requestId: "633906221577404416"
instructionId: "633906221577404424"
TerminateAMMInstructionCommandResponseV3:
type: object
required:
- commandType
- message
- requestId
- instructionId
properties:
commandType:
description: The command type
type: string
enum:
- V3TerminateAMMInstruction
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
instructionId:
description: unique AMM instruction ID
allOf:
- $ref: "#/components/schemas/AMMInstructionID"
example:
commandType: "V3TerminateAMMInstruction"
message: "Command acknowledged - TerminateAMMInstruction"
requestId: "633906221577404416"
instructionId: "633906221577404424"
BadOrderEntryResponse:
type: object
required:
- message
- errorCode
- errorCodeName
properties:
message:
description: message
type: string
example: "Missing signature header"
errorCode:
description: unique error code
type: integer
example: 6029
errorCodeName:
description: unique error code name
type: string
example: "MISSING_SIGNATURE_HEADER"
CreateAMMInstructionCommandV3:
type: object
required:
- commandType
- symbol
- baseQuantity
- quoteQuantity
- upperBound
- lowerBound
- feeTierId
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V3CreateAMMInstruction'
type: string
symbol:
allOf:
- $ref: "#/components/schemas/MarketSymbol"
baseQuantity:
description: base quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteQuantity:
description: quote quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
upperBound:
type: string
description: upper bound of price range, in quote currency
lowerBound:
type: string
description: lower bound of price range, in quote currency
feeTierId:
allOf:
- $ref: "#/components/schemas/FeeTierId"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V3CreateAMMInstruction"
symbol:
$ref: "#/components/schemas/MarketSymbol/example"
baseQuantity: "0"
quoteQuantity: "50000.1"
upperBound: "25000"
lowerBound: "20000"
feeTierId:
$ref: "#/components/schemas/FeeTierId/example"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId/example"
CancelOrderCommandV3:
type: object
required:
- commandType
- tradingAccountId
- symbol
properties:
commandType:
description: The command type, it must be 'V3CancelOrder'
type: string
enum:
- V3CancelOrder
orderId:
description: Unique order ID, only orderId or clientOrderId can be used in the V3CancelOrder command
allOf:
- $ref: "#/components/schemas/OrderID"
clientOrderId:
description: Unique numeric (i64) identifier generated on the client side expressed as a string value, only orderId or clientOrderId can be used in the V3CancelOrder command
allOf:
- $ref: "#/components/schemas/OrderHandle"
symbol:
allOf:
- $ref: "#/components/schemas/MarketSymbol"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V3CancelOrder"
orderId: "297735387747975680"
symbol: "BTCUSDC"
tradingAccountId: "111000000000001"
AmendOrderCommandV1:
type: object
required:
- commandType
- symbol
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V1AmendOrder'
type: string
enum:
- V1AmendOrder
orderId:
description: unique order ID
allOf:
- $ref: "#/components/schemas/OrderID"
symbol:
allOf:
- $ref: "#/components/schemas/MarketSymbol"
type:
allOf:
- $ref: "#/components/schemas/OrderTypeAsStringAmend"
price:
description: price
allOf:
- $ref: "#/components/schemas/AssetValue"
clientOrderId:
description: unique numeric identifier generated on the client side expressed as a string value
type: string
quantity:
description: quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V1AmendOrder"
orderId: "297735387747975680"
symbol: "BTCUSDC"
type: "LIMIT"
price: "1.00000000"
clientOrderId: "633914459442118656"
quantity: "1.00000000"
tradingAccountId: "111000000000001"
TerminateAMMInstructionCommandV3:
type: object
required:
- commandType
- instructionId
- symbol
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V3TerminateAMMInstruction'
type: string
enum:
- V3TerminateAMMInstruction
instructionId:
description: unique AMM instruction ID
allOf:
- $ref: "#/components/schemas/AMMInstructionID"
symbol:
allOf:
- $ref: "#/components/schemas/MarketSymbol"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V3TerminateAMMInstruction"
instructionId: "297735387747975680"
symbol: "BTCUSDC"
tradingAccountId: "111000000000001"
SetMMPCommandV1:
type: object
required:
- commandType
- tradingAccountId
- underlyingAssetSymbol
- windowTimeInSeconds
- frozenTimeInSeconds
properties:
commandType:
description: the command type must be provided as 'V1SetMMP'
type: string
enum:
- V1SetMMP
example: "V1SetMMP"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
underlyingAssetSymbol:
allOf:
- $ref: "#/components/schemas/UnderlyingAssetSymbol"
windowTimeInSeconds:
type: string
description: time window during which the MMP checks are conducted. It helps in determining how frequently the system evaluates the market maker's activity against predefined thresholds. Value needs to be `> 0`. Maximum value is 600 seconds (10 minutes).
frozenTimeInSeconds:
type: string
description: the duration for which a market maker's trading activity is temporarily halted after a protective measure is triggered. Value needs to be `>= 0`. Maximum value is 3600 seconds (60 minutes).
quantityLimit:
type: string
description: cap on the total number of contracts that a market maker can trade within `windowTimeInSeconds`. This is direction(side) agnostic. Needs to be `> 0` if set.
example: "100"
deltaLimit:
type: string
description: net delta exposure that a market maker can accumulate within `windowTimeInSeconds`
example: "10"
example:
commandType: "V1SetMMP"
tradingAccountId: "123567443543"
underlyingAssetSymbol: "BTC"
windowTimeInSeconds: "10"
frozenTimeInSeconds: "5"
quantityLimit: "10"
deltaLimit: "1"
SetMMPCommandResponse:
type: object
required:
- message
- requestId
properties:
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
message: "Command acknowledged - SetMMPConfig"
requestId: "633910976353665025"
ResetMMPCommandV1:
type: object
required:
- commandType
- tradingAccountId
- underlyingAssetSymbol
properties:
commandType:
description: the command type must be provided as 'V1ResetMMP'
type: string
enum:
- V1ResetMMP
example: "V1ResetMMP"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
underlyingAssetSymbol:
allOf:
- $ref: "#/components/schemas/UnderlyingAssetSymbol"
example:
commandType: "V1ResetMMP"
tradingAccountId: "123567443543"
underlyingAssetSymbol: "BTC"
ResetMMPCommandResponse:
type: object
required:
- message
- requestId
properties:
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
message: "Command acknowledged - ResetMMPConfig"
requestId: "633910976353665026"
CancelAllOrdersCommand:
type: object
required:
- commandType
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V1CancelAllOrders'
type: string
enum:
- V1CancelAllOrders
tradingAccountId:
description: Unique trading account Id
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V1CancelAllOrders"
tradingAccountId: "111000000000001"
DelayedCancelAllOrdersCommand:
type: object
required:
- commandType
- delayBySeconds
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V1DelayedCancelAllOrders'
type: string
enum:
- V1DelayedCancelAllOrders
example: "V1DelayedCancelAllOrders"
cancelId:
allOf:
- $ref: "#/components/schemas/CancelId"
delayBySeconds:
description: "Delay of the cancel-all-order in seconds"
allOf:
- $ref: "#/components/schemas/DelayBySeconds"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V1DelayedCancelAllOrders"
delayBySeconds: "5"
tradingAccountId: "111000000000001"
UnsetDelayedCancelAllOrdersCommand:
type: object
required:
- commandType
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V1UnsetDelayedCancelAllOrders'
type: string
enum:
- V1UnsetDelayedCancelAllOrders
example: "V1UnsetDelayedCancelAllOrders"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V1UnsetDelayedCancelAllOrders"
tradingAccountId: "111000000000001"
JWT:
type: string
format: string
example: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJuYW1lIjoic2FuZGVlcCByYWtocmEifQ.wyVq6PlKaldWXtu-jz2hJCvkGl1lM2S7HUKCH8LnXp0"
description: JWT token
Authorizer:
type: string
format: string
example: "03E02367E8C900000500000000000000"
description: JWT authorizer you obtain along with the [JWT token](/rest/authentication#generate-a-jwt-token)
TradingAccountTransferResponse:
type: object
required:
- commandType
- message
- requestId
properties:
commandType:
description: The command type
type: string
enum:
- V2TransferAsset
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
commandType: "V2TransferAsset"
message: "Command acknowledged - TransferAsset"
requestId: "633909659774222336"
TransferAssetCommandV2:
type: object
required:
- commandType
- assetSymbol
- quantity
- fromTradingAccountId
- toTradingAccountId
properties:
commandType:
description: The command type, e.g. 'V2TransferAsset'
type: string
enum:
- V2TransferAsset
assetSymbol:
description: Symbol of the asset. i.e. currency
allOf:
- $ref: "#/components/schemas/AssetSymbol"
quantity:
description: |
Quantity of the asset. Can be representated with any number of trailing zeroes up to asset precision
(eg `100.1`, `100.10`, `100.100`, `100.1000` are valid for asset precision 4)
type: string
fromTradingAccountId:
description: Source of the asset transfer
allOf:
- $ref: "#/components/schemas/TradingAccountId"
toTradingAccountId:
description: Destination of the asset transfer
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V2TransferAsset"
assetSymbol:
$ref: "#/components/schemas/AssetSymbol/example"
quantity: "100.1"
fromTradingAccountId:
$ref: "#/components/schemas/TradingAccountId/example"
toTradingAccountId: "111000000000002"
CancelAllOrdersByMarketCommand:
type: object
required:
- commandType
- symbol
- tradingAccountId
properties:
commandType:
description: The command type, it must be 'V1CancelAllOrdersByMarket'
type: string
enum:
- V1CancelAllOrdersByMarket
symbol:
description: market symbol. E.g. `BTCUSDC`
allOf:
- $ref: "#/components/schemas/MarketSymbol"
tradingAccountId:
description: unique trading account Id
allOf:
- $ref: "#/components/schemas/TradingAccountId"
example:
commandType: "V1CancelAllOrdersByMarket"
symbol: "BTCUSDC"
tradingAccountId: "111000000000001"
CancelAllOrdersByMarketResponse:
type: object
required:
- commandType
- message
- requestId
properties:
commandType:
description: The command type
type: string
enum:
- V1CancelAllOrdersByMarket
message:
description: message
type: string
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
example:
commandType: "V1CancelAllOrdersByMarket"
message: "Command acknowledged - CancelAllOrdersByMarket"
requestId: "633914459442118656"
LoginRequest:
type: object
required:
- timestamp
- nonce
- authorizer
- command
properties:
publicKey:
allOf:
- $ref: "#/components/schemas/PublicKey"
signature:
allOf:
- $ref: "#/components/schemas/Signature"
loginPayload:
allOf:
- $ref: "#/components/schemas/LoginPayload"
LoginPayload:
type: object
required:
- userId
- nonce
- expirationTime
- biometricsUsed
- sessionKey
properties:
userId:
description: Bullish user ID corresponding to the metadata
allOf:
- $ref: "#/components/schemas/UserId"
nonce:
description: epoch timestamp in seconds; note this login API nonce has no connection to the orders API nonce
allOf:
- $ref: "#/components/schemas/TimeStampInSeconds"
expirationTime:
description: epoch timestamp in seconds that is 5 minutes in the future
allOf:
- $ref: "#/components/schemas/TimeStampInSeconds"
biometricsUsed:
description: biometrics flag. always `false`
type: boolean
example: false
sessionKey:
description: session key. always `null`
type: string
nullable: true
LoginResponse:
type: object
required:
- authorizer
- token
properties:
authorizer:
description: Authorizer
allOf:
- $ref: "#/components/schemas/Authorizer"
token:
description: JWT token
allOf:
- $ref: "#/components/schemas/JWT"
Order:
type: object
required:
- orderId
- clientOrderId
- symbol
- price
- stopPrice
- averageFillPrice
- allowBorrow
- quantity
- quantityFilled
- quoteAmount
- baseFee
- quoteFee
- isLiquidation
- side
- type
- timeInForce
- status
- statusReason
- statusReasonCode
- createdAtTimestamp
- createdAtDatetime
properties:
clientOrderId:
allOf:
- $ref: "#/components/schemas/OrderHandle"
orderId:
description: unique order ID
allOf:
- $ref: "#/components/schemas/OrderID"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
price:
description: price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
averageFillPrice:
description: average fill price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
stopPrice:
description: stop price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
allowBorrow:
description: indicates if the order was allowed to borrow (does not indicate that borrowing occurred)
type: boolean
example: false
quantity:
description: quantity, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quantityFilled:
description: quantity filled, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteAmount:
description: quote quantity deducted from asset account, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
baseFee:
description: base fee rate that will be charged upon trade execution, see [asset value](/rest/general/price-quantity-precision) format
example: "0.00100000"
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteFee:
description: quote fee rate that will be charged upon trade execution, see [asset value](/rest/general/price-quantity-precision) format
example: "0.0010"
allOf:
- $ref: "#/components/schemas/AssetValue"
borrowedBaseQuantity:
description: quantity borrowed, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
borrowedQuoteQuantity:
description: quantity borrowed, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
isLiquidation:
description: indicates if the order was executed as a liquidation order
type: boolean
example: false
side:
description: order side
allOf:
- $ref: "#/components/schemas/OrderSideAsString"
example: "BUY"
type:
description: order type
allOf:
- $ref: "#/components/schemas/OrderTypeAsString"
example: "LMT"
timeInForce:
description: time in force
allOf:
- $ref: "#/components/schemas/OrderTimeInForceAsString"
example: "GTC"
status:
description: order status
allOf:
- $ref: "#/components/schemas/OrderStatusAsString"
example: "OPEN"
statusReason:
description: status reason, describes why the order is in a specific state
type: string
example: "User cancelled"
statusReasonCode:
description: status reason code, see [details](/rest/general/error-rejection-codes)
type: string
example: "1002"
createdAtDatetime:
description: denotes the time the order was ACK'd by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the order was ACK'd by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
AMMInstruction:
type: object
required:
- apy
- baseCurrentQuantity
- baseFee
- baseInvestQuantity
- basePrice
- baseWithdrawQuantity
- createdAtDateTime
- createdAtTimestamp
- currentValue
- dislocationEnabled
- feeTierId
- impermanentLoss
- initialBasePrice
- initialQuotePrice
- initialValue
- liquidityId
- instructionId
- lowerBound
- price
- quoteFee
- quoteInvestQuantity
- quotePrice
- quoteWithdrawQuantity
- requestId
- staticSpreadFee
- status
- statusReason
- statusReasonCode
- symbol
- updatedAtDateTime
- updatedAtTimestamp
- upperBound
- yieldEarn
properties:
liquidityId:
description: unique AMM instruction ID
deprecated: true
allOf:
- $ref: "#/components/schemas/AMMInstructionID"
instructionId:
description: unique AMM instruction ID
allOf:
- $ref: "#/components/schemas/AMMInstructionID"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
baseFee:
description: base fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteFee:
description: quote fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
status:
description: order status
allOf:
- $ref: "#/components/schemas/OrderStatusAsString"
example: "OPEN"
statusReason:
description: status reason, describes why the order is in a specific state
type: string
example: "Ok"
statusReasonCode:
description: status reason code, see [details](/rest/general/error-rejection-codes)
type: integer
example: 1001
createdAtDatetime:
description: denotes the time the order was ACK'd by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the order was ACK'd by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
24HrApy:
type: string
description: APY of the last 24 Hours, only for AMM instructions with `OPEN` status
example: "2.3319"
24HrYieldEarn:
type: string
description: amount of money earned in USD from the last 24 Hours, only for AMM instructions with `OPEN` status
example: "0.00"
apy:
type: string
description: yield generated from the time AMM instruction was created, in annualised percentage
example: "0.0000"
baseCurrentQuantity:
type: string
description: amount of base asset this AMM instruction currently holds, only for AMM instruction with `OPEN` status
example: "0.00000000"
baseInvestQuantity:
type: string
description: initial base investment
example: "0.00000008"
basePrice:
type: string
description: current price of base asset
example: "345.6700"
baseWithdrawQuantity:
type: string
description: amount of base asset returned when AMM instruction is terminated
example: "0.00000010"
currentValue:
type: string
description: value of assets (base and quote) in USD amount that this AMM instruction currently holds
example: "0.0000"
dislocationEnabled:
description: dislocation enabled/disabled
type: boolean
example: false
feeTierId:
allOf:
- $ref: "#/components/schemas/FeeTierId"
finalValue:
type: string
description: value of assets (base and quote) in USD amount when AMM instruction was terminated, only for AMM instruction with `CLOSED` status
example: "0.0001"
impermanentLoss:
type: string
description: impermanent loss
example: "0.0000"
initialBasePrice:
type: string
description: price of base asset when AMM instruction was created
example: "100.0000"
initialQuotePrice:
type: string
description: price of quote asset when AMM instruction was created
example: "0.0100"
initialValue:
type: string
description: value of assets (base and quote) in USD amount when AMM instruction was created
example: "0.0000"
lowerBound:
type: string
description: lower bound of price range, in quote currency
example: "0.0013"
price:
type: string
description: current price of AMM, see [Get Tick By Symbol](/rest/api/get-market-tick)
example: "456.7800"
quoteCurrentQuantity:
type: string
description: amount of quote asset this AMM instruction currently holds, only for AMM instruction with `OPEN` status
example: "0.0000"
quoteInvestQuantity:
type: string
description: initial quote investment
example: "0.0009"
quotePrice:
type: string
description: current price of quote asset
example: "1.0000"
quoteWithdrawQuantity:
type: string
description: amount of quote asset returned when AMM instruction is terminated
example: "0.0011"
lastDistributedPrice:
type: string
nullable: true
description: (Perpetual market only) The price used at the time of settlement for AMM Instructions that can be used to determine mtmPnl and the actual Pnl
requestId:
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
staticSpreadFee:
type: string
description: static spread fee, see [Get Market By Symbol](/rest/api/get-market-by-symbol)
example: "0.00200000"
updatedAtDatetime:
description: denotes the time the AMM instruction was updated by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
updatedAtTimestamp:
description: denotes the time the AMM instruction was updated by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
upperBound:
type: string
description: upper bound of price range, in quote currency
example: "14000.0000"
yieldEarn:
type: string
description: amount of money earned in USD
example: "0.00"
ObfuscatedTradeWithId:
type: object
required:
- tradeId
- symbol
- price
- quantity
- side
- isTaker
- createdAtTimestamp
- createdAtDatetime
properties:
tradeId:
description: unique trade ID
allOf:
- $ref: "#/components/schemas/TradeID"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
price:
description: price
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
description: order side
allOf:
- $ref: "#/components/schemas/OrderSideAsString"
example: "BUY"
isTaker:
description: denotes whether this is a taker's trade
allOf:
- $ref: "#/components/schemas/Boolean"
createdAtDatetime:
description: denotes the time the trade was executed by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the trade was executed by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
auctionId:
description: unique Bullish auction identifier. Present only for auction trades
type: string
example: "397735387747975680"
ObfuscatedTrade:
type: object
required:
- tradeId
- symbol
- price
- quantity
- side
- isTaker
- createdAtTimestamp
- createdAtDatetime
properties:
tradeId:
description: unique trade ID
allOf:
- $ref: "#/components/schemas/TradeID"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
price:
description: price
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
description: order side
allOf:
- $ref: "#/components/schemas/OrderSideAsString"
example: "BUY"
isTaker:
description: denotes whether this is a taker's trade
allOf:
- $ref: "#/components/schemas/Boolean"
createdAtDatetime:
description: denotes the time the trade was executed by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the trade was executed by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
auctionId:
description: unique Bullish auction identifier. Present only for auction trades
type: string
example: "397735387747975680"
CustodyApiEcdsaWithdrawalCommand:
type: object
required:
- commandType
- destinationId
- symbol
- network
- quantity
properties:
commandType:
description: the command type, it must be 'V1Withdrawal'
type: string
example: "V1Withdrawal"
destinationId:
allOf:
- $ref: "#/components/schemas/CustodyDestinationID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
quantity:
example: "100000.000001"
allOf:
- $ref: "#/components/schemas/CustodyQuantity"
CustodyApiEcdsaWithdrawalRequest:
type: object
required:
- timestamp
- nonce
- authorizer
- command
properties:
timestamp:
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
nonce:
type: string
description: a UUID withdrawal nonce to protect against replay attacks
example: "1628376611"
authorizer:
description: JWT authorizer you obtain along with the [JWT token](/rest/authentication#generate-a-jwt-token)
allOf:
- $ref: "#/components/schemas/Authorizer"
command:
description: withdrawal command
allOf:
- $ref: "#/components/schemas/CustodyApiEcdsaWithdrawalCommand"
CustodyApiWithdrawalResponse:
type: object
properties:
statusReason:
description: status reason, describes why withdrawal challenge is in a specific state
type: string
example: Withdrawal accepted
statusReasonCode:
description: status reason code, see [details](/rest/general/error-rejection-codes)
type: integer
example: 1001
custodyTransactionId:
allOf:
- $ref: "#/components/schemas/CustodyTransactionID"
CustodyHistory:
type: object
properties:
custodyTransactionId:
allOf:
- $ref: "#/components/schemas/CustodyTransactionHistoryID"
direction:
allOf:
- $ref: "#/components/schemas/CustodyDirection"
quantity:
allOf:
- $ref: "#/components/schemas/CustodyQuantity"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
fee:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalFee"
memo:
allOf:
- $ref: "#/components/schemas/CustodyDepositMemo"
createdAtDateTime:
allOf:
- $ref: "#/components/schemas/CustodyCreatedAtDateTime"
status:
allOf:
- $ref: "#/components/schemas/CustodyTransactionStatus"
transactionDetails:
allOf:
- $ref: "#/components/schemas/CustodyTransactionDetails"
CustodyCryptoDepositInstructions:
type: object
required:
- network
- symbol
- address
properties:
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
memo:
allOf:
- $ref: "#/components/schemas/CustodyDepositMemo"
address:
allOf:
- $ref: "#/components/schemas/CustodyNetworkAddress"
minimumDepositAmount:
allOf:
- $ref: "#/components/schemas/CustodyMinimumDepositAmount"
example:
network: "ETH"
symbol: "USDC"
address: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
minimumDepositAmount: "0.01"
CustodyCryptoWithdrawalInstructions:
type: object
required:
- network
- symbol
- address
- fee
- label
- destinationId
- userWalletType
- signed
properties:
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
address:
allOf:
- $ref: "#/components/schemas/CustodyNetworkAddress"
fee:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalFee"
memo:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalMemo"
label:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalLabel"
destinationId:
allOf:
- $ref: "#/components/schemas/CustodyDestinationID"
vaspName:
allOf:
- $ref: "#/components/schemas/CustodyDestinationVaspName"
userWalletType:
allOf:
- $ref: "#/components/schemas/CustodyDestinationUserWalletType"
signed:
allOf:
- $ref: "#/components/schemas/CustodyDestinationSigned"
locked:
allOf:
- $ref: "#/components/schemas/CustodyDestinationLocked"
lockExpiryDateTime:
allOf:
- $ref: "#/components/schemas/CustodyLockExpiryDateTime"
example:
network: "ETH"
symbol: "USDC"
address: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
fee: "3.00"
label: "Our cold wallet"
destinationId: "1560ec0b406c0d909bb9f5f827dd6aa14a1f638884f33a2a3134878102e78038"
minimumWithdrawalAmount: "0.01"
vaspName: "Bullish"
userWalletType: "HOSTED"
signed: true
locked: true
lockExpiryDateTime: "2026-06-24T12:00:00Z"
CustodySelfHostedInitiateRequest:
type: object
required:
- network
- symbol
- address
- label
- requestedDepositAmount
properties:
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
address:
allOf:
- $ref: "#/components/schemas/CustodyNetworkAddress"
memo:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalMemo"
label:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalLabel"
requestedDepositAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedRequestedDepositAmount"
example:
network: "ETH"
symbol: "USDC"
address: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
label: "Our cold wallet"
requestedDepositAmount: "12.3456"
CustodySelfHostedInitiateResponse:
type: object
properties:
destinationId:
allOf:
- $ref: "#/components/schemas/CustodyDestinationID"
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
depositAddress:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedDepositAddress"
depositMemo:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedDepositMemo"
requestedDepositAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedRequestedDepositAmount"
verificationAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedVerificationAmount"
totalDepositAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedTotalDepositAmount"
verificationExpiryTime:
allOf:
- $ref: "#/components/schemas/DateTime"
example:
destinationId: "1560ec0b406c0d909bb9f5f827dd6aa14a1f638884f33a2a3134878102e78038"
network: "ETH"
symbol: "USDC"
depositAddress: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
requestedDepositAmount: "12.3456"
verificationAmount: "0.0012"
totalDepositAmount: "12.3468"
verificationExpiryTime: "2025-05-20T01:01:01.000Z"
CustodyGetSelfHostedVerificationResponse:
type: object
required:
- destinationId
- network
- symbol
- address
- verificationStatus
- requestedDepositAmount
- verificationAmount
- totalDepositAmount
- verificationExpiryTime
properties:
destinationId:
allOf:
- $ref: "#/components/schemas/CustodyDestinationID"
network:
allOf:
- $ref: "#/components/schemas/NetworkID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
address:
allOf:
- $ref: "#/components/schemas/CustodyNetworkAddress"
memo:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalMemo"
verificationStatus:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedVerificationStatus"
requestedDepositAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedRequestedDepositAmount"
verificationAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedVerificationAmount"
totalDepositAmount:
allOf:
- $ref: "#/components/schemas/CustodySelfHostedTotalDepositAmount"
verificationExpiryTime:
allOf:
- $ref: "#/components/schemas/DateTime"
example:
destinationId: "1560ec0b406c0d909bb9f5f827dd6aa14a1f638884f33a2a3134878102e78038"
network: "ETH"
symbol: "USDC"
address: "0xb0a64d976972d87b0783eeb1ff88306cd1891f02"
verificationStatus: "VERIFIED"
requestedDepositAmount: "12.3456"
verificationAmount: "0.0012"
totalDepositAmount: "12.3468"
verificationExpiryTime: "2025-05-20T01:01:01.000Z"
CustodyBankDetails:
type: object
properties:
name:
allOf:
- $ref: "#/components/schemas/CustodyBankName"
physicalAddress:
allOf:
- $ref: "#/components/schemas/CustodyPhysicalBankAddress"
routingCode:
allOf:
- $ref: "#/components/schemas/CustodyBankRoutingCode"
CustodyBankIntermediateDetails:
type: object
properties:
name:
example: "Middle Bank"
allOf:
- $ref: "#/components/schemas/CustodyBankName"
physicalAddress:
example: "523 Exchange Square, Canary Wharf, E14 2WA"
allOf:
- $ref: "#/components/schemas/CustodyPhysicalBankAddress"
routingCode:
example: "321176234"
allOf:
- $ref: "#/components/schemas/CustodyBankRoutingCode"
CustodyFiatDepositInstructions:
type: object
properties:
network:
type: string
example: SWIFT
description: the network that the account belongs to and the transaction will be performed on SWIFT, ABA or SEPA
symbol:
type: string
example: USD
description: the currency associated with the account, e.g. USD, EUR
accountNumber:
allOf:
- $ref: "#/components/schemas/CustodyBankAccountNumber"
example: "5090022533"
description: the Bullish account number, varies for SWIFT/ABA and SEPA
name:
type: string
example: Bullish (GI) Limited
description: official Bullish account holder name
physicalAddress:
type: string
example: 26/F, The Centrium, 60 Wyndham Street, Central, Hong Kong
description: bullish entity's physical address for the bank account
memo:
type: string
example: 8VZPKSGPA
description: client specific reference to identify which account desposits should be allocated to on the exhange
bank:
allOf:
- $ref: "#/components/schemas/CustodyBankDetails"
CustodyFiatWithdrawalInstructions:
type: object
properties:
destinationId:
allOf:
- $ref: "#/components/schemas/CustodyDestinationID"
accountNumber:
allOf:
- $ref: "#/components/schemas/CustodyBankAccountNumber"
network:
allOf:
- $ref: "#/components/schemas/CustodyBankNetworkID"
symbol:
allOf:
- $ref: "#/components/schemas/CustodyFiatSymbol"
name:
allOf:
- $ref: "#/components/schemas/CustodyBankName"
physicalAddress:
allOf:
- $ref: "#/components/schemas/CustodyPhysicalBankAddress"
fee:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalFee"
memo:
allOf:
- $ref: "#/components/schemas/CustodyWithdrawalMemo"
bank:
allOf:
- $ref: "#/components/schemas/CustodyBankDetails"
intermediaryBank:
allOf:
- $ref: "#/components/schemas/CustodyBankIntermediateDetails"
CustodyLimits:
type: object
properties:
symbol:
allOf:
- $ref: "#/components/schemas/CustodySymbol"
available:
allOf:
- $ref: "#/components/schemas/CustodyAvailableWithdrawalLimit"
twentyFourHour:
allOf:
- $ref: "#/components/schemas/Custody24HWithdrawalLimit"
Trade:
type: object
required:
- tradeId
- orderId
- clientOrderId
- symbol
- price
- quantity
- quoteAmount
- baseFee
- quoteFee
- side
- isTaker
- tradeRebateAmount
- tradeRebateAssetSymbol
- otcMatchId
- otcTradeId
- clientOtcTradeId
- createdAtTimestamp
- createdAtDatetime
properties:
tradeId:
description: unique trade ID
allOf:
- $ref: "#/components/schemas/TradeID"
orderId:
description: unique order ID
allOf:
- $ref: "#/components/schemas/OrderID"
clientOrderId:
description: unique numeric (i64) identifier generated on the client side
allOf:
- $ref: "#/components/schemas/OrderHandle"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
price:
description: price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteAmount:
description: quote quantity deducted from asset account, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
baseFee:
description: base fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteFee:
description: quote fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
description: order side
allOf:
- $ref: "#/components/schemas/OrderSideAsString"
example: "BUY"
isTaker:
description: denotes whether this is a taker's trade
allOf:
- $ref: "#/components/schemas/Boolean"
tradeRebateAmount:
description: amount of rebate that is credited to the user as part of the trade.
allOf:
- $ref: "#/components/schemas/AssetValue"
tradeRebateAssetSymbol:
description: the symbol of the asset in which the rebate is paid
allOf:
- $ref: "#/components/schemas/QuoteAssetSymbol"
otcMatchId:
description: unique OTC match ID.
allOf:
- $ref: "#/components/schemas/OtcMatchId"
otcTradeId:
description: unique Bullish OTC trade ID
allOf:
- $ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
description: unique Client OTC trade ID
allOf:
- $ref: "#/components/schemas/ClientOtcTradeId"
createdAtDatetime:
description: denotes the time the trade was executed by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the trade was executed by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
OptionTrade:
type: object
required:
- symbol
- tradeId
- price
- quantity
- side
- isTaker
- createdAtTimestamp
- createdAtDatetime
- optionType
- otcTradeId
properties:
symbol:
description: option market symbol
allOf:
- $ref: "#/components/schemas/OptionMarketSymbol"
tradeId:
description: unique trade ID
allOf:
- $ref: "#/components/schemas/TradeID"
price:
description: price
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
description: order side
allOf:
- $ref: "#/components/schemas/OrderSideAsString"
example: "BUY"
isTaker:
description: denotes whether this is a taker's trade
allOf:
- $ref: "#/components/schemas/Boolean"
createdAtDatetime:
description: denotes the time the trade was executed by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the trade was executed by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
optionType:
description: Specifies if it's a call (right to buy) or a put (right to sell)
allOf:
- $ref: "#/components/schemas/OptionType"
otcTradeId:
description: unique Bullish OTC trade ID
allOf:
- $ref: "#/components/schemas/OtcTradeId"
Tick:
allOf:
- type: object
required:
- createdAtDatetime
- createdAtTimestamp
- high
- low
- bestBid
- bidVolume
- bestAsk
- askVolume
- vwap
- open
- close
- last
- change
- percentage
- average
- baseVolume
- quoteVolume
- bancorPrice
- lastTradeDatetime
- lastTradeTimestamp
- lastTradeQuantity
- ammData
properties:
createdAtDatetime:
description: denotes the time of the current tick on the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time of the current tick on the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
high:
description: highest price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
low:
description: lowest price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
bestBid:
description: current best bid (buy) price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
bidIVPercentage:
description: Implied volatility of the best bid price
type: string
example: "99.0"
bidVolume:
description: current best bid (buy) quantity (may be missing or undefined), see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
bestAsk:
description: current best ask (sell) price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
askIVPercentage:
description: Implied volatility of the best ask price
type: string
example: "99.0"
askVolume:
description: current best ask (sell) quantity (may be missing or undefined), see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
vwap:
description: volume weighed average price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
open:
description: opening price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
close:
description: price of last trade (closing price for current period), see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
last:
description: price of last trade (closing price for current period), see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
change:
description: absolute change, `last - open`, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
percentage:
description: relative change, `(change/open) * 100`, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
average:
description: average price, `(last + open) / 2`, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
baseVolume:
description: volume of base asset traded for last 24 hours, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteVolume:
description: volume of quote asset traded for last 24 hours, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
bancorPrice:
description: current price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
markPrice:
description: mark price represents the fair value of a contract at the current time.
type: string
example: "19999.00"
fundingRate:
description: funding rate is used to calculate funding, which measures the relative difference between the index price and mark price.
type: string
example: "0.01"
openInterest:
description: open interest is the total quantity of open long positions and short positions, see [asset value](/rest/general/price-quantity-precision) format (only applies to derivatives market)
type: string
example: "100000.32452"
lastTradeDatetime:
description: time of the last trade on this symbol, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
lastTradeTimestamp:
description: time of the last trade on this symbol
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
lastTradeQuantity:
description: quantity of the last trade on this symbol, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
ammData:
description: AMM data of all available fee tiers. Not applicable for `Option` markets
type: array
minItems: 0
items:
allOf:
- $ref: "#/components/schemas/AmmData"
- $ref: "#/components/schemas/OptionGreeks"
AmmData:
type: object
description: AMM data
required:
- feeTierId
- bidSpreadFee
- askSpreadFee
- currentPrice
properties:
feeTierId:
allOf:
- $ref: "#/components/schemas/FeeTierId"
bidSpreadFee:
description: bid spread fee
type: string
example: "0.00040000"
askSpreadFee:
description: ask spread fee
type: string
example: "0.00040000"
currentPrice:
description: current AMM price
type: string
example: "16856.0000"
MarketSymbol:
type: string
description: market symbol. E.g. `BTCUSDC`
example: "BTCUSDC"
DerivativeMarketSymbol:
type: string
description: market symbol. E.g. `BTC-USDC-20250919-90000-C` for OPTION markets and `BTC-USDC-20250919` for DATED FUTURE markets.
example: "BTC-USDC-20250919-90000-C"
DatedFutureMarketSymbol:
type: string
description: market symbol. E.g. `BTC-USDC-PERP` for PERPETUAL and `BTC-USDC-20241201` for DATED FUTURE markets.
example: "BTC-USDC-20241201"
OptionMarketSymbol:
type: string
description: market symbol. E.g. `BTC-USDC-20241004-70000-C` for OPTION markets.
example: "BTC-USDC-20241004-70000-C"
OptionAndDatedFuturesMarketSymbol:
type: string
description: market symbol. E.g. `BTC-USDC-20241004-70000-C` for OPTION markets and `BTC-USDC-20241201` for DATED FUTURE markets.
example: "BTC-USDC-20241004-70000-C"
PerpMarketSymbol:
type: string
description: market symbol. E.g. `BTC-USDC-PERP` for PERPETUAL market
example: "BTC-USDC-PERP"
FeeTier:
type: object
description: unique fee tier
required:
- feeTierId
- staticSpreadFee
- isDislocationEnabled
properties:
feeTierId:
allOf:
- $ref: "#/components/schemas/FeeTierId"
staticSpreadFee:
description: static spread fee
type: string
example: "0.00040000"
isDislocationEnabled:
description: dislocation enabled/disabled
type: boolean
example: true
FeeTierId:
type: string
description: unique fee tier ID, see [Get Market By Symbol](/rest/api/get-market-by-symbol)
example: "1"
InstrumentId:
type: string
description: custody identifier for instrument
example: "BTC"
AssetSymbol:
type: string
description: asset symbol as denoted in the world
example: "BTC"
UnderlyingAssetSymbol:
type: string
description: the underlying asset symbol that is configured for MMP checks
example: "BTC"
QuoteAssetSymbol:
type: string
description: asset symbol as denoted in the world
example: "USDC"
AssetName:
type: string
description: asset name
example: "Bitcoin"
AssetID:
type: string
description: unique asset ID
example: "1"
CollateralBand:
type: object
properties:
collateralPercentage:
description: collateral percentage applied to the asset for this band - a value of 90.00 indicates 90% of the asset is eligible to be used as collateral
type: string
example: "95.00"
bandLimitUSD:
description: upper limit in USD for this band
type: string
example: "1000000.0000"
UnderlyingAsset:
type: object
properties:
symbol:
description: underlying asset symbol
type: string
example: "BTC"
assetId:
description: underlying asset ID
type: string
example: "1"
bpmMinReturnStart:
description: start of the 1/1000 biggest downward price movement of an underlying asset over 6 hours
type: string
example: "40.0000"
bpmMinReturnEnd:
description: end of the 1/1000 biggest downward price movement of an underlying asset over 6 hours
type: string
example: "20.0000"
bpmMaxReturnStart:
description: start of the 1/1000 biggest upward price movement of an underlying asset over 6 hours
type: string
example: "30.0000"
bpmMaxReturnEnd:
description: end of the 1/1000 biggest upward price movement of an underlying asset over 6 hours
type: string
example: "50.0000"
marketRiskFloorPctStart:
description: the percentage range of risk reduction allowed for a portfolio
type: string
example: "1.00"
marketRiskFloorPctEnd:
description: the percentage range of risk reduction allowed for a portfolio
type: string
example: "5.00"
bpmTransitionDateTimeStart:
description: the start datetime which the values linearly transition from `bpmMinReturnStart` to `bpmMinReturnEnd` for an underlying asset
type: string
example: "2024-08-02T12:00:00.000Z"
bpmTransitionDateTimeEnd:
description: the end datetime which the values linearly transition from `bpmMinReturnStart` to `bpmMinReturnEnd` for an underlying asset
type: string
example: "2024-08-02T18:00:00.000Z"
VolGridConfiguration:
type: object
properties:
assetId:
description: underlying asset ID
type: string
example: "1"
assetSymbol:
description: underlying asset symbol
type: string
example: "BTC"
effectiveFromDatetime:
description: ISO 8601 datetime of when this vol grid configuration became effective
type: string
format: date-time
example: "2026-05-29T08:00:00.000Z"
volGrid:
description: list of vol grid rows, one per days-to-expiry bucket
type: array
items:
$ref: "#/components/schemas/VolGridData"
example:
- timeToExpiryDays: 0
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.083929"
skewMin: "-0.103593"
- timeToExpiryDays: 1
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.083929"
skewMin: "-0.103593"
- timeToExpiryDays: 7
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.063888"
skewMin: "-0.073318"
- timeToExpiryDays: 14
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.043847"
skewMin: "-0.043043"
- timeToExpiryDays: 30
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.034441"
skewMin: "-0.034124"
- timeToExpiryDays: 60
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.024271"
skewMin: "-0.02397"
- timeToExpiryDays: 90
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.024142"
skewMin: "-0.024381"
- timeToExpiryDays: 180
atmMax: "0.100754"
atmMin: "-0.078081"
skewMax: "0.017566"
skewMin: "-0.017433"
VolGridData:
type: object
properties:
timeToExpiryDays:
description: days-to-expiry bucket this row applies to. supported buckets — [0, 1, 7, 14, 30, 60, 90, 180]
type: integer
example: 0
atmMax:
description: max upward ATM IV shift applied in BPM stress. supported range — [0, 1]
type: string
example: "0.100754"
atmMin:
description: max downward ATM IV shift. supported range — [-1, 0]
type: string
example: "-0.078081"
skewMax:
description: max upward skew shift. supported range — [0, 1]
type: string
example: "0.083929"
skewMin:
description: max downward skew shift. supported range [-1, 0]
type: string
example: "-0.103593"
PriceQuantityTuple:
type: object
properties:
price:
allOf:
- $ref: "#/components/schemas/AssetValue"
priceLevelQuantity:
allOf:
- $ref: "#/components/schemas/AssetValue"
OrderBook:
type: object
required:
- bids
- asks
- datetime
- timestamp
- sequenceNumber
properties:
bids:
description: bids
type: array
minItems: 0
maxItems: 10
items:
allOf:
- $ref: "#/components/schemas/PriceQuantityTuple"
asks:
description: asks
type: array
minItems: 0
maxItems: 10
items:
allOf:
- $ref: "#/components/schemas/PriceQuantityTuple"
datetime:
description: date and time of order book snapshot, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
timestamp:
description: timestamp of order book snapshot
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
sequenceNumber:
description: an incremented unique identifier of the order book snapshot
type: integer
example: 999
IndexPrice:
type: object
required:
- assetSymbol
- price
- updatedAtDatetime
- updatedAtTimestamp
properties:
assetSymbol:
description: Asset symbol
allOf:
- $ref: "#/components/schemas/AssetSymbol"
price:
description: Asset price in USD
example: "66100.0000"
type: string
updatedAtDatetime:
description: Date and time when the index price is updated
allOf:
- $ref: "#/components/schemas/DateTime"
updatedAtTimestamp:
description: Timestamp when the index price is updated
allOf:
- $ref: "#/components/schemas/TimeStamp"
Market:
type: object
required:
- marketId
- symbol
- quoteAssetId
- baseAssetId
- quoteSymbol
- baseSymbol
- quotePrecision
- basePrecision
- pricePrecision
- quantityPrecision
- costPrecision
- priceBuffer
- minQuantityLimit
- maxQuantityLimit
- timeZone
- tickSize
- liquidityTickSize
- liquidityPrecision
- feeGroupId
- roundingCorrectionFactor
- makerMinLiquidityAddition
- spotTradingEnabled
- marginTradingEnabled
- marketEnabled
- createOrderEnabled
- cancelOrderEnabled
- liquidityInvestEnabled
- liquidityWithdrawEnabled
- feeTiers
- marketType
- openInterestUSD
- concentrationRiskThresholdUSD
- concentrationRiskPercentage
- expiryDatetime
properties:
marketId:
description: unique market ID
allOf:
- $ref: "#/components/schemas/MarketID"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/OptionMarketSymbol"
baseSymbol:
description: base asset symbol (only applies to spot market)
allOf:
- $ref: "#/components/schemas/AssetSymbol"
underlyingBaseSymbol:
description: underlying base asset symbol (only applies to derivative market)
example:
allOf:
- $ref: "#/components/schemas/AssetSymbol"
quoteSymbol:
description: quote asset symbol (only applies to spot market)
allOf:
- $ref: "#/components/schemas/AssetSymbol"
underlyingQuoteSymbol:
description: underlying quote asset symbol (only applies to derivative market)
example:
allOf:
- $ref: "#/components/schemas/AssetSymbol"
quoteAssetId:
description: quote asset id
allOf:
- $ref: "#/components/schemas/AssetID"
baseAssetId:
description: base asset id
allOf:
- $ref: "#/components/schemas/AssetID"
quotePrecision:
description: quote precision
type: integer
example: 4
basePrecision:
description: base precision
type: integer
example: 8
pricePrecision:
description: number of decimal digits 'after the dot' for price
type: integer
example: 8
quantityPrecision:
description: number of decimal digits 'after the dot' for quantity
type: integer
example: 8
costPrecision:
description: number of decimal digits 'after the dot' for cost, `price * quantity`
type: integer
example: 8
priceBuffer:
description: buffer range of limit price from the last traded price. Not applicable for `Option` markets
type: string
example: "0.3"
minQuantityLimit:
description: order quantity should be > min, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
maxQuantityLimit:
description: order quantity should be < max, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
timeZone:
description: time zone
type: string
example: Etc/UTC
tickSize:
description: tick size, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
liquidityTickSize:
description: liquidity tick size. Not applicable for `Option` markets
type: string
example: "100.0000"
liquidityPrecision:
description: liquidity precision. Not applicable for `Option` markets
type: integer
example: 4
roundingCorrectionFactor:
description: rounding correction factor for market
type: string
example: "0.00000001"
makerMinLiquidityAddition:
description: minimum amount required to invest liquidity to market. Not applicable for `Option` markets
type: string
example: "5000"
orderTypes:
type: array
items:
allOf:
- $ref: "#/components/schemas/OrderTypeAsString"
spotTradingEnabled:
description: spot trading enabled (only applies for Spot markets)
type: boolean
example: true
marginTradingEnabled:
description: margin trading enabled (only applies for Spot markets)
type: boolean
example: true
marketEnabled:
description: market enabled
type: boolean
example: true
createOrderEnabled:
description: able to create order
type: boolean
example: true
amendOrderEnabled:
description: able to amend order
type: boolean
example: true
deprecated: true
cancelOrderEnabled:
description: able to cancel order
type: boolean
example: true
liquidityInvestEnabled:
description: able to invest liquidity to market. Not applicable for `Option` markets
type: boolean
example: true
liquidityWithdrawEnabled:
description: able to withdraw liquidity from market. Not applicable for `Option` markets
type: boolean
example: true
feeGroupId:
description: Identifier to the trade fee assigned to this market. Used with `tradeFeeRate` at [Get Trading Account](/rest/api/get-trading-account-by-id)
type: integer
example: 1
feeTiers:
description: all available fee tiers. Not applicable for `Option` markets
type: array
minItems: 0
items:
allOf:
- $ref: "#/components/schemas/FeeTier"
marketType:
description: market type, e.g. "SPOT" for market like "BTCUSD", "PERPETUAL" for market like "BTC-USDC-PERP", "DATED_FUTURE" for market like "BTC-USDC-20250901", "OPTION" for market like "BTC-USDC-20250901-90000-C"
allOf:
- $ref: "#/components/schemas/MarketTypeAsString"
contractMultiplier:
description: contract multiplier. (only applies to perpetual market)
type: integer
example: null
settlementAssetSymbol:
description: settlement asset symbol. (only applies to perpetual market)
type: string
example: null
openInterestUSD:
description: cumulative notional value of all open interest for a specific derivative contract on the exchange.
type: string
example: null
concentrationRiskThresholdUSD:
description: open interest notional of an account for a specific derivative contract.
type: string
example: null
concentrationRiskPercentage:
description: percentage of the total open interest for a specific derivative contract.
type: string
example: null
expiryDatetime:
description: denotes the time when the market expires in ISO 8601 with millisecond format as string
type: string
example: 2024-10-04T08:00:00.000Z
optionStrikePrice:
description: The price at which the option can be exercised upon expiry.
type: string
example: "70000.0000"
optionType:
description: Specifies if it's a call (right to buy) or a put (right to sell)
allOf:
- $ref: "#/components/schemas/OptionType"
premiumCapRatio:
description: A cap that is set on the underlying asset's movement as part of the premium that limits the option buyer's profit.
type: string
example: "0.10"
auctionEnabled:
description: whether auction is enabled for this market
type: boolean
example: true
auctionPriceCollar:
description: auction clearing price range from Index Price, expressed as a decimal ratio
type: string
example: "0.05"
Auction:
type: object
properties:
auctionId:
description: unique auction identifier
type: string
example: "397735387747975680"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
phase:
description: "current auction phase: COOLING, ACCUMULATION, LOCKDOWN, CROSS"
type: string
enum:
- COOLING
- ACCUMULATION
- LOCKDOWN
- CROSS
example: ACCUMULATION
startTime:
description: accumulation start time, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
lockdownTime:
description: lockdown start time, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
scheduledCrossTime:
description: scheduled cross time, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createAuctionOrderEnabled:
description: whether new auction orders can be created. Defaults true after auction starts (post-cooling)
type: boolean
example: true
amendAuctionOrderEnabled:
description: whether auction orders can be amended. Defaults true after auction starts; auto-switches to false during lockdown
type: boolean
example: true
cancelAuctionOrderEnabled:
description: whether auction orders can be cancelled. Defaults true after auction starts; auto-switches to false during lockdown
type: boolean
example: true
createdAt:
description: auction creation time, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
updatedAt:
description: auction last update time, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
AuctionNoii:
type: object
properties:
auctionId:
description: auction identifier
type: string
example: "397735387747975680"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
timestamp:
description: data timestamp, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
farPrice:
description: indicative clearing price (auction orders only)
allOf:
- $ref: "#/components/schemas/AssetValue"
referencePrice:
description: "Last Trade Price on Regular Continuous Orderbook; if Last Trade Price is not available, then Index Price"
allOf:
- $ref: "#/components/schemas/AssetValue"
imbalanceDirection:
description: "imbalance direction: BUY, SELL, or NONE"
type: string
enum:
- BUY
- SELL
- NONE
example: BUY
imbalanceQuantity:
description: unmatched quantity at farPrice
allOf:
- $ref: "#/components/schemas/AssetValue"
pairedQuantity:
description: predicted matched volume
allOf:
- $ref: "#/components/schemas/AssetValue"
AuctionResult:
type: object
properties:
auctionId:
description: auction identifier
type: string
example: "397735387747975680"
symbol:
description: market symbol
allOf:
- $ref: "#/components/schemas/MarketSymbol"
crossTime:
description: actual cross time, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
clearingPrice:
description: final clearing price
allOf:
- $ref: "#/components/schemas/AssetValue"
referencePrice:
description: "Last Trade Price on Regular Continuous Orderbook; if Last Trade Price is not available, then Index Price"
allOf:
- $ref: "#/components/schemas/AssetValue"
pairedQuantity:
description: total matched volume
allOf:
- $ref: "#/components/schemas/AssetValue"
imbalanceDirection:
description: "final imbalance direction: BUY, SELL, or NONE"
type: string
enum:
- BUY
- SELL
- NONE
example: NONE
imbalanceQuantity:
description: final imbalance quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
createdAtDatetime:
description: denotes the time the auction cross was executed, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
Asset:
type: object
required:
- assetId
- symbol
- name
- precision
- minBalanceInterest
- minFee
- apr
- collateralRating
- maxBorrow
- totalOfferedLoanQuantity
- loanBorrowedQuantity
- collateralBands
- underlyingAsset
properties:
assetId:
description: unique asset ID
allOf:
- $ref: "#/components/schemas/AssetID"
symbol:
description: asset symbol
allOf:
- $ref: "#/components/schemas/AssetSymbol"
name:
description: asset name
allOf:
- $ref: "#/components/schemas/AssetName"
precision:
description: number of decimal digits 'after the dot' for asset amount
type: string
example: "8"
minBalanceInterest:
allOf:
- $ref: "#/components/schemas/AssetValue"
minFee:
description: minimum fee
allOf:
- $ref: "#/components/schemas/AssetValue"
apr:
description: annualized percentage rate
type: string
example: "12.50"
collateralRating:
deprecated: true
description: collateral rating applied to this asset, a value of 100.00 indicates 100%. `Deprecated in favour of collateral bands`
type: string
example: "95.00"
maxBorrow:
description: maximum quantity that can be borrowed for this asset
type: string
example: "10.00000000"
totalOfferedLoanQuantity:
description: quantity of an asset that is across all loan offers on the exchange
type: string
example: "5.00000000"
loanBorrowedQuantity:
description: amount of loans that is currently being borrowed for the asset
type: string
example: "3.00000000"
collateralBands:
description: list of collateral bands for the asset. A collateral band holds the upper limit of the USD notional and the corresponding collateral percentage which applies to it. An asset's collateral value will be capped by the highest limit of the collateral bands, any remaining amount greater than this limit will have a collateral percentage of 0. If an asset has an empty list of CollateralBands, this signifies that the asset has a collateralValue of 0.
type: array
items:
allOf:
- $ref: "#/components/schemas/CollateralBand"
underlyingAsset:
description: underlying asset for the asset.
allOf:
- $ref: "#/components/schemas/UnderlyingAsset"
OHLCVCandle:
type: object
properties:
open:
description: see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
high:
description: see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
low:
description: see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
close:
description: see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
volume:
description: see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
createdAtTimestamp:
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
createdAtDatetime:
description: date and time of the candle, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
publishedAtTimestamp:
description: date and time of the candle getting published, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
BorrowInterest:
type: object
required:
- assetId
- assetSymbol
- borrowedQuantity
- totalBorrowedQuantity
- createdAtDatetime
- createdAtTimestamp
properties:
assetId:
description: unique asset ID
allOf:
- $ref: "#/components/schemas/AssetID"
assetSymbol:
description: asset symbol
allOf:
- $ref: "#/components/schemas/AssetSymbol"
borrowedQuantity:
description: the principal borrowed quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
totalBorrowedQuantity:
description: the sum of the principal borrowed quantity and the interest charged
allOf:
- $ref: "#/components/schemas/AssetValue"
createdAtDatetime:
description: denotes the hour in which the principal quantity was borrowed or when the interest was charged, ISO 8601 with millisecond as string
type: string
format: date-time
example: "2020-08-21T08:00:00.000Z"
createdAtTimestamp:
description: denotes the hour in which the principal quantity was borrowed or when the interest was charged
type: string
format: string
example: "1621490985000"
CurrentExchangeTimeResponse:
type: object
required:
- timestamp
- datetime
properties:
timestamp:
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
datetime:
description: ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
Nonce:
type: object
required:
- upperBound
- lowerBound
properties:
lowerBound:
description: lower bound of nonce range
type: integer
example: 8455
upperBound:
description: upper bound of nonce range
type: integer
example: 9455
OptionType:
description: Type of Option market
example: CALL
type: string
enum:
- CALL
- PUT
OrderSide:
type: string
example: BUY
enum:
- BUY
- SELL
TimeBucket:
type: string
example: 1m
enum:
- 1m
- 5m
- 30m
- 1h
- 6h
- 12h
- 1d
OrderStatus:
type: string
example: OPEN
enum:
- OPEN
- CLOSED
- CANCELLED
- REJECTED
AMMInstructionStatus:
type: string
example: OPEN
enum:
- OPEN
- CLOSED
DelayBySeconds:
description: Delay the cancel-all-orders request by (seconds) as a timeout mechanism
type: string
enum:
- "5"
- "10"
- "15"
- "20"
- "25"
- "30"
- "40"
- "50"
- "60"
example: "5"
CancelId:
description: Unique id for this cancel request which is an unsigned 64 bit integer expressed as string
type: string
example: "123456789"
DerivativesPositionResponse:
description: Derivatives Position of one market for the trading account
type: object
properties:
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
symbol:
example: "BTC-USDC-PERP"
allOf:
- $ref: "#/components/schemas/MarketSymbol"
side:
allOf:
- $ref: "#/components/schemas/OrderSide"
quantity:
description: Current size of the position [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
notional:
description: Notional value of the current position, calculated using the mark price
allOf:
- $ref: "#/components/schemas/UsdcValue"
entryNotional:
description: Notional value of the position, using the average entry price
allOf:
- $ref: "#/components/schemas/UsdcValue"
mtmPnl:
description: Sum of all mark-to-market profits and losses plus profits and losses realised from trading, accumulated since the last settlement
allOf:
- $ref: "#/components/schemas/UsdcValue"
reportedMtmPnl:
description: The profit/losses from the net price change since the last time the absolute quantity decreased. It is updated with every mark to market and is not updated during settlement or a position size increase
allOf:
- $ref: "#/components/schemas/UsdcValue"
reportedFundingPnl:
description: Sum of all funding payments received since the position was opened. This is updated every time funding is paid.
allOf:
- $ref: "#/components/schemas/UsdcValue"
realizedPnl:
description: Total profits realized since the trading account first opened this position. This is only updated every time a position's absolute quantity (aka size) is reduced.
allOf:
- $ref: "#/components/schemas/UsdcValue"
settlementAssetSymbol:
description: Settlement Asset Symbol
type: string
example: "USDC"
createdAtDatetime:
description: Denotes the time the position was created by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: Denotes the time the position was created by the exchange, number of milliseconds since EPOCH
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
updatedAtDatetime:
description: Denotes the time the position was updated by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
updatedAtTimestamp:
description: Denotes the time the position was updated by the exchange, number of milliseconds since EPOCH
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
greeks:
description: Position greeks
allOf:
- $ref: "#/components/schemas/PositionGreeks"
DerivativesSettlementResponse:
description: Derivatives Settlement of one market for the trading account
type: object
properties:
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
symbol:
example: "BTC-USDC-PERP"
allOf:
- $ref: "#/components/schemas/DatedFutureMarketSymbol"
side:
allOf:
- $ref: "#/components/schemas/OrderSide"
settlementQuantity:
description: position size at the time of the settlement
allOf:
- $ref: "#/components/schemas/AssetValue"
deltaTradingQuantity:
description: the change in the position size from the account's trading activities
allOf:
- $ref: "#/components/schemas/AssetValue"
mtmPnl:
description: mark to market profit (losses) accumulated since the last settlement
allOf:
- $ref: "#/components/schemas/UsdcValue"
fundingPnl:
description: funding profits (losses) accumulated since the last settlement. Applicable for perpetuals only.
allOf:
- $ref: "#/components/schemas/UsdcValue"
eventType:
description: derivatives position update event types
type: string
example: "settlementUpdate"
settlementMarkPrice:
description: market price at which the position was settled for this past cycle
allOf:
- $ref: "#/components/schemas/UsdcValue"
settlementIndexPrice:
description: index price at which the position was settled for this past cycle
allOf:
- $ref: "#/components/schemas/UsdcValue"
settlementFundingRate:
description: funding rate at which the position was settled for this past cycle. Applicable for perpetuals only.
type: string
example: "10.0"
settlementDatetime:
description: Denotes the time the position was settled by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
settlementTimestamp:
description: Denotes the time the position was settled by the exchange, number of milliseconds since EPOCH
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
SubAccountTransferResponse:
description: Get account transfer history
type: object
properties:
requestId:
description: unique identifier of the transfer request
type: string
example: "1"
toTradingAccountId:
description: recipient's trading account
allOf:
- $ref: "#/components/schemas/TradingAccountId"
fromTradingAccountId:
description: sender's trading account
type: string
example: "121000000000001"
assetSymbol:
description: asset currency of the transfer
allOf:
- $ref: "#/components/schemas/AssetSymbol"
quantity:
description: transfer quantity
allOf:
- $ref: "#/components/schemas/AssetValue"
status:
description: transfer status [CLOSED/OPEN/REJECTED]
type: string
example: "CLOSED"
statusReasonCode:
description: status reason code
type: string
example: "6002"
statusReason:
description: readable status reason
type: string
example: "Executed"
createdAtTimestamp:
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
createdAtDatetime:
allOf:
- $ref: "#/components/schemas/DateTime"
SimulationPosition:
type: object
required:
- symbol
- quantity
properties:
symbol:
description: asset or market symbol. E.g. `USDC` for asset and `BTCUSDC` for market
type: string
example: "BTC-USDC-PERP"
quantity:
description: size of the position
type: string
example: "1.0"
SimulationOrder:
type: object
required:
- symbol
- quantity
properties:
symbol:
allOf:
- $ref: "#/components/schemas/MarketSymbol"
quantity:
description: quantity placed for order
type: string
example: "1.0"
limitPrice:
description: limit price for order
type: string
example: "10000.0"
timeInForce:
allOf:
- $ref: "#/components/schemas/OrderTimeInForceAsString"
ReferencePrice:
type: object
properties:
symbol:
description: asset or market symbol. E.g. `USDC` for asset and `BTCUSDC` for market
type: string
example: "BTC"
price:
description: reference price for asset or market
type: string
example: "12000.0"
TradeFeeRate:
type: object
required:
- feeGroupId
- makerFee
- takerFee
- makerOtcFee
- takerOtcFee
- brokerFee
properties:
feeGroupId:
type: integer
description: Identifier for this particular fee tier
example: 1
makerFee:
type: string
description: Maker Fee in decimal value
example: "0.00005000"
takerFee:
type: string
description: Taker Fee in decimal value
example: "0.00005000"
makerOtcFee:
type: string
description: OTC Maker Fee in decimal value
example: "0.00005000"
takerOtcFee:
type: string
description: OTC Taker Fee in decimal value
example: "0.00005000"
brokerFee:
type: string
description: Fee charged for brokered OTC trade in decimal value
example: "0.00005000"
auctionFee:
type: string
description: Fee charged for auction trade in decimal value
example: "0.00005000"
PriceVolOffsetParams:
type: object
description: Parameters for adjusting prices and volatility in portfolio simulation
properties:
cryptoPriceMultipliers:
type: object
description: Symbol-specific price multipliers. When specified for a symbol, overrides the global multiplier
additionalProperties:
type: number
format: double
example:
BTC: 1.2
ETH: 0.9
globalCryptoPriceMultiplier:
type: number
format: double
description: Global price multiplier applied to all crypto assets (except stablecoins and symbols with explicit multipliers)
default: 1.0
example: 1.1
volOffset:
type: number
format: double
description: Offset to add to implied volatility for options pricing. Can be positive or negative
default: 0.0
example: 0.05
PortfolioSimulationRequest:
type: object
required:
- tradingAccountId
properties:
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
positions:
type: array
description: portfolio position to be used in simulation
items:
allOf:
- $ref: "#/components/schemas/SimulationPosition"
orders:
type: array
description: pending orders to be used in simulation
items:
allOf:
- $ref: "#/components/schemas/SimulationOrder"
referencePrices:
type: array
description: reference price to be used in simulation
items:
allOf:
- $ref: "#/components/schemas/ReferencePrice"
priceVolOffsetParams:
description: optional parameters for price and volatility adjustments in simulation
allOf:
- $ref: "#/components/schemas/PriceVolOffsetParams"
OptionLadderResponse:
description: Option Ladder Response
type: object
properties:
symbol:
description: Symbol of the option market. For example `BTC-USDC-20241004-70000-C`
allOf:
- $ref: "#/components/schemas/OptionMarketSymbol"
baseSymbol:
description: Base symbol of the option market. For `BTC-USDC-20241004-70000-C`, it will be `BTC`
allOf:
- $ref: "#/components/schemas/AssetSymbol"
settlementAssetSymbol:
description: Asset used for Mark To Market settlement
allOf:
- $ref: "#/components/schemas/QuoteAssetSymbol"
bidQuantity:
description: Quantity of `bid`
type: string
example: "0.0"
askQuantity:
description: Quantity of `ask`
type: string
example: "0.0"
bidIVPercentage:
description: Implied volatility of the best bid price
type: string
example: "99.0"
askIVPercentage:
description: Implied volatility of the best ask price
type: string
example: "99.0"
bid:
description: Bid price in the order book
type: string
example: "90000.0000"
ask:
description: Ask price in the order book
type: string
example: "90000.0000"
underlyingPrice:
description: Index price of the base asset
type: string
example: "100000.0000"
optionStrikePrice:
description: Strike price of the option market
type: string
example: "90000"
markPrice:
description: Mark Price of the option market
type: string
example: "100.0000"
quantity:
description: Number of contracts outstanding
type: string
example: "1000"
openInterest:
description: Amount of outstanding contracts in the exchange
type: string
example: "0.11442400"
openInterestUSD:
description: USD value of outstanding contracts in the exchange
type: string
example: "1144240.0000"
optionType:
description: Specifies if it's a call (right to buy) or a put (right to sell)
allOf:
- $ref: "#/components/schemas/OptionType"
expiryDatetime:
allOf:
- $ref: "#/components/schemas/DateTime"
greeks:
description: Option greeks
allOf:
- $ref: "#/components/schemas/OptionGreeks"
OptionGreeks:
description: Pricing parameters for option instruments. Only returned for option markets and omitted for spot and perpetual markets.
type: object
properties:
delta:
description: Sensitivity of an option's price to a $1 change in the price of the underlying asset. Only present for option markets.
type: string
example: "0.98"
gamma:
description: Rate of change of Delta with respect to a $1 change in the underlying asset's price. Only present for option markets.
type: string
example: "0.98"
theta:
description: The rate at which an option's price decreases as it approaches its expiration date. Only present for option markets.
type: string
example: "-0.17"
vega:
description: Sensitivity of an option's price to a 1% change in the implied volatility of the underlying asset. Only present for option markets.
type: string
example: "0.05"
PositionGreeks:
description: Position greeks for derivative instruments
type: object
properties:
delta:
description: The sensitivity of the portfolio's value to a change in the underlying price, expressed in the base asset (e.g., BTC, ETH)
type: string
example: "0.98000000"
gamma:
description: The rate of change in Delta per 1 USDC move in the underlying price, expressed in the base asset
type: string
example: "0.01000000"
theta:
description: The rate at which the portfolio's value changes as it approaches expiration, expressed in $/day
type: string
example: "-0.1700"
vega:
description: The change in portfolio value for a 1% (percentage point) absolute change in implied volatility, expressed in dollars ($)
type: string
example: "0.0500"
PortfolioSimulationResponse:
description: Simulation result
type: object
properties:
collateralUSD:
description: total collateral across all assets in this trading account displayed in the reference asset in USD
type: string
example: "13000.0000"
borrowedUSD:
description: total borrowed across all assets in this trading account displayed in the reference asset in USD
type: string
example: "12000.0000"
initialMarginUSD:
description: The minimum margin one must maintain in order to be able to purposefully increase risk
type: string
example: "14000.0000"
warningMarginUSD:
description: The minimum margin when the customer will receive warning via email/notifications over UI
type: string
example: "15000.0000"
liquidationMarginUSD:
description: The minimum value of margin one must maintain in order to avoid liquidation
type: string
example: "16000.0000"
fullLiquidationMarginUSD:
description: The value of margin when full liquidation occurs
type: string
example: "17000.0000"
defaultedMarginUSD:
description: The value of margin when this trading account will be moved into a Defaulted state
type: string
example: "18000.0000"
liquidityAddonUSD:
description: expected market impact of unwinding the portfolio in the case of a liquidation event
type: string
example: "19000.0000"
marketRiskUSD:
description: the worst possible loss on the portfolio based on scenario analysis
type: string
example: "20000.0000"
FundingRateHistoryResponse:
description: Hourly Funding Rate History of one market
type: array
items:
type: object
properties:
fundingRate:
description: funding rate for this hour
type: string
example: "0.1"
updatedAtDatetime:
description: date time of the last funding rate update for the hour
type: string
example: "2024-09-16T12:59:59.000Z"
CreateOtcTradeCommand:
type: object
description: A command with details to an OTC trade
required:
- commandType
- sharedMatchKey
- tradingAccountId
- isTaker
- trades
properties:
commandType:
type: string
description: Specifies the command type and must be ‘V1CreateOtcTrade' to indicate the submission of an OTC trade.
clientOtcTradeId:
$ref: "#/components/schemas/ClientOtcTradeId"
sharedMatchKey:
$ref: "#/components/schemas/SharedMatchKey"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
isTaker:
description: denotes whether the role of the counterparty is Taker or Maker. The corresponding leg of the opposite side of the trade should have the inverse role to be successfully matched on the OTC Clearing Facility
allOf:
- $ref: "#/components/schemas/Boolean"
remarks:
$ref: "#/components/schemas/Remarks"
trades:
type: array
nullable: false
description: all trades for the OTC trade
items:
$ref: "#/components/schemas/TradeInOtcRequest"
example:
commandType: V1CreateOtcTrade
clientOtcTradeId: "20050900225"
sharedMatchKey: cfBtcXrpMatch001
tradingAccountId: "111000000000001"
isTaker: true
remarks: "first otc trade with xyz client"
trades:
- symbol: BTC-USDC-PERP
side: BUY
price: "98213.0000"
quantity: "1.50000000"
- symbol: XRP-USDC-PERP
side: SELL
price: "2.6600"
quantity: "50.000000"
TradeInOtcRequest:
description: A trade of an OTC trade
required:
- symbol
- price
- quantity
- side
properties:
symbol:
$ref: "#/components/schemas/OtcMarketSymbol"
price:
description: price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity, see [ asset value ](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
$ref: "#/components/schemas/TradeSideAsString"
OtcTradeView:
type: object
required:
- otcTradeId
- sharedMatchKey
- status
- statusReason
- statusReasonCode
- createdAtDatetime
- createdAtTimestamp
- expireDatetime
- expireTimestamp
- trades
properties:
otcTradeId:
allOf:
- $ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
allOf:
- $ref: "#/components/schemas/ClientOtcTradeId"
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
tradingAccountNickname:
description: nickname of the trading account (only for brokered trades)
type: string
example: "my-trading-account"
sharedMatchKey:
allOf:
- $ref: "#/components/schemas/SharedMatchKey"
status:
allOf:
- $ref: "#/components/schemas/OtcTradeExternalStatus"
example: "MATCHED"
statusReason:
description: status reason, describes why the otc trade is in a specific state
type: string
example: "Ok"
statusReasonCode:
description: status reason code, see [details](/rest/general/error-rejection-codes)
type: string
example: "1002"
createdAtDatetime:
description: denotes the time the otc trade was ACK'd by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the otc trade was ACK'd by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
expireDatetime:
description: denotes the time the otc trade would expire, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
expireTimestamp:
description: denotes the time the otc trade would expire
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
remarks:
$ref: "#/components/schemas/Remarks"
brokeredBy:
$ref: "#/components/schemas/IdbShortCode"
trades:
type: array
minItems: 0
maxItems: 25
nullable: false
description: all trades for the OTC trade
items:
allOf:
- $ref: "#/components/schemas/OtcTradeLegView"
OtcTradeLegView:
description: a trade of an OTC trade
required:
- symbol
- price
- quantity
- side
- isTaker
properties:
tradeId:
description: unique trade ID
allOf:
- $ref: "#/components/schemas/TradeID"
symbol:
$ref: "#/components/schemas/OtcMarketSymbol"
price:
description: price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteAmount:
description: notional value of the trade in quote or settlement asset, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
baseFee:
description: base fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteFee:
description: quote fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
tradeRebateAssetSymbol:
$ref: "#/components/schemas/OtcMarketSymbol"
tradeRebateAmount:
description: trade rebate fee, see [ asset value ](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
allOf:
- $ref: "#/components/schemas/TradeSideAsString"
example: "BUY"
isTaker:
description: denotes whether the role of the counterparty is Taker or Maker. The corresponding leg of the opposite side of the trade should have the inverse role to be successfully matched on the OTC Clearing Facility
allOf:
- $ref: "#/components/schemas/Boolean"
createdAtDatetime:
description: denotes the time the trade was executed by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the trade was executed by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
UnconfirmedOtcTradeView:
type: object
description: An unconfirmed OTC trade for booking.
required:
- sharedMatchKey
- isTaker
- createdAtDatetime
- createdAtTimestamp
- expireDatetime
- expireTimestamp
- trades
properties:
sharedMatchKey:
$ref: "#/components/schemas/SharedMatchKey"
isTaker:
description: denotes your role as the counterparty to the initiator
allOf:
- $ref: "#/components/schemas/Boolean"
createdAtDatetime:
description: denotes the time the otc trade was ACK'd by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the otc trade was ACK'd by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
expireDatetime:
description: denotes the time the otc trade would expire, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
expireTimestamp:
description: denotes the time the otc trade would expire
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
trades:
type: array
nullable: false
description: all trades for the OTC trade
items:
$ref: "#/components/schemas/TradeInOtcRequest"
CreateOtcTradeResponse:
description: A response for an acknowledged OTC trade creation request
required:
- message
- requestId
- otcTradeId
- sharedMatchKey
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - CreateOtcTrade
requestId:
$ref: "#/components/schemas/RequestID"
otcTradeId:
$ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
$ref: "#/components/schemas/ClientOtcTradeId"
sharedMatchKey:
$ref: "#/components/schemas/SharedMatchKey"
ApproveOtcTradeCommand:
type: object
description: A command to approve an OTC trade. Only one of `clientOtcTradeId` or `otcTradeId` can be used in the approve OTC trade command
required:
- commandType
- tradingAccountId
properties:
commandType:
type: string
description: Specifies the command type and must be 'V1ApproveOtcTrade' to indicate the approval of an OTC trade.
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
otcTradeId:
$ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
$ref: "#/components/schemas/ClientOtcTradeId"
example:
commandType: V1ApproveOtcTrade
otcTradeId: "200000000000000098"
tradingAccountId: "111000000000001"
ApproveOtcTradeResponse:
description: A response for an acknowledged OTC command to approve an OTC trade
required:
- message
- requestId
- otcTradeId
- tradingAccountId
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - ApproveOtcTrade
requestId:
$ref: "#/components/schemas/RequestID"
otcTradeId:
$ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
$ref: "#/components/schemas/ClientOtcTradeId"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
example:
message: Command acknowledged - ApproveOtcTrade
requestId: "100000000000000149"
otcTradeId: "200000000000000098"
tradingAccountId: "111000000000001"
CancelOtcTradeCommand:
type: object
description: A command to cancel an OTC trade. Only one of `clientOtcTradeId` or `otcTradeId` can be used in the cancel OTC trade command
required:
- commandType
- tradingAccountId
properties:
commandType:
type: string
description: Specifies the command type and must be ‘V1CancelOtcTrade' to indicate the cancellation of an OTC trade.
enum:
- V1CancelOtcTrade
otcTradeId:
$ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
$ref: "#/components/schemas/ClientOtcTradeId"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
example:
commandType: V1CancelOtcTrade
clientOtcTradeId: "20050900225"
tradingAccountId: "111000000000001"
CancelOtcTradeResponse:
description: A response for an acknowledged OTC command to cancel an OTC trade
required:
- message
- requestId
- otcTradeId
- tradingAccountId
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - CancelOtcTrade
requestId:
$ref: "#/components/schemas/RequestID"
otcTradeId:
$ref: "#/components/schemas/OtcTradeId"
clientOtcTradeId:
$ref: "#/components/schemas/ClientOtcTradeId"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
example:
message: Command acknowledged - CancelOtcTrade
requestId: "100000000000000147"
otcTradeId: "200000000000000098"
tradingAccountId: "111000000000001"
CancelAllOtcTradesCommand:
type: object
description: A command to cancel all pending OTC trades.
required:
- commandType
- tradingAccountId
properties:
commandType:
type: string
description: Specifies the command type and must be ‘V1CancelAllOtcTrades' to indicate the cancellation of all pending OTC trades.
enum:
- V1CancelAllOtcTrades
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
example:
commandType: V1CancelAllOtcTrades
tradingAccountId: "111000000000001"
CancelAllOtcTradesResponse:
description: A response for an acknowledged OTC command to cancel all pending OTC trades
required:
- message
- requestId
- tradingAccountId
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - CancelOtcTrade
requestId:
$ref: "#/components/schemas/RequestID"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
example:
message: Command acknowledged - CancelAllOtcTrades
requestId: "100000000000000148"
tradingAccountId: "111000000000001"
BadOtcTradeEntryResponse:
type: object
required:
- message
- errorCode
- errorCodeName
properties:
message:
description: message
type: string
errorCode:
description: unique error code
type: integer
errorCodeName:
description: unique error code name
type: string
OtcMarketSymbol:
type: string
description: market symbol. E.g. `BTC-USDC-PERP` for PERPETUAL market `BTC-USDC-20250613` for DATEDFUTURE market and `BTC-USDC-20250613-100000-C` for OPTION market
example: BTC-USDC-PERP
SharedMatchKey:
type: string
description: Unique shared key that is agreed between the two customers to represent their OTC trade to be matched on Bullish's OTC Clearing Facility. Must be a 12 to 64 characters alphanumeric value
example: cfBtcXrpMatch001
TradeSideAsString:
type: string
description: trade side can have the following string values `BUY`, `SELL`
example: BUY
OtcMatchId:
type: string
description: unique numeric (i64) identifier generated on Bullish side expressed as a string value
example: "15"
ClientOtcTradeId:
type: string
description: unique numeric (i64) identifier generated on the client side expressed as a string value
example: "20050900225"
OtcTradeId:
type: string
description: unique numeric (i64) identifier generated on Bullish side expressed as a string value
example: "200000000000000098"
OtcTradeExternalStatus:
type: string
description: OTC trade status
enum:
- APPROVAL_PENDING
- COUNTERPARTY_PENDING
- COUNTERPARTY_PAIRED
- RISK_PENDING
- MATCHED
- CANCELLED
- REJECTED
x-enumDescriptions:
APPROVAL_PENDING: Pending authorization from the customer in an IDB flow
COUNTERPARTY_PENDING: Pending counterparty trade submission
COUNTERPARTY_PAIRED: Both sides of the trade have been paired and are pending system processing
RISK_PENDING: Trade is undergoing risk and margin checks
MATCHED: Trade is successfully executed
CANCELLED: The trade was manually retracted by the user, counterparty, or broker
REJECTED: The trade failed system validation or encountered a system error
example: MATCHED
Remarks:
type: string
description: text field for client's internal reference to a trade, max length is 255 characters
example: "first otc trade with xyz client"
IdbShortCode:
type: string
description: broker short code
example: "IDB_A"
DelegatedTradingAccountNickname:
description: nickname assigned for this account
type: string
example: "Alpha Traders Primary"
DelegatedApprovalMethod:
description: |
The default execution workflow for this IDB-Client pair:
- STRAIGHT_THROUGH: Trades are processed automatically
- APPROVAL_REQUIRED: Every trade requires manual authorization from the client
type: string
enum:
- STRAIGHT_THROUGH
- APPROVAL_REQUIRED
example: "APPROVAL_REQUIRED"
DelegatedInstitutionName:
description: legal name of the institution that owns the delegated trading account
type: string
example: "Alpha Traders"
DelegatedInstitutionRegistrationNumber:
description: |
registration number of the institution that owns the delegated trading account.
Nullable and omitted from the response when the institution has no registration number.
type: string
nullable: true
example: "87654321"
IdbRemarks:
type: string
description: text field for IDB's internal reference to a trade, max length is 255 characters
example: "otc trades between abc and xyz client"
BrokeredTradeSide:
type: object
required:
- tradingAccountId
properties:
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
remarks:
$ref: "#/components/schemas/Remarks"
IdbRequestItem:
type: object
properties:
requestId:
type: string
description: unique request ID
allOf:
- $ref: "#/components/schemas/RequestID"
otcTradeId:
$ref: "#/components/schemas/OtcTradeId"
IdbDelegatedAccountView:
type: object
description: Details of delegated accounts from the broker perspective.
required:
- institutionName
- tradingAccountId
- tradingAccountNickname
- approvalMethod
properties:
institutionName:
$ref: "#/components/schemas/DelegatedInstitutionName"
institutionRegistrationNumber:
$ref: "#/components/schemas/DelegatedInstitutionRegistrationNumber"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
tradingAccountNickname:
$ref: "#/components/schemas/DelegatedTradingAccountNickname"
approvalMethod:
$ref: "#/components/schemas/DelegatedApprovalMethod"
ClientDelegatedAccountView:
type: object
description: Details of a trading account delegated to an inter-dealer broker, from the client perspective.
required:
- tradingAccountId
- approvalMethod
properties:
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
idbShortCode:
$ref: "#/components/schemas/IdbShortCode"
tradingAccountNickname:
description: nickname assigned for this account
type: string
nullable: true
example: "Alpha Traders Primary"
approvalMethod:
$ref: "#/components/schemas/DelegatedApprovalMethod"
IdbCreateOtcTradeCommand:
type: object
description: A single command with details for both the maker and taker legs of a brokered OTC trade
required:
- commandType
- maker
- taker
- trades
properties:
commandType:
type: string
description: Specifies the command type and must be 'V1IdbCreateOtcTrade' to indicate the submission of an OTC trade
idbRemarks:
$ref: "#/components/schemas/IdbRemarks"
maker:
$ref: "#/components/schemas/BrokeredTradeSide"
taker:
$ref: "#/components/schemas/BrokeredTradeSide"
trades:
type: array
nullable: false
description: all trades for the OTC trade, submitted from the maker's perspective
items:
$ref: "#/components/schemas/TradeInOtcRequest"
example:
commandType: V1IdbCreateOtcTrade
idbRemarks: "otc trades between abc and xyz client"
maker:
tradingAccountId: "111000000000001"
remarks: "confirmed over the phone"
taker:
tradingAccountId: "111000000000002"
trades:
- symbol: BTC-USDC-PERP
side: BUY
price: "98213.0000"
quantity: "1.50000000"
- symbol: XRP-USDC-PERP
side: SELL
price: "2.6600"
quantity: "50.000000"
IdbCreateOtcTradeResponse:
description: A response for an acknowledged dual-sided brokered OTC trade creation request
required:
- message
- sharedMatchKey
- maker
- taker
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - IdbCreateOtcTrade
sharedMatchKey:
type: string
description: system-generated unique identifier for the dual-sided brokered OTC trade
example: a40d0c302d0448ce8e144c8312dd6ef0
maker:
$ref: "#/components/schemas/IdbRequestItem"
taker:
$ref: "#/components/schemas/IdbRequestItem"
example:
message: Command acknowledged - IdbCreateOtcTrade
sharedMatchKey: "a40d0c302d0448ce8e144c8312dd6ef0"
maker:
requestId: "100000000000000147"
otcTradeId: "200000000000000098"
taker:
requestId: "100000000000000148"
otcTradeId: "200000000000000099"
IdbOtcTradeView:
type: object
required:
- otcTradeId
- sharedMatchKey
- tradingAccountId
- tradingAccountNickname
- institutionName
- status
- statusReason
- statusReasonCode
- createdAtDatetime
- createdAtTimestamp
- expireDatetime
- expireTimestamp
- trades
- brokeredBy
properties:
otcTradeId:
allOf:
- $ref: "#/components/schemas/OtcTradeId"
institutionName:
$ref: "#/components/schemas/DelegatedInstitutionName"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId"
tradingAccountNickname:
$ref: "#/components/schemas/DelegatedTradingAccountNickname"
sharedMatchKey:
allOf:
- $ref: "#/components/schemas/SharedMatchKey"
status:
allOf:
- $ref: "#/components/schemas/OtcTradeExternalStatus"
example: "MATCHED"
statusReason:
description: status reason, why the trade is in a specific state, see [details](/rest/error-rejection-codes)
type: string
example: "Ok"
statusReasonCode:
description: status reason code, see [details](/rest/error-rejection-codes)
type: string
example: "1002"
createdAtDatetime:
description: denotes the time the otc trade was ACK'd by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the otc trade was ACK'd by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
expireDatetime:
description: denotes the time the otc trade would expire, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
expireTimestamp:
description: denotes the time the otc trade would expire
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
remarks:
$ref: "#/components/schemas/Remarks"
idbRemarks:
$ref: "#/components/schemas/IdbRemarks"
trades:
type: array
minItems: 0
maxItems: 25
nullable: false
description: all trades for the OTC trade
items:
allOf:
- $ref: "#/components/schemas/IdbOtcTradeLegView"
brokeredBy:
$ref: "#/components/schemas/IdbShortCode"
IdbOtcTradeLegView:
description: a trade leg of a brokered OTC trade
required:
- symbol
- price
- quantity
- side
- isTaker
properties:
tradeId:
description: unique trade ID
allOf:
- $ref: "#/components/schemas/TradeID"
symbol:
$ref: "#/components/schemas/OtcMarketSymbol"
price:
description: price, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quantity:
description: quantity, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteAmount:
description: notional value of the trade in quote or settlement asset, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
baseFee:
description: base fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
quoteFee:
description: quote fee, see [asset value](/rest/general/price-quantity-precision) format
allOf:
- $ref: "#/components/schemas/AssetValue"
side:
$ref: "#/components/schemas/TradeSideAsString"
isTaker:
description: denotes whether the role of the counterparty is Taker or Maker. The corresponding leg of the opposite side of the trade should have the inverse role to be successfully matched on the OTC Clearing Facility
allOf:
- $ref: "#/components/schemas/Boolean"
createdAtDatetime:
description: denotes the time the trade was executed by the exchange, ISO 8601 with millisecond as string
allOf:
- $ref: "#/components/schemas/DateTime"
createdAtTimestamp:
description: denotes the time the trade was executed by the exchange
allOf:
- $ref: "#/components/schemas/TimeStampAsString"
IdbCancelOtcTradeCommand:
type: object
description: A command to cancel a dual-sided OTC trade using `sharedMatchKey`
required:
- commandType
- sharedMatchKey
properties:
commandType:
type: string
description: Specifies the command type and must be 'V1IdbCancelOtcTrade' to indicate the cancellation of a dual-sided OTC trade.
sharedMatchKey:
$ref: "#/components/schemas/SharedMatchKey"
idbRemarks:
$ref: "#/components/schemas/IdbRemarks"
example:
commandType: V1IdbCancelOtcTrade
sharedMatchKey: "a40d0c302d0448ce8e144c8312dd6ef0"
idbRemarks: "Cancelled per client request via Bloomberg chat"
IdbCancelOtcTradeResponse:
description: A response for an acknowledged OTC command to cancel a dual-sided OTC trade
required:
- message
- sharedMatchKey
- maker
- taker
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - IdbCancelOtcTrade
sharedMatchKey:
type: string
description: system-generated unique identifier for the dual-sided brokered OTC trade
example: a40d0c302d0448ce8e144c8312dd6ef0
maker:
$ref: "#/components/schemas/IdbRequestItem"
taker:
$ref: "#/components/schemas/IdbRequestItem"
example:
message: Command acknowledged - IdbCancelOtcTrade
sharedMatchKey: "a40d0c302d0448ce8e144c8312dd6ef0"
maker:
requestId: "100000000000000147"
otcTradeId: "200000000000000098"
taker:
requestId: "100000000000000148"
otcTradeId: "200000000000000099"
IdbUpdateRemarksCommand:
type: object
description: A command to update IDB remarks of a dual-sided OTC trade using `sharedMatchKey`
required:
- commandType
- sharedMatchKey
- idbRemarks
properties:
commandType:
type: string
description: Specifies the command type and must be 'V1IdbUpdateRemarks' to indicate the update of IDB remarks for a dual-sided OTC trade
sharedMatchKey:
$ref: "#/components/schemas/SharedMatchKey"
idbRemarks:
$ref: "#/components/schemas/IdbRemarks"
example:
commandType: "V1IdbUpdateRemarks"
sharedMatchKey: "a40d0c302d0448ce8e144c8312dd6ef0"
idbRemarks: "resubmitted by xyz"
IdbUpdateRemarksResponse:
description: A response for an acknowledged OTC command to update IDB remarks of a dual-sided OTC trade
required:
- message
- sharedMatchKey
- maker
- taker
properties:
message:
type: string
description: message indicating the status of the request
example: Command acknowledged - IdbUpdateRemarks
sharedMatchKey:
type: string
description: system-generated unique identifier for the dual-sided brokered OTC trade
example: a40d0c302d0448ce8e144c8312dd6ef0
maker:
$ref: "#/components/schemas/IdbRequestItem"
taker:
$ref: "#/components/schemas/IdbRequestItem"
example:
message: Command acknowledged - IdbUpdateRemarks
sharedMatchKey: "a40d0c302d0448ce8e144c8312dd6ef0"
maker:
requestId: "100000000000000147"
otcTradeId: "200000000000000098"
taker:
requestId: "100000000000000148"
otcTradeId: "200000000000000099"
GetMmpConfigurationResponse:
type: object
required:
- tradingAccountId
- message
- mmpConfigurations
properties:
tradingAccountId:
allOf:
- $ref: "#/components/schemas/TradingAccountId"
message:
description: If there are no market maker protection configurations setup for this trading account or for the provided optional symbol under the same trading account, this field will be returned as "No mmp config setup".
type: string
example: "No mmp config setup"
mmpConfigurations:
description: A list of market maker protection configurations that the user has setup for each underlying asset symbol under the trading account provided. Supports filtering of symbol.
type: array
minItems: 0
items:
$ref: "#/components/schemas/MmpConfiguration"
MmpConfiguration:
type: object
required:
- underlyingAssetSymbol
- windowTimeInSeconds
- frozenTimeInSeconds
- quantityLimit
- deltaLimit
- isActive
properties:
underlyingAssetSymbol:
type: string
description: Underlying Asset Symbol
example: "BTC"
windowTimeInSeconds:
type: integer
description: Time window during which the MMP checks are conducted. It helps in determining how frequently the system evaluates the market maker's activity against predefined thresholds. Value needs to be `> 0`. Maximum value is 600 seconds (10 minutes).
example: 60
frozenTimeInSeconds:
type: integer
description: The duration for which a market maker's trading activity is temporarily halted after a protective measure is triggered. Value needs to be `>= 0`. Maximum value is 3600 seconds (60 minutes).
example: 120
quantityLimit:
type: string
description: Cap on the total number of contracts that a market maker can trade within `windowTimeInSeconds`. This is direction(side) agnostic. Needs to be `> 0` if set.
example: "100"
deltaLimit:
type: string
description: Net delta exposure that a market maker can accumulate within `windowTimeInSeconds`
example: "10"
isActive:
type: boolean
description: This boolean indicates if this configuration is in effect or not.
example: true
MarketExpiryPriceResponse:
type: object
required:
- symbol
- expiryPrice
- expiryNotional
- expiryDatetime
- expiryTimestamp
properties:
symbol:
type: string
description: Market Symbol
example: "BTC-USDC-20250912-95000-C"
expiryPrice:
type: string
description: Price used upon Expiry for an Options/Dated Futures contract
example: "115123.2512"
expiryNotional:
type: string
description: Difference between strike price and expiry price for an Options contract expressed in notional per unit contract
example: "20123.3033"
expiryDatetime:
type: string
description: Datetime by which the market expires at
example: "2018-11-18T00:00:00.000Z"
expiryTimestamp:
type: string
description: Timestamp by which the market expires at
example: "1672041600000"
examples:
CreateLimitOrderCommand:
value:
commandType: "V3CreateOrder"
clientOrderId: "1234"
symbol:
$ref: "#/components/schemas/MarketSymbol/example"
type: "LIMIT"
side: "BUY"
price: "31000.1"
quantity: "1.1"
timeInForce: "GTC"
allowBorrow: true
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId/example"
CreateMarketOrderCommand:
value:
commandType: "V3CreateOrder"
clientOrderId: "1234"
symbol:
$ref: "#/components/schemas/MarketSymbol/example"
type: "MARKET"
side: "BUY"
quantity: "1.1"
timeInForce: "GTC"
allowBorrow: true
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId/example"
CreateStopLimitOrderCommand:
value:
commandType: "V3CreateOrder"
symbol:
$ref: "#/components/schemas/MarketSymbol/example"
type: "STOP_LIMIT"
side: "BUY"
price: "31000.1"
stopPrice: "31000.8"
quantity: "1.1"
timeInForce: "GTC"
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId/example"
CreatePostOnlyOrderCommand:
value:
commandType: "V3CreateOrder"
clientOrderId: "1234"
symbol:
$ref: "#/components/schemas/MarketSymbol/example"
type: "POST_ONLY"
side: "BUY"
price: "31000.1"
quantity: "1.1"
timeInForce: "GTC"
allowBorrow: true
tradingAccountId:
$ref: "#/components/schemas/TradingAccountId/example"
SetMMPCommandV1:
value:
$ref: "#/components/schemas/SetMMPCommandV1/example"
ResetMMPCommandV1:
value:
$ref: "#/components/schemas/ResetMMPCommandV1/example"
SetMMPCommandResponse:
value:
$ref: "#/components/schemas/SetMMPCommandResponse/example"
ResetMMPCommandResponse:
value:
$ref: "#/components/schemas/ResetMMPCommandResponse/example"
CreateAMMInstructionCommand:
value:
$ref: "#/components/schemas/CreateAMMInstructionCommandV3/example"
CancelOrderCommand:
description: Only one of `orderId` or `clientOrderId` can be used in the cancel order command
value:
$ref: "#/components/schemas/CancelOrderCommandV3/example"
CancelAllOrdersCommand:
value:
$ref: "#/components/schemas/CancelAllOrdersCommand/example"
CancelAllOrdersByMarketCommand:
value:
$ref: "#/components/schemas/CancelAllOrdersByMarketCommand/example"
DelayedCancelAllOrdersCommand:
value:
$ref: "#/components/schemas/DelayedCancelAllOrdersCommand/example"
UnsetDelayedCancelAllOrdersCommand:
value:
$ref: "#/components/schemas/UnsetDelayedCancelAllOrdersCommand/example"
AmendOrderCommand:
value:
$ref: "#/components/schemas/AmendOrderCommandV1/example"
TerminateAMMInstructionCommand:
value:
$ref: "#/components/schemas/TerminateAMMInstructionCommandV3/example"
TransferAssetCommand:
value:
$ref: "#/components/schemas/TransferAssetCommandV2/example"
AmendOrderCommandResponse:
value:
$ref: "#/components/schemas/AmendOrderCommandResponseV1/example"
CancelOrderCommandResponse:
description: Only one of `orderId` or `clientOrderId` present
value:
$ref: "#/components/schemas/CancelOrderCommandResponseV3/example"
CancelAllOrdersCommandResponse:
value:
$ref: "#/components/schemas/CancelAllOrdersCommandResponse/example"
CancelAllOrdersByMarketCommandResponse:
value:
$ref: "#/components/schemas/CancelAllOrdersByMarketResponse/example"
DelayedCancelAllOrdersCommandResponse:
value:
$ref: "#/components/schemas/DelayedCancelAllOrdersResponse/example"
UnsetDelayedCancelAllOrdersCommandResponse:
value:
$ref: "#/components/schemas/UnsetDelayedCancelAllOrdersResponse/example"
CreateAMMInstructionCommandResponse:
value:
$ref: "#/components/schemas/CreateAMMInstructionCommandResponseV3/example"
TerminateAMMInstructionCommandResponse:
value:
$ref: "#/components/schemas/TerminateAMMInstructionCommandResponseV3/example"
TransferAssetCommandResponse:
value:
$ref: "#/components/schemas/TradingAccountTransferResponse/example"
ApproveOtcTradeCommand:
value:
$ref: "#/components/schemas/ApproveOtcTradeCommand/example"
ApproveOtcTradeResponse:
value:
$ref: "#/components/schemas/ApproveOtcTradeResponse/example"
CancelOtcTradeCommand:
value:
$ref: "#/components/schemas/CancelOtcTradeCommand/example"
CancelAllOtcTradesCommand:
value:
$ref: "#/components/schemas/CancelAllOtcTradesCommand/example"
CancelOtcTradeResponse:
value:
$ref: "#/components/schemas/CancelOtcTradeResponse/example"
CancelAllOtcTradesResponse:
value:
$ref: "#/components/schemas/CancelAllOtcTradesResponse/example"
IdbCancelOtcTradeCommand:
value:
$ref: "#/components/schemas/IdbCancelOtcTradeCommand/example"
IdbCancelOtcTradeResponse:
value:
$ref: "#/components/schemas/IdbCancelOtcTradeResponse/example"
IdbUpdateRemarksCommand:
value:
$ref: "#/components/schemas/IdbUpdateRemarksCommand/example"
IdbUpdateRemarksResponse:
value:
$ref: "#/components/schemas/IdbUpdateRemarksResponse/example"