Bullish · OpenAPI Overlay 1.0.0
API Evangelist enhancements for the Bullish Trading API
9 actions
9 updates
documentation
extends
openapi/bullish-trading-api-openapi.yml
Derived by API Evangelist
Built from the contracts Bullish publishes. Bullish did not publish this file.
What the actions change
x-apievangelist-consequencex-apievangelist-human-in-the-loopx-apievangelist-notex-apievangelist-providerx-apievangelist-enrichedx-apievangelist-artifactsdescriptionx-apievangelist-idempotency
Targets 4
$.info
$.components.securitySchemes.jwtTokenAuth
$.paths['/v1/wallets/withdrawal'].post
$.paths['/v2/orders'].post
OpenAPI Overlay
overlay: 1.0.0
info:
title: API Evangelist enhancements for the Bullish Trading API
version: 1.0.0
extends: openapi/bullish-trading-api-openapi.yml
x-generated: '2026-08-08'
x-method: generated
x-source: >-
Derived from API Evangelist enrichment artifacts in all/bullish/ — conventions,
errors, rate-limits, authentication, lifecycle and sandbox. Never mutates the
harvested spec.
actions:
- target: $.info
update:
x-apievangelist-provider: bullish
x-apievangelist-enriched: '2026-08-08'
x-apievangelist-artifacts:
authentication: authentication/bullish-authentication.yml
conventions: conventions/bullish-conventions.yml
errors: errors/bullish-error-codes.yml
problem-types: errors/bullish-problem-types.yml
rate-limits: rate-limits/bullish-rate-limits.yml
lifecycle: lifecycle/bullish-lifecycle.yml
sandbox: sandbox/bullish-sandbox.yml
data-model: data-model/bullish-data-model.yml
conformance: conformance/bullish-conformance.yml
- target: $.info
update:
description: >-
The Bullish Trading API. REST over HTTPS, JSON only. Public market data is
anonymous; private endpoints require a JWT bearer token minted by signing a
login request with an ECDSA R1 or HMAC API key. Tokens are valid for 24
hours. HMAC-derived tokens reach trading endpoints only — custody requires
ECDSA. Versions v1 and v2 coexist in the path under /trading-api. Errors
carry a numeric statusReasonCode plus statusReason text drawn from a
published 167-code registry. Pagination is cursor-based via _pageSize /
_nextPage / _previousPage with _metaData=true for navigation links. There is
NO idempotency key — retries are governed by a strictly increasing BX-NONCE,
so recover from a 5xx by querying the order by clientOrderId rather than by
resubmitting.
- target: $.info
update:
x-apievangelist-idempotency:
supported: false
mechanism: strictly-increasing BX-NONCE plus clientOrderId dedupe
retry_safe: false
recovery_operation: trade-get-order-by-client-order-id-v2
- target: $.info
update:
x-apievangelist-rate-limits:
default: 50 requests per second per category
per_ip: 500 requests per 10 seconds, then a 60-second block
headers: [x-ratelimit-limit, x-ratelimit-remaining, x-ratelimit-reset, x-ratelimit-global-breach]
breach_codes: [96000, 96001]
tier_upgrade_header: BX-RATELIMIT-TOKEN
- target: $.info
update:
x-apievangelist-pagination:
style: cursor
params: [_pageSize, _metaData, _nextPage, _previousPage]
page_sizes: [5, 25, 50, 100]
default_page_size: 25
envelope: {data: array, links: {next: string, previous: string}}
- target: $.info
update:
x-apievangelist-environments:
production:
- https://api.exchange.bullish.com/trading-api
- https://registered.api.exchange.bullish.com/trading-api
- https://prod.access.bullish.com/trading-api
simulation:
- https://api.simnext.bullish-test.com/trading-api
- https://registered.api.simnext.bullish-test.com/trading-api
- https://simnext.access.bullish.com/trading-api
bug_bounty:
- https://api.bugbounty.bullish.com/trading-api
self_service_simulation_access: false
- target: $.components.securitySchemes.jwtTokenAuth
update:
x-apievangelist-login:
ecdsa: POST /v2/users/login
hmac: GET /v1/users/hmac/login
logout: GET /v1/users/logout
lifetime_hours: 24
signing_headers: [BX-TIMESTAMP, BX-NONCE, BX-PUBLIC-KEY, BX-SIGNATURE]
hmac_token_scope: trading-only
ecdsa_token_scope: trading-and-custody
- target: $.paths['/v1/wallets/withdrawal'].post
update:
x-apievangelist-consequence: irreversible
x-apievangelist-human-in-the-loop: required
x-apievangelist-note: >-
Withdrawal destinations must be whitelisted (error 8336) and must belong to
the calling user (error 8335). An ECDSA credential is mandatory — an
HMAC-derived token is rejected on the custody surface.
- target: $.paths['/v2/orders'].post
update:
x-apievangelist-consequence: financial
x-apievangelist-human-in-the-loop: recommended
x-apievangelist-note: >-
Not idempotent. Supply clientOrderId and, on any 5xx or timeout, resolve the
outcome with trade-get-order-by-client-order-id-v2 before resubmitting; a
blind retry creates a second order or is rejected with 3007 / 3023.
Work with this as data
Every overlay here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for openapi overlays
4 MCP tools reach this
find_overlaysBrowse and filter every overlay in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This overlay
curl "https://apis.io/api/v1/overlays/bullish-trading-api-overlay"
All openapi overlays
curl "https://apis.io/api/v1/overlays?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.