> ## Documentation Index
> Fetch the complete documentation index at: https://docs.arcus.xyz/llms.txt
> Use this file to discover all available pages before exploring further.

# Changelog API (Mainnet)

> Release notes for the Arcus production API

<Note>
  **Mainnet runs `production-v0.7.0`.** This page tracks what is live in production, anchored to the production release that shipped each change; verify the running version at any time with `GET /` on `https://api.arcus.xyz`. Changes reach testnet first — see the [testnet changelog](/changelog/testnet) for what is queued ahead of production.
</Note>

<Update label="October 8, 2026" description="production-v0.7.0">
  ## Referrals

  * An invite code is only for gaining trading access: [`POST /v1/affiliate/redeemInvite`](/api-reference/referral/redeem-an-invite-code) by a caller who can already trade returns `409` and the code is not spent. Redemption links you to the code's owner by address (the owner no longer needs a referral code) and never moves an existing referral.
  * A caller who cannot trade yet can register on [`POST /v1/affiliate/registerAffiliate`](/api-reference/referral/register-as-referee) by spending one of the code owner's unused invite codes, which grants trading access; `403` or `409` when the owner does not allow it or has none left, and `502` (nothing registered, safe to retry) when the access grant fails.
  * [`GET /v1/affiliate/info`](/api-reference/referral/get-affiliate-info) adds `traderCount`, and its referred-volume and commission totals now cover your whole T1/T2/T3 downline, perps only. [`GET /v1/affiliate/referees`](/api-reference/referral/get-referees) rows add `volumeAllTime`, and a `parent` filter pages one referee's sub-tree.
  * [`POST /v1/affiliate/createCode`](/api-reference/referral/create-referral-code) and [`modifyCode`](/api-reference/referral/rename-referral-code) reject a string that is already an invite code with `409` ("not a valid referral code").
  * Spec correction: invite codes are earned on your own lifetime perps volume plus the all-time volume of your direct referees; deeper levels do not count.

  ## Trading

  * Accounts blocked under the Terms of Use are close-only: they can cancel orders, place reduce-only `IOC` or `FOK` orders to reduce or close a position, and withdraw. Every other trading request returns `403`.
</Update>

<Update label="October 5, 2026" description="production-v0.6.0">
  ## Referrals

  * Redeeming your own invite code on [`POST /v1/affiliate/redeemInvite`](/api-reference/referral/redeem-an-invite-code) grants you trading access if you don't have it yet; the code is spent and no referral binding is created.

  ## Stability

  * Fixed: a market's leverage change now shows on [`GET /v1/markets`](/api-reference/public/get-markets) as soon as the engine applies it, and markets listed after launch appear on the unfiltered list.
  * Fixed: [`GET /v1/leaderboard`](/api-reference/public/get-the-all-traders-leaderboard) no longer reports an overflowed `feesPaid` for traders whose net fees are negative (maker rebates).
</Update>

<Update label="October 3, 2026" description="production-v0.5.0-1">
  ## API changes

  * Markets listed after launch are served like the rest: they appear on prices, mids, candles, [`GET /v1/leverages`](/api-reference/public/get-leverage-and-margin-mode-for-an-account-across-all-markets) and the WebSocket channels, and their order rows show the market ticker.
  * REST list responses carry `total`, the number of items in the returned page (not the size of the full result set), on [`GET /v1/trades`](/api-reference/public/get-recent-public-trades), `/v1/candles`, `/v1/orders`, `/v1/openOrders`, `/v1/fills`, `/v1/positions`, `/v1/funding`, `/v1/fundingRates` and `/v1/accountTransferUpdates`.
  * [`GET /v1/apiKeys`](/api-reference/onboarding/get-api-keys) is bounded and paginated: keys come back newest first, capped by `limit` (default and maximum 1000), and `from` / `to` filter on `createdAt` in epoch milliseconds. An invalid `limit`, `from` or `to` returns `400`.

  ## Stability

  * Fixed: the WLFI-USD market's price-increment tiers now use the correct anchor price.
  * Fixed: withdrawals submitted in quick succession no longer stall before being sent on-chain.
</Update>

