/changelog/rss.xml.
2026-09-02
Redesigned order quote responses
New API version
2026-09-02. See Versioning to migrate.POST /accounts/{account_id}/order-quotesno longer returns a single genericOrderQuoteobject. It returns a union discriminated onquote_type, with one variant per instrument and order mode:amc_market_cash,bill_market_cash,bond_fixed_coupon_market_cash,bond_zero_coupon_market_cash,etf_market_cash,etf_limit_cash,etf_market_quantity,etf_limit_quantity,mmf_market_cash, orsell. Switch onquote_typebefore reading a quote.- The flat economics fields moved under an
estimateobject and dropped theestimated_prefix:estimated_price,estimated_quantity, andestimated_cashare nowestimate.price,estimate.quantity, andestimate.cash.fees,net_cash_amount,max_cost, andmin_proceedsmoved underestimatetoo. Each variant only carries the fields that apply to it. instrumentis now the full instrument object instead of an ID string.
order_typeon every variant, indicating whether the quote is for a market or limit order.currencyon every variant.- Instrument-specific economics in
estimate:yield,annual_income, andaccrued_interestfor fixed income, plusnotional,cost,price_buffer_percentage, andasofwhere they apply. reservationobject on every variant with what a placement would set aside: a cash amount vs a unit quantity (amount,denomination).created_aton every variant.
additions
Enhanced idempotency key error handling
We now return more specific error codes when idempotency keys have conflicts or have expired, giving you better visibility into retry scenarios.Addedidempotency_key_conflicterror code when the Idempotency-Key was already used for a resource outside the scope of this request.idempotency_key_expirederror code when the Idempotency-Key was already used, and the resource it created is older than the replay window.
additions
Fee charge collection tracking and earnings breakdowns
Fee charges now track how much has been collected and what’s outstanding, and earnings responses include gross capital and income fields for finer-grained reporting.Addedcollected_amounton Retrieve a fee charge for the cash collected so far.outstanding_amounton Retrieve a fee charge for what’s still owed on the charge.collectionsarray on Retrieve a fee charge with a history of collection events per fee charge.gross_capitalon earnings responses for capital gains before fees and taxes.gross_incomeon earnings responses for income earnings before fees and taxes.
additions
Document references and confirmation type
Account documents can now point at the related order or object, and confirmation documents include anorder_confirmation type.Addedreferenceon List account documents responses for the order or object the document evidences (order ID for confirmations, null for period documents).order_confirmationonDocumentTypefor account document requests and responses.position_not_openerror code when you try to update a closed or closing position.
additions
additions
Enhanced fund details and fee variant support
We expanded ETF attributes to surface fund display metadata and currency details, and added a new endpoint to retrieve fees with their scoped variants.Added- New fields on ETF instrument responses:
display_name,headline,currency_sentence,rhp_years, andfund_base_currency. - Retrieve a fee endpoint to look up a specific fee by ID, including its variants.
variantsarray on Fee objects containing scoped fee variants per instrument, instrument type, portfolio type, or transaction type.
additions
OAuth token endpoint RFC 6749 compliance
ThePOST /auth/token endpoint now returns RFC 6749-compliant error responses
so you can distinguish between bad requests and authentication failures.Added401 Unauthorizedresponse for client authentication failures on Issue an OAuth token, with anOAuthErrorBodypayload following RFC 6749 §5.2.
400 Bad Requestresponse onPOST /auth/tokennow usesOAuthErrorBodyschema witherroranderror_descriptionfields (RFC 6749 §5.2) instead of the standard error envelope.
additions
Permissions and reference expansion
You can now query your effective permissions in the current realm, and we supportportfolio_transfer as a reference type for activity tracking.Added- List permissions to retrieve effective permissions for the authenticated actor, including scope and conditional details.
portfolio_transferenum value on reference types for tracking portfolio transfers.
additions
Identify the end person on each request
When a call concerns an end person, sendPerson-Id so we can attribute the
action for compliance. Client-User-Id is optional and helps with debugging.AddedPerson-Idrequest header for our person ID (per_…) you’re acting on behalf of. Send this whenever the request concerns an end person. See Attribution.- Optional
Client-User-Idrequest header for your own identifier of the same end user, for log correlation and support. - Error codes
person_id_too_longandclient_user_id_too_longwhen either header exceeds 255 characters.
additions
Fixed person reads
Fixed- Retrieve a person no longer returns
500when optional person columns are null in storage.
additions
More reliable valuation
Instrument responses carry more ETF detail, and account valuation reads are more consistent across price providers.Addedtrading_incrementon instrument responses.
GET /accounts/{account_id}/valuationuses the latest price per timestamp across providers.
- Unrealized earnings percentage on
GET /accounts/{account_id}/earningsno longer errors on zero cost basis.
additions
On-the-run bills and fixed-income pricing detail
You can look up the current on-the-run treasury bill per maturity period, and price responses now include accrued interest for bonds and bills.AddedGET /bills/otrto retrieve the on-the-run bill matrix for an issuer country. Periods with no matching bill are omitted.- ETF as an instrument type on List instruments and Retrieve an instrument.
accrued_interestonGET /pricesresponses.next_coupon_dateon fixed income instruments.
additions
Person creation and claim history
You can create persons directly and see the full claim audit trail by default when listing claims.Added- Create a person to create a person from claims with verification evidence. See Persons.
joint_customeras a customer type on Retrieve a customer.archived_atandlifecycleon person claim responses.- Idempotent onboarding submissions: a duplicate pending Submit an onboarding application returns
409 conflict.
- List claims for a person now defaults to
include_history=true(full audit trail, newest first). Pass?include_history=falseto collapse to the current pending and verified row per claim type. See Claims.
additions
Events, legal documents, and lifecycle webhooks
We added event polling, versioned legal document reads, and a broader set of webhook event types so you can react to orders, trades, positions, and accounts without polling.AddedGET /legal-documentsand related version and file download endpoints.- Retrieve a person claim.
- Webhook event types delivered to your registered endpoints:
order.placed,order.pending,order.executing,order.filled,order.settled,order.cancelled,trade.executed,trade.settled,position.opened,position.closing,position.closed,account.opened,account.suspended,account.activated,account.closing,account.closed, andcustomer.closed. See Webhooks.
POST /auth/tokenaccepts only theclient_credentialsgrant.purposeis required onPOST /signed-uploads.
additions
Event reads and webhook delivery
You can list events from the API, and we started delivering webhook payloads automatically with retries.Added- List events for tenant-scoped event reads.
- Automatic webhook delivery with retries for subscribed event types. See Deliveries.
2026-01-01
Initial API release
New API version
2026-01-01. See Versioning.2026-01-01.Added- Authentication with bearer tokens. See Authentication.
- Onboarding for persons, claims, and applications. See Onboarding.
- Trading, holdings, valuation, and payments endpoints across accounts.
- Webhooks with at-least-once delivery, signature verification, and automatic retries. See Webhooks.
- Idempotency support for write requests. See Idempotency.