# Can an AI agent trade through the Tradier API?

preview=true on the [place-order call](https://docs.tradier.com/reference/brokerage-api-trading-place-order) validates the order without submitting it. A script sends that call with a bearer token to the [production host](https://docs.tradier.com/docs/trading) or the [sandbox host](https://docs.tradier.com/docs/trading). Tradier also publishes an [MCP server](https://docs.tradier.com/docs/tradier-mcp) that includes order tools. Use the sandbox host before a [live token](https://docs.tradier.com/docs/trading). Checked 2026-10-20.

Checked on 2026-10-20. No business relationship with Tradier.

Paper first. Not financial advice.

## How should an agent preview, place, and confirm a Tradier order?

Send the same order with [preview=true](https://docs.tradier.com/docs/trading), and send it again with preview=false only after the preview returns result true. A [200](https://docs.tradier.com/docs/trading) on the place call means the order was received, not filled. Read the order back with the [order-status call](https://docs.tradier.com/docs/trading) and confirm it is open, partially filled, or filled rather than rejected or canceled.

The [trading guide](https://docs.tradier.com/docs/trading) says each trading request sends `Authorization: Bearer <YOUR_TOKEN>`, `Accept: application/json`, and `Content-Type: application/x-www-form-urlencoded`. The production base URL on that page is `https://api.tradier.com/v1`. The sandbox base URL is `https://sandbox.tradier.com/v1`. The account id comes from the user profile endpoint. The [FAQ](https://docs.tradier.com/docs/faq) says a personal token from https://web.tradier.com/user/api does not expire. It says partner OAuth tokens expire in 24 hours, and that OAuth is not enabled for a brokerage user's personal API access.

Order class on the [trading guide](https://docs.tradier.com/docs/trading): equity, option, multileg, combo, oto, oco, otoco. Equity type: market, limit, stop, stop_limit. Duration: day, gtc, pre, post. Multileg type on that page: market, debit, credit, even. Equity side: buy, sell, sell_short, buy_to_cover. Option side: buy_to_open, sell_to_open, buy_to_close, sell_to_close. The [FAQ](https://docs.tradier.com/docs/faq) says Tradier supports US-based equities and options data only, including US-based ETFs.

The [place-order schema](https://docs.tradier.com/reference/brokerage-api-trading-place-order) says `preview` true "validates the order without submitting it", and it lists `preview` as required. The [trading guide](https://docs.tradier.com/docs/trading) place examples omit `preview`. Its workflow is: preview with `preview=true`; if `result` is true, submit the same payload with `preview=false`; then poll `GET /v1/accounts/{account_id}/orders/{order_id}`. A 200 on submit means the API call was correct and the order was received. The order can still be rejected. Status values on that page: pending, open, partially_filled, filled, expired, canceled, rejected, pending_cancel. The same page says a cancel that returns 200 should be followed by a status check for `canceled`, and that only an open or pending order can be changed.

This is the preview request printed on the trading guide. The account id is the sample on that page.

```
curl -X POST "https://api.tradier.com/v1/accounts/6YA00001/orders" \
  -H "Authorization: Bearer <YOUR_TOKEN>" \
  -H "Accept: application/json" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "class=equity&symbol=AAPL&side=buy&quantity=10&type=market&duration=day&preview=true"
```

The sample response on that page includes `"status": "ok"` and `"result": true`. Use it as the sample shape. Do not reuse the sample prices.

Tradier also documents streaming. [HTTP streaming](https://docs.tradier.com/reference/http-streaming) uses https://stream.tradier.com and says you have up to 5 minutes to connect after the session id is issued. The [streaming overview](https://docs.tradier.com/reference/streaming) says a stream of very inactive symbols closes after 15 minutes with no data, and that the client should implement reconnection logic. [Account streaming](https://docs.tradier.com/docs/account-streaming-responses) returns an order event when an order is received and when the status changes. The [FAQ](https://docs.tradier.com/docs/faq) says there is no delayed streaming endpoint for paper trading.

The [MCP docs](https://docs.tradier.com/docs/tradier-mcp) list order tools: place_equity_order, place_option_order, place_multileg_option_order, place_oco_order, place_oto_order, place_otoco_order, and cancel_order. Paper on that page is the paper token with PAPER_TRADING true. Live is the production token with PAPER_TRADING false. The server URL written there is https://mcp.tradier.com/mcp. The ChatGPT and Claude web steps put the API key in the query string. The Claude Code, Gemini CLI, and Cursor steps send API_KEY and PAPER_TRADING as headers. The [develop page](https://tradier.com/develop/mcp-server) is Tradier's page for that same server. Do not paste a token into the chat.

## Does Tradier have a paper trading sandbox?

Yes. Tradier says brokerage account holders can create a [paper account](https://docs.tradier.com/docs/faq) from the web UI, or call any endpoint on the sandbox host. Sandbox market data is delayed [15 minutes](https://docs.tradier.com/docs/faq). There is no delayed [streaming endpoint](https://docs.tradier.com/docs/faq) for paper trading. In production, index data is also delayed 15 minutes.

The [FAQ](https://docs.tradier.com/docs/faq) says all brokerage account holders can create a paper trading account from the web UI account drop-down, or by calling any endpoint with the sandbox.tradier.com/v1 prefix. It says sandbox market data is delayed the industry-standard 15 minutes. It says production index data is also delayed 15 minutes. It says Tradier does not offer a delayed streaming endpoint for paper trading. The [trading guide](https://docs.tradier.com/docs/trading) says the sandbox supports the full trading API with paper money and delayed market data, and to test order logic there before live.

## What are Tradier API rate limits?

Each limit is per [access token](https://docs.tradier.com/docs/rate-limiting), aggregated over one minute from the first request. Production allows [120](https://docs.tradier.com/docs/rate-limiting) a minute for standard and market-data calls, and 60 for trading calls. Sandbox allows 60 a minute in each group. Standard calls exclude [placing an order](https://docs.tradier.com/docs/rate-limiting). Tradier says it [most likely](https://docs.tradier.com/docs/faq) will not raise a limit.

The [rate-limit page](https://docs.tradier.com/docs/rate-limiting) says each limit is enforced by the minute, per access token. It says the window aggregates over 1-minute intervals starting with the first request and resets "1 minute late".

| Bucket | What it counts | Production | Sandbox |
| --- | --- | --- | --- |
| Standard | /accounts, /watchlists, /users, and /orders. This does not include placing orders. | 120 requests per minute | 60 requests per minute |
| Market data | /markets | 120 requests per minute | 60 requests per minute |
| Trading | Resources in the trade scope. | 60 requests per minute | 60 requests per minute |

Those three rows are the [rate-limit page](https://docs.tradier.com/docs/rate-limiting). On each limited response that page returns `X-Ratelimit-Allowed`, `X-Ratelimit-Used`, `X-Ratelimit-Available`, and `X-Ratelimit-Expiry`. Those headers show remaining requests and when the window ends. The same page names the streaming API as the alternative to polling quotes. The [FAQ](https://docs.tradier.com/docs/faq) answers "Will you increase the rate-limits for my application?" with "Most likely not."

## Which extended-hours orders will Tradier reject?

The [getting-started page](https://docs.tradier.com/reference/trading-getting-started) sets pre at 7:00 a.m. to 9:24 a.m. ET and post at 4:00 p.m. to 7:55 p.m. ET. Only [equity limit](https://docs.tradier.com/reference/trading-getting-started) orders are allowed. They expire when that session ends, and you cannot place them outside the window. An [OTO first leg](https://docs.tradier.com/docs/trading) cannot be a market order.

Three Tradier pages name the pre and post windows, and they do not use the same post-close string.

- [Getting started](https://docs.tradier.com/reference/trading-getting-started): pre is "7:00AM ET to 9:24AM ET". Post is "4:00PM ET to 7:55PM ET".
- [Trading guide](https://docs.tradier.com/docs/trading): pre is 7:00 AM to 9:24 AM. Post is 4:00 PM to 7:55 PM. The page says these times are EST. Its pre example is `class=equity`, `type=limit`, `duration=pre`.
- [Reference trading](https://docs.tradier.com/reference/trading): pre is "7:00AM EST to 9:24AM EST". Post is "4:00PM EST to 19:55PM EST".

The [getting-started page](https://docs.tradier.com/reference/trading-getting-started) and the [reference page](https://docs.tradier.com/reference/trading) both list the same four limits: only equity orders are permitted; the order type must be limit; orders placed in the session expire at the end of the session; you cannot place a pre or post order outside the session window.

The [trading guide](https://docs.tradier.com/docs/trading) says an OTO first leg must be limit, stop, or stop_limit, not market. It says the second leg can be market, limit, stop, or stop_limit. The [place-order schema](https://docs.tradier.com/reference/brokerage-api-trading-place-order) lists OTO and OTOCO `type[0]` as limit, stop, or stop_limit. It lists OCO `type[0]` and `type[1]` as limit, stop, or stop_limit. The trading guide says the two OCO legs must use different type values. The OTOCO schema enum for `type[1]` includes market, while that field's description lists limit, stop, and stop_limit.

## What should the agent stop and ask?

Stop if [preview](https://docs.tradier.com/docs/trading) was skipped, if pre or post is not an equity limit, or if that order sits outside the session window. Stop if an OTO first leg is market, if a token would be pasted into chat, or if a 200 is treated as a fill. Then paste the order into the [order check](/check).

1. Do not paste a bearer token, a paper token, or an API key into the chat.
2. Do not send a production token to the sandbox host, or a sandbox token to the production host. The [trading guide](https://docs.tradier.com/docs/trading) lists 401 as "Missing or invalid token, or toke/url mismatch."
3. Do not skip `preview=true` unless the operator accepts a skip the [trading guide](https://docs.tradier.com/docs/trading) already names. That page says preview is recommended and not required, and that algorithmic trading is a case where previewing first is unreasonable.
4. Do not treat HTTP 200 on place or cancel as a fill or a finished cancel. Read the order status.
5. Do not send duration `pre` or `post` unless the class is equity and the type is limit ([getting started](https://docs.tradier.com/reference/trading-getting-started)).
6. Do not send a pre or post order outside the session window on those pages.
7. Do not expect a pre or post order to remain working after that session ends.
8. Do not set an OTO first leg to market ([trading guide](https://docs.tradier.com/docs/trading)). The [place-order schema](https://docs.tradier.com/reference/brokerage-api-trading-place-order) lists the same limit, stop, or stop_limit set for OTO and OTOCO `type[0]`.
9. Do not treat sandbox quotes as live. The [FAQ](https://docs.tradier.com/docs/faq) says they are delayed 15 minutes, and that paper trading has no delayed streaming endpoint.
10. Do not apply the production 120-per-minute standard bucket to order placement or to the sandbox. That bucket does not include placing an order. The trading limit is 60 per minute ([rate limits](https://docs.tradier.com/docs/rate-limiting)).
11. Paste the order into the [order check](/check) before a live send. The reject list is the [guardrails guide](/guides/ai-agent-trading-guardrails). The [kill switch](/guides/ai-trading-bot-kill-switch) sits outside the agent. The [paper trading guide](/guides/ai-agent-paper-trading) is the ladder before a live token.

## Next step

The weekly broker note is the [newsletter](/subscribe?utm_source=guide&utm_campaign=tradier-guide).

Free packs are on [skills](/skills). The paid pack is the [Desk Kit](/desk-kit).

## Questions people ask

### Can an AI agent trade through the Tradier API?

preview=true on the [place-order call](https://docs.tradier.com/reference/brokerage-api-trading-place-order) validates the order without submitting it. A script sends that call with a bearer token to the [production host](https://docs.tradier.com/docs/trading) or the [sandbox host](https://docs.tradier.com/docs/trading). Tradier also publishes an [MCP server](https://docs.tradier.com/docs/tradier-mcp) that includes order tools. Use the sandbox host before a [live token](https://docs.tradier.com/docs/trading). Checked 2026-10-20.

### How should an agent preview, place, and confirm a Tradier order?

Send the same order with [preview=true](https://docs.tradier.com/docs/trading), and send it again with preview=false only after the preview returns result true. A [200](https://docs.tradier.com/docs/trading) on the place call means the order was received, not filled. Read the order back with the [order-status call](https://docs.tradier.com/docs/trading) and confirm it is open, partially filled, or filled rather than rejected or canceled.

### Does Tradier have a paper trading sandbox?

Yes. Tradier says brokerage account holders can create a [paper account](https://docs.tradier.com/docs/faq) from the web UI, or call any endpoint on the sandbox host. Sandbox market data is delayed [15 minutes](https://docs.tradier.com/docs/faq). There is no delayed [streaming endpoint](https://docs.tradier.com/docs/faq) for paper trading. In production, index data is also delayed 15 minutes.

### What are Tradier API rate limits?

Each limit is per [access token](https://docs.tradier.com/docs/rate-limiting), aggregated over one minute from the first request. Production allows [120](https://docs.tradier.com/docs/rate-limiting) a minute for standard and market-data calls, and 60 for trading calls. Sandbox allows 60 a minute in each group. Standard calls exclude [placing an order](https://docs.tradier.com/docs/rate-limiting). Tradier says it [most likely](https://docs.tradier.com/docs/faq) will not raise a limit.

### Which extended-hours orders will Tradier reject?

The [getting-started page](https://docs.tradier.com/reference/trading-getting-started) sets pre at 7:00 a.m. to 9:24 a.m. ET and post at 4:00 p.m. to 7:55 p.m. ET. Only [equity limit](https://docs.tradier.com/reference/trading-getting-started) orders are allowed. They expire when that session ends, and you cannot place them outside the window. An [OTO first leg](https://docs.tradier.com/docs/trading) cannot be a market order.

### What should the agent stop and ask?

Stop if [preview](https://docs.tradier.com/docs/trading) was skipped, if pre or post is not an equity limit, or if that order sits outside the session window. Stop if an OTO first leg is market, if a token would be pasted into chat, or if a 200 is treated as a fill. Then paste the order into the [order check](/check).

## Sources checked

Checked on 2026-10-20.

- [Tradier trading guide](https://docs.tradier.com/docs/trading)
- [Tradier getting started](https://docs.tradier.com/reference/trading-getting-started)
- [Tradier reference trading](https://docs.tradier.com/reference/trading)
- [Place order](https://docs.tradier.com/reference/brokerage-api-trading-place-order)
- [Rate limiting](https://docs.tradier.com/docs/rate-limiting)
- [Tradier API FAQ](https://docs.tradier.com/docs/faq)
- [Tradier MCP](https://docs.tradier.com/docs/tradier-mcp)
- [Tradier MCP develop page](https://tradier.com/develop/mcp-server)
- [HTTP streaming](https://docs.tradier.com/reference/http-streaming)
- [Streaming](https://docs.tradier.com/reference/streaming)
- [Account streaming responses](https://docs.tradier.com/docs/account-streaming-responses)
- [Agent Order Check](/check)
- [Kill switch](/guides/ai-trading-bot-kill-switch)
- [Guardrails](/guides/ai-agent-trading-guardrails)
- [Paper trading](/guides/ai-agent-paper-trading)
- [Broker connectors](/guides/broker-ai-connectors)

Educational only. Not financial advice.

Free check: https://theagentictrader.com/check?utm_source=md&utm_medium=agent&utm_campaign=guides-ai-agents-for-tradier
Weekly note on broker and agent changes: https://theagentictrader.com/subscribe?utm_source=md&utm_medium=agent&utm_campaign=guides-ai-agents-for-tradier
Desk Kit, $79 one-time. Full refund within 7 days: https://theagentictrader.com/desk-kit?utm_source=md&utm_medium=agent&utm_campaign=guides-ai-agents-for-tradier