<Update label="October 1, 2026" description="production-v0.4.0-2">
  ## Referrals

  * The referral program is in the API reference: create, rename and revoke referral codes, register as a referee, and read referees, commissions and claims under [`/v1/affiliate/*`](/api-reference/referral/get-affiliate-info), plus the [commission rate schedule](/api-reference/public/get-referral-commission-rate-schedule).
  * Invite codes are live: [`GET /v1/affiliate/inviteCodes`](/api-reference/referral/list-the-callers-invite-codes) lists the codes you have earned (one per \$1M of lifetime perps volume), and [`POST /v1/affiliate/redeemInvite`](/api-reference/referral/redeem-an-invite-code) redeems one, granting trading access and binding you as a referee of the code's owner.
  * New [`GET /v1/leaderboard`](/api-reference/public/get-the-all-traders-leaderboard) ranks traders by volume, realized PnL or fees over a rolling window.
  * Referral payouts appear as `REFERRAL_CLAIM` transfers on [`GET /v1/accountTransferUpdates`](/api-reference/public/get-account-transfer-updates) and the [`accountTransferUpdates`](/api-reference/channels#accounttransferupdates) channel.
</Update>

<Update label="September 24, 2026" description="production-v0.4.0-2">
  ## API changes

  * New [`GET /v1/fill/{tradeId}`](/api-reference/public/get-fill-by-id): look up the single fill an account owns for a given `tradeId`.
  * [`GET /v1/leaderboard`](/api-reference/public/get-the-all-traders-leaderboard) accepts an `address` to return just that trader's row, and every row carries its `rank` on the active `sortBy` column.
  * [`GET /v1/affiliate/info`](/api-reference/referral/get-affiliate-info) adds `totalReferredVolumeAllTime`, the lifetime notional volume of all the affiliate's referees.
  * Spec correction: the [`GET /v1/affiliate/info`](/api-reference/referral/get-affiliate-info) spec now names the affiliate's trailing-30-day volume field `volume30d`, matching what the API already returned (it was documented as `rollingVolume`). No client change is needed.
  * New [`POST /v1/affiliate/modifyCode`](/api-reference/referral/rename-referral-code): rename your referral code in place; existing referees stay attached.
  * API keys can be scoped to every subaccount of an address: [`POST /v1/createApiKey`](/api-reference/onboarding/create-api-key) and [`POST /v1/revokeApiKey`](/api-reference/onboarding/revoke-api-key) accept `accountIndex: 255`, and key rows on [`GET /v1/apiKeys`](/api-reference/onboarding/get-api-keys) carry an `allSubaccounts` flag.

  ## Order management

  * [`POST /v1/scheduleCancel`](/api-reference/exchange/schedule-cancel-all-dead-mans-switch) accepts an optional `marketId` to arm a per-market dead man's switch, independent of the account-wide switch. A wallet may hold a bounded number of armed switches; arming beyond it returns `429`, and refreshing an armed switch is always allowed.

  ## WebSocket

  * Equity and free collateral streamed over WebSocket now net funding that has accrued but not yet settled, matching the values the margin engine uses.
</Update>

<Update label="September 23, 2026" description="production-v0.4.0-2">
  ## Orders and fills

  * **Partially filled orders that are then canceled now report `avgFillPrice`.** A `CANCELED` order with `filledSize` above zero on [`GET /v1/orders`](/api-reference/public/get-order-history) carries `avgFillPrice`, the volume-weighted price of its fills; until now it was omitted.
  * **`closedPnl` on closing fills is now computed from the cost basis the fill releases.** On [`GET /v1/fills`](/api-reference/public/get-fills), a fill that reduces or closes a position reports its notional against the cost basis it releases, minus the fee, instead of using a truncated per-unit average entry price. Opening and add legs still report `−fee`.
  * **Liquidation fills now report `closedPnl`.** The liquidated account's leg of a forced closure (`liquidation.method` `LIQUIDATION`) on [`GET /v1/fills`](/api-reference/public/get-fills) carries the realized PnL of the close, net of taker trading fees (the liquidation penalty included in `fee` is not deducted); until now it read `"0"`. Earlier liquidation fills are not backfilled.
</Update>

<Update label="September 16, 2026" description="production-v0.3.0">
  ## WebSocket

  * WebSocket connections now receive a `1001` (Going Away) close frame before the server drains them on restart, instead of being closed without a close frame.

  ## Liquidations and risk

  * Liquidation orders closed on the book carry the limit price the engine computed for the close, or `0` when that limit is not a positive price.
  * Liquidation updates report the full fee charged, including the liquidated account's taker trading fees, and forced-close order rows (liquidation and ADL) report `avgFillPrice`.
  * Orders, modifies, and fills that would take a position past the engine's maximum position notional, one fixed bound for all markets (about \$922M), are rejected with `POSITION_SIZE_CAP_EXCEEDED`.
  * A triggered TP/SL order keeps its trigger metadata on its terminal cancel, so [`GET /v1/order/{orderId}`](/api-reference/public/get-order-status) still shows the stop after an IOC partial fill.
</Update>

<Update label="September 10, 2026" description="production-v0.2.0">
  ## Margin

  * **Per-account isolated margin is now enabled in production.** Set a market to isolated mode with the optional `isolated` flag on [`POST /v1/setLeverage`](/api-reference/exchange/set-leverage-for-a-market), move collateral onto or off an isolated position's leg with [`POST /v1/adjustIsolatedMargin`](/api-reference/exchange/add-or-remove-margin-on-an-isolated-mode-position), and read the mode from `marginMode`/`isolated` on position rows, [`GET /v1/leverages`](/api-reference/public/get-leverage-and-margin-mode-for-an-account-across-all-markets), and the [`accountAttributeUpdates`](/api-reference/channels#accountattributeupdates) channel. The API surface shipped in `production-v0.1.10.0` and read `CROSS`/`false` for every account until now; isolated behaviour is active for all accounts as of this update. Testnet has carried the full mechanics since `testnet-v1.8.0` — see the [testnet changelog](/changelog/testnet) for the detailed `marginUsed`, rejection-reason, and streaming semantics.
</Update>

<Update label="September 2, 2026" description="production-v0.2.0">
  ## WebSocket / Order book

  * Subaccounts across the account-scoped channels — [`account`](/api-reference/channels#account), [`positions`](/api-reference/channels#positions), [`orders`](/api-reference/channels#orders), [`userFills`](/api-reference/channels#userfills), [`funding`](/api-reference/channels#funding), [`accountTransferUpdates`](/api-reference/channels#accounttransferupdates), and [`accountAttributeUpdates`](/api-reference/channels#accountattributeupdates): an optional `accountIndex` (0–9), part of subscription identity and echoed on every frame. Omit it for subaccount 0.
  * Position and order rows carry a per-account `sequenceNumber` (the same counter as `AccountUpdate.sequenceNumber`); the [`orders`](/api-reference/channels#orders) snapshot carries `lastSequenceId`, matching [`positions`](/api-reference/channels#positions).

  ## API changes

  * Referral codes are non-resolvable to wallets: [`GET /v1/affiliate/myReferrer`](/api-reference/referral/get-my-referrer) redacts the referrer address.

  ## Markets

  * 13 new crypto markets enabled and tradeable: DOGE, ENA, PUMP, NEAR, PENGU, FARTCOIN, SUI, WLFI, LINK, BNB, TAO, AAVE, UNI.
</Update>

<Update label="August 27, 2026" description="production-v0.1.10.0">
  ## Breaking changes

  * `from`/`to` on [`GET /v1/funding`](/api-reference/public/get-funding-payments) and [`GET /v1/fundingRates`](/api-reference/public/get-market-funding-rates) are epoch **microseconds**, matching the unit each response reports. Millisecond values are now rejected.

  ## API changes

  * New `market` filter (ticker or numeric id) on [`GET /v1/prices`](/api-reference/public/get-live-prices-for-all-markets), [`GET /v1/mids`](/api-reference/public/get-all-mid-prices), [`GET /v1/positions`](/api-reference/public/get-positions), [`GET /v1/leverages`](/api-reference/public/get-leverage-and-margin-mode-for-an-account-across-all-markets), and [`GET /v1/funding`](/api-reference/public/get-funding-payments); an unresolvable value returns 400.
  * New `status` filter on [`GET /v1/orders`](/api-reference/public/get-order-history) and [`GET /v1/openOrders`](/api-reference/public/get-open-orders): `OPEN`, `UNTRIGGERED`, `FILLED`, `CANCELED`, `REJECTED`, `LIQUIDATED`, `ADL`.
  * New `side` filter (`BUY`/`SELL`) on [`GET /v1/orders`](/api-reference/public/get-order-history) and [`GET /v1/fills`](/api-reference/public/get-fills). The `role` filter on `GET /v1/fills` now matches correctly.
  * `netDeposits` on [`GET /v1/account`](/api-reference/public/get-account) and the [`accounts`](/api-reference/channels#accounts) channel reports real lifetime net deposits.

  ## Order management

  * New [`POST /v1/scheduleCancel`](/api-reference/exchange/schedule-cancel-all-dead-mans-switch) dead man's switch: arm, refresh, or disarm a per-subaccount deadline; if it elapses the gateway fires `cancelAllOrders` for that subaccount.
  * [`GET /v1/positions`](/api-reference/public/get-positions) no longer returns 500 when the oracle price read times out.
  * Position rows and [`GET /v1/leverages`](/api-reference/public/get-leverage-and-margin-mode-for-an-account-across-all-markets) carry `marginMode` and `isolated`. When this release shipped both read `CROSS` and `false` for every account, as per-account isolated margin was not yet enabled in production; it has since been turned on (see the latest entry above).
  * Cancel + place: every modify emits CANCELED (cancelReason: MODIFY\_CANCELED) then the replacement outcome —PLACED, fills, orREJECTED— under the same orderId. Same-price size decreases keep queue priority. You can expect to see the cancel + place/fill messages on the same GSN but increasing account subsequence numbers for clarity about ordering. Cancels should always arrive first before any fills/place from the newly modified order.

  ## WebSocket / Order book

  * `market` filter on [`positions`](/api-reference/channels#positions), [`orders`](/api-reference/channels#orders), and [`userFills`](/api-reference/channels#userfills) subscriptions and on the `get` RPCs for `fills`, `orders`, `positions`, `leverages`, `mids`, and `prices`. It is part of subscription identity, so `unsubscribe` must repeat it.
  * [`userFills`](/api-reference/channels#userfills) subscribe accepts `nFills` (1–500, default 500) to bound the initial snapshot.
  * `isolated` and `marginMode` are always present on [`accountAttributeUpdates`](/api-reference/channels#accountattributeupdates) leverage entries.
  * A fill could produce a duplicate account snapshot with a repeated `lastSequenceId`, and an `AccountUpdate` could be applied twice when a snapshot was scheduled.

  ## Markets

  * CPER-USD, GME-USD, and QNT-USD are enabled and tradeable, having been listed offline in `production-v0.1.8`.
</Update>

<Update label="August 19, 2026" description="production-v0.1.8">
  ## API changes

  * New filters on [`GET /v1/orders`](/api-reference/public/get-order-history) and [`GET /v1/fills`](/api-reference/public/get-fills): a `market` param (ticker or numeric id, case-insensitive). `GET /v1/fills` also gets a `role` param (`MAKER`/`TAKER`). The same market filter works on [`GET /v1/markets`](/api-reference/public/get-markets).
  * [`GET /v1/apiKeys`](/api-reference/onboarding/get-api-keys) with no `accountIndex` now returns keys for all subaccounts under the address, each tagged with its own `accountIndex` (previously just the default one).

  ## Authentication

  * API keys can carry a `withdraw` permission, allowing [`POST /v1/withdraw`](/api-reference/exchange/submit-withdrawal) to be authorized with an Ed25519 API-key signature instead of a wallet signature. Keys created through the public [`POST /v1/createApiKey`](/api-reference/onboarding/create-api-key) remain trade-only.
  * [`POST /v1/createApiKey`](/api-reference/onboarding/create-api-key) and [`POST /v1/revokeApiKey`](/api-reference/onboarding/revoke-api-key) accept an optional single-use `nonce` for replay protection; a replayed nonce returns HTTP 409.

  ## Rate limits

  * [`GET /v1/openOrders`](/api-reference/public/get-open-orders) costs less against the account rate limit: the per-item charge is now one unit per 50 orders returned, down from one per 20, so a full page costs roughly 2.5× less budget.

  ## WebSocket / Order book

  * [`l2Orderbook`](/api-reference/channels#l2orderbook) subscriptions now support multiple simultaneous aggregation levels per market on one connection. Frames echo `sigFigs`/`roundStep` so views can be demultiplexed.
  * Order book snapshots now carry up to 300 price levels (raised cap).

  ## Markets

  * MRNA-USD, NBIS-USD, MRVL-USD, BOT-USD, and MSTR-USD enabled. CPER-USD, GME-USD, and QNT-USD listed at 10x leverage, offline.
</Update>

<Update label="August 7, 2026" description="production-v0.1.7">
  ## Market data

  * The mark price no longer holds a stale premium when the book is too thin to sample an impact mid. The 2.5-minute impact-mid EWMA previously froze at its last value for as long as depth was missing, then stepped when depth returned; it now decays toward the oracle price during regular trading hours, and toward the sealed RTH settlement price off-hours. Mark price is what margin, unrealized PnL, and liquidations are valued off, so a stale premium moved those too.

  ## Order management

  * Fixed a case where a closed position could still read as open. An entry fill and a stop-loss close landing in the same engine tick could be persisted out of order, leaving a flat position showing a size; closing it was then rejected with `REDUCE_ONLY_WOULD_INCREASE`. Position rows are now versioned by publish order.
  * Mark price stability during thin markets — The oracle now falls back to the oracle or settlement price when the orderbook is too thin to sample an impact-mid price, preventing mark price gaps during low-liquidity conditions.
  * Increased WebSocket frame buffer — The WebSocket server's maximum request body size has been increased from 64 KB to 1 MB, reducing connection errors for clients sending larger payloads.
  * More reliable position history — Fixed an edge case in position write ordering that could cause duplicate or out-of-order position records under high sequencer throughput.
</Update>

<Update label="August 6, 2026" description="production-v0.1.6">
  ## Breaking changes

  * `from`/`to` time bounds are now epoch **microseconds** on the endpoints whose timestamps are nanosecond-backed — [`GET /v1/openOrders`](/api-reference/public/get-open-orders), [`GET /v1/orders`](/api-reference/public/get-order-history), [`GET /v1/fills`](/api-reference/public/get-fills), [`GET /v1/trades`](/api-reference/public/get-recent-public-trades), and [`GET /v1/accountTransferUpdates`](/api-reference/public/get-account-transfer-updates). Millisecond values are rejected with HTTP 400. Clients that previously sent milliseconds must update.

  ## API changes

  * [`GET /v1/openOrders`](/api-reference/public/get-open-orders) is now bounded and paginated: `limit` (1–1000) plus `from`/`to` on `createdAt`. An account can hold up to 10,000 live orders, so more than one page may be needed.

  ## Authentication

  * API keys can be scoped to a non-zero subaccount index.

  ## WebSocket / Order book

  * `userFills` default snapshot size increased to 500.

  ## Market data

  * Fixed a race that could silently truncate [`GET /v1/candles`](/api-reference/public/get-ohlcv-candles) responses.
</Update>

<Update label="August 3, 2026" description="production-v0.1.5">
  ## Breaking changes

  * Deprecated `*Bps` fee-tier fields removed. Use `makerFeePpm`/`takerFeePpm` (and `maker_fee_ppm`/`taker_fee_ppm`); the values are unchanged.

  ## API changes

  * [`GET /v1/markets`](/api-reference/public/get-markets) exposes `minOrderSize` and `maxOrderSize` in base-asset units. `maxOrderSize` is a per-order gate — reduce-only orders are not exempt.
  * `pnlHistory` on [`GET /v1/portfolio`](/api-reference/public/get-portfolio-history) is rebased per timeframe, so each timeframe's first point is `0`.

  ## WebSocket / Order book

  * [`l2Orderbook`](/api-reference/channels#l2orderbook) accepts `sigFigs` (2–5) and `roundStep` (1, 2, or 5) to bucket price levels. Bids round down and asks round up, so the displayed spread is never tighter than the true book.
  * Off-hours trading-band shapes updated; `boundEvent` is now always present on delta entries, with `exitRth`/`enterRth` derived from RTH state.
  * Fee-tier account attribute updates now fan out to all subaccounts.
</Update>

<Update label="July 27, 2026" description="production-v0.1.4">
  ## API changes

  * [`GET /v1/prices`](/api-reference/public/get-live-prices-for-all-markets) omits OFFLINE markets.
  * [`GET /v1/markets`](/api-reference/public/get-markets) adds rolling 24-hour `high24h` / `low24h` fields.

  ## WebSocket / Order book

  * L2 order book now publishes every 200 ms.

  ## Order management

  * Fills carry a liquidation/ADL marker, and forced-closure status is consistent between live and persisted views.
</Update>

<Update label="July 23, 2026" description="production-v0.1.2">
  ## Breaking changes

  * Fee-tier fields renamed from bps to ppm.

  ## Market data

  * Spread filter applied to BBO candles.
</Update>

<Update label="July 22, 2026" description="production-v0.1.0-quiesce">
  ## Breaking changes

  * API-key create/revoke signing migrated to EIP-712, with a dual-accept window during which the legacy scheme still works.

  ## API changes

  * New [`POST /v1/transfer`](/api-reference/exchange/submit-internal-transfer) for internal transfers between subaccounts.
  * [`GET /v1/account/stats`](/api-reference/public/get-account-stats) is sectioned, with opt-in fixed 24h/7d/30d windows.
  * Optional `market` filter on [`GET /v1/fills`](/api-reference/public/get-fills).

  ## Authentication

  * API keys are scoped to `(address, publicKey)`, closing a cross-account revocation path.
  * Replayed withdrawal nonces are rejected at the gateway — a signed withdrawal is single-use.
  * API-key subaccount authorization enforced on `modifyOrder`.

  ## Order management

  * Maximum order size enforced at the gateway.
  * Per-market open-interest caps enforced in the engine.
  * TPSL handling corrected after trading-band expansion and liquidations.

  ## Market data

  * Fee-tier volume window widened from 14 to 30 days.
  * `priceChange24H` computed from mark price rather than trade fills.
  * Candles priced from mark price; no-trade buckets filled from the BBO mid.
  * Off-hours trading behavior reworked, including the EWMA anchor-price fallback.

  ## Referrals

  * 5% referral fee discount for referred users.
</Update>

<Update label="July 9, 2026" description="production-v0.0.9-skhy-cc">
  ## API changes

  * [`GET /v1/candles`](/api-reference/public/get-ohlcv-candles) serves oracle-priced candles, with oracle OHLC overlaid on no-trade gap buckets.
  * Affiliate info expanded and a code lookup endpoint added.

  ## Authentication

  * Ordersign signature verification enforced on REST `cancelOrder` and WebSocket `batchCancelOrders`.

  ## Order management

  * `reduceOnly` no longer requires `IOC` or `FOK`.

  ## Rate limits

  * `cancelAllOrders` charges zero IP budget.
  * `get`/`post` frames exempt from the WebSocket outbound-message rate limit.
</Update>

<Update label="July 1, 2026" description="production-v0.0.9">
  ## API changes

  * Exchange write responses return the account's remaining rate-limit allowance.
  * Rate-limit failures return the client id.

  ## Rate limits

  * Order-write endpoints cost zero against the IP bucket; the account-pool cost is configurable.

  ## WebSocket / Order book

  * `setLeverage` rejections are surfaced on the `accountAttributes` channel.

  ## Market data

  * SOFR-carry funding formula for RWA perps, quoted on the ACT/360 divisor.
  * Off-hours endpoints always advertise a distinct next trading bound.

  ## Order management

  * Off-hours partial-fill takers are rejected when the limit price violates the trading bound.
  * A resting order is preserved when a modify is rejected in pre-flight.
</Update>

<Update label="June 30, 2026" description="production-v0.0.8">
  ## Market data

  * Historical 1h and 1d candle volume was repaired for `2025-06-01` through `2026-06-30`. Those buckets had kept stale volume because the rollup only re-derived each aggregate forward from its newest stored bucket, so a 1m re-fetch never reached them. Re-pull any 1h/1d candles cached from that window.
</Update>

<Update label="June 29, 2026" description="production-v0.0.6">
  ## API changes

  * Unenforced fields removed from the [`GET /v1/markets`](/api-reference/public/get-markets) response.

  ## Market data

  * Funding formula corrected.
</Update>

<Update label="June 27, 2026" description="production-v0.0.4">
  ## API changes

  * Flat \$5 minimum order notional enforced.
  * Minimum withdrawal size of \$1 enforced.
  * Trading stat endpoints added.
  * Settlement price and trading bounds surfaced on the market endpoint; open interest added.

  ## Authentication

  * API keys upsert by name — re-creating with the same `apiWalletName` revokes the old key.
  * Wallet block-list enforced across the trade, withdraw, and key paths.

  ## Order management

  * Entry TPSL support, including rejecting `entryTpsl` children when the parent entry order is rejected.
  * Reduce-only margin check corrected.
</Update>

<Update label="June 21, 2026" description="production-v0.0.0">
  ## Initial mainnet release

  * First production release of the Arcus API at `https://api.arcus.xyz`.

  Releases `production-v0.0.1` through `production-v0.0.5` covered launch-period stabilization with no separately documented public API changes; `production-v0.0.7`, `production-v0.1.1`, and `production-v0.1.3` shipped no changes an API trader needs to act on.
</Update>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.