Skip to main content
Get from zero to a filled order in five minutes. This walkthrough assumes you already have a Tradara firm API key (tdr_live_…). If you don’t, ask your account contact or generate one from the firm dashboard.

1. Set environment variables

All examples use the same placeholders. Export them once:
Firm API keys are scoped to your firm automatically. You do not need to send X-Firm-ID for the Trading API — the gateway injects it from the key.

2. Provision a trader account

Call POST /v1/firm-control/accounts to create an evaluation or funded account for a trader. The response contains the account_id you’ll use for every Trading API call. Optional idempotency_key and price_paid record the purchase id and the amount paid.
Save one of the returned IDs:

3. Place a market order

Send a buy market order with an Idempotency-Key so the request is safe to retry.
The response returns an order_id. The order moves through the lifecycle described in Order status lifecycle and will be filled asynchronously.

4. Read the fills

Once the order fills, the execution-level rows show up in the fills service.
For low-latency consumers, subscribe to the firm WebSocket and filter for (account_id, fills.created) instead of polling. See Realtime overview.

5. Check the balance

The balances service returns equity, cash, margin, and unrealized P&L:

Where to go next

Authentication

Firm API keys, JWT, idempotency, and route restrictions.

Place an order

All execution types, time in force, and conditional fields.

Provision accounts

The full provisioning request and response.

Realtime stream

Subscribe to firm-wide order, fill, and risk events.

Instrument IDs

The Trading API takes a UUID instrument_id, not a ticker symbol. Firm API keys cannot query /v1/instruments. To get IDs:
  • Pull them from the instrument list shared during onboarding.
  • Query Instrument Master with a staff JWT (terminal session).
  • Cache the UUID per product in your integration.
Futures product symbols use a leading slash in display names (e.g. /ES, /MES), but the API always identifies them by UUID.