Skip to main content

Base URL

All paths in the API Reference are relative to this host.

Amounts are decimal strings

Every monetary value — balances, prices, fees, trade amounts — is a string holding an exact decimal, e.g. "0.00250000" or "1500.50".
Never parse amounts into binary floats (float, double, JavaScript Number): they cannot represent decimal amounts exactly and will corrupt values. Use Decimal (Python), BigNumber/decimal.js (JavaScript), big.Rat/shopspring/decimal (Go), or your language’s equivalent.
Request bodies accept amounts as strings the same way.

Asset codes

Assets are identified by their uppercase code: BTC, ETH, AUD, … The Australian dollar is itself an asset (AUD), which is how trade direction is expressed:
  • Buy crypto: src_asset: "AUD", dst_asset: "BTC"
  • Sell crypto: src_asset: "BTC", dst_asset: "AUD"
The full asset list, including which assets can be deposited and withdrawn, comes from GET /api/public/broker/assets/.

Timestamps

Timestamps are formatted YYYY-MM-DDTHH:MM:SS without a timezone suffix, and are in Australian Eastern Standard Time (Australia/Brisbane, UTC+10 — Queensland does not observe daylight saving).

Pagination

List endpoints are page-number paginated: Paginated responses have the shape:
Follow next until it is null.

Errors

Errors use conventional HTTP status codes with a JSON body: Non-field errors typically arrive as {"detail": "..."}.

Sensitive actions need extra confirmation

Some money-moving operations are deliberately multi-step. For example, creating a crypto withdrawal returns a pending withdrawal that must be authorized with a confirmation code before it is processed — see the withdrawal endpoints in the API Reference. Design your integration to expect these confirmation steps rather than fire-and-forget.