The OTC API allows institutional clients to submit, track, and cancel over-the-counter trades via the Bullish OTC Clearing Facility. OTC trades are bilaterally agreed off-book transactions where both counterparties submit matching legs with a sharedDocumentation Index
Fetch the complete documentation index at: https://mintlify.com/bullish-exchange/api-docs/llms.txt
Use this file to discover all available pages before exploring further.
sharedMatchKey. All OTC endpoints require a valid bearer JWT.
GET /trading-api/v2/otc-trades
Returns a paginated list of OTC trades for the authenticated trading account. Supports filtering onstatus, tradingAccountId, sharedMatchKey, clientOtcTradeId, createdAtDatetime, and createdAtTimestamp.
Authentication: Required.
Query Parameters
ID of the trading account.
Filter by OTC trade status. One of
COUNTERPARTY_PENDING, COUNTERPARTY_PAIRED, RISK_PENDING, MATCHED, CANCELLED, REJECTED.Shared match key used to correlate counterparty legs.
Filter by unique client OTC trade ID.
Start of the datetime range (ISO 8601 with millisecond).
End of the datetime range (ISO 8601 with millisecond).
Page size. One of:
5, 25, 50, 100. Defaults to 25.Response Fields (array of OtcTradeView objects)
Unique Bullish OTC trade ID.
Client-side unique OTC trade ID.
Shared key used to match the two counterparty legs. E.g.
"cfBtcXrpMatch001".Current OTC trade status. One of
COUNTERPARTY_PENDING, COUNTERPARTY_PAIRED, RISK_PENDING, MATCHED, CANCELLED, REJECTED.Human-readable status description. E.g.
"Ok".Numeric status reason code. See Error & Rejection Codes.
ISO 8601 datetime when the OTC trade was acknowledged by the exchange.
Millisecond EPOCH timestamp when the OTC trade was acknowledged.
ISO 8601 datetime when this OTC trade expires if unmatched.
Millisecond EPOCH timestamp of OTC trade expiry.
Optional free-text remarks attached to the OTC trade.
Individual trade legs included in this OTC trade.
Example Request
Example Response
POST /trading-api/v2/otc-trades
Creates an OTC trade. A200 response confirms the command was acknowledged. Use GET /trading-api/v2/otc-trades/ with the returned otcTradeId or clientOtcTradeId to check status.
Both counterparties must submit matching legs using the same sharedMatchKey. One party must set isTaker: true and the other isTaker: false for the trade to match on the OTC Clearing Facility.
Authentication: Required.
Request Headers
Bearer <JWT>Request signature.
Milliseconds since EPOCH.
Client-side incremented unsigned 64-bit integer as a string.
Request Body Fields
Must be
"V1CreateOtcTrade".ID of the trading account submitting this leg.
Shared key agreed with the counterparty to correlate both legs. E.g.
"cfBtcXrpMatch001".Whether this account is the taker on the trade. The counterparty must submit the inverse value.
Array of trade legs to include in this OTC trade.
Client-side unique identifier for this OTC trade. E.g.
"20050900225".Free-text remarks. E.g.
"first otc trade with xyz client".Response Fields
Message indicating the status of the request. E.g.
"Command acknowledged - CreateOtcTrade".Unique request ID assigned by the exchange.
Unique Bullish OTC trade ID — use for status queries.
Client-side OTC trade ID echoed from the request.
Shared match key echoed from the request.
Example Request
Example Response
GET /trading-api/v2/otc-trades/
Retrieves a specific OTC trade by its exchange-assigned ID.Authentication: Required.
Path Parameters
Unique Bullish OTC trade ID.
Query Parameters
ID of the trading account.
Example Request
Example Response
POST /trading-api/v2/otc-command
Submits a cancellation command for an OTC trade. Supported command types areV1CancelOtcTrade (cancel a single OTC trade) and V1CancelAllOtcTrades (cancel all pending OTC trades for a trading account). A 200 response confirms acknowledgement only.
Authentication: Required.
Request Headers
Bearer <JWT>Request signature.
Milliseconds since EPOCH.
Client-side incremented unsigned 64-bit integer as a string.