Skip to content
Nyria Docs

Connect tastytrade to Nyria

Step-by-step tastytrade sign-in setup: account selection, option spreads up to four legs, crypto spot, and the one HTTP header you must never send.

By the end you will have a tastytrade account connected to Nyria via OAuth, capable of placing single-leg, multi-leg up to 4 legs, and crypto-spot orders driven by your strategy alerts.

tastytrade connects live-only on Nyria. Nyria does not offer a paper tastytrade connection. The account type is fixed to Live and you are not asked. Validate the strategy on Nyria Paper first and watch a full alert-to-fill round-trip there before you point a real account at any webhook. Live-broker incidents are not refundable.

Prerequisites

  • A funded tastytrade account. Sign up at tastytrade.com if you don't have one yet.
  • A Nyria strategy you want to attach the broker to. If you don't have one, follow the Quick Start first.
  • An active Nyria subscription. Every tastytrade bot is a live bot, and live deployment requires a paid plan. See Pricing & Limits.
  • For options trading: tastytrade options approval at the level you want to trade. Multi-leg defined-risk spreads need approval level 3+ on tastytrade's side.
  • For crypto trading: tastytrade's crypto trading enabled on your account. This is a per-account opt-in inside the tastytrade portal. Nyria cannot turn it on for you.

See the tastytrade integration overview for the feature matrix and order-type support before you continue.

What you get after connecting

Once OAuth completes, the connection unlocks the following surfaces in Nyria:

CapabilityDetail
EquitiesStocks and ETFs, fractional shares supported.
OptionsSingle legs and multi-leg spreads up to 4 legs per order.
CryptoSpot only (BTC/USD, ETH/USD, etc.). No perpetual futures.
Order typesMarket and limit only.
Multi-accountEvery account under your login (individual, joint, IRA, entity) becomes selectable.

Step 1: Open the Integrations tab in Nyria

Sign in at app.nyria.io.

Click Integrations in the left sidebar.

Find the tastytrade card in the Brokers grid and click it.

If you got here from a lander deep-link or marketing email, you may land directly on the broker modal via ?brokerModal=tastytrade. That is the same modal; skip to Step 2.

Step 2: Confirm the account type

There is no paper/live choice here. tastytrade offers live only on Nyria, so the modal fixes the account type to Live and takes you straight to the authorization.

Everything past this point places real orders with real money. If you have not yet run this strategy end to end on Nyria Paper, stop and do that first.

Step 3: Complete the OAuth flow on tastytrade

Clicking Connect opens tastytrade's hosted OAuth consent page in a new tab.

Sign in with your tastytrade username and password if you are not already logged in. Nyria never sees these credentials. They go directly to tastytrade.

Review the requested scopes. Nyria asks for: read account list, read balances, read positions, place and cancel orders. There is no scope for funding transfers. Nyria cannot move money into or out of your account.

Click Authorize. tastytrade redirects back to https://app.nyria.io/integrations with the OAuth code, which Nyria exchanges server-side for an access + refresh token.

If the popup is blocked, allow popups for app.nyria.io and click Connect again. The OAuth state token is regenerated each click. There is no stale-state error from retrying.

Step 4: Confirm your accounts appear

After redirect, Nyria queries tastytrade's /customers/me/accounts endpoint and writes each returned account into user_broker_accounts. The success modal shows the count.

Wait for the Connected badge to appear next to the tastytrade tile. This usually takes 2-3 seconds.

Expand the integration card. Every account under your login appears as a row, with its account number (last 4 visible), type (margin, cash, IRA), and current buying power.

If an account is missing, close the card and reopen it. If it is still missing, the account is either closed at tastytrade or restricted in a way that hides it from the API.

Step 5: Attach a bot to a tastytrade account

A broker connection is not a bot. It is the prerequisite. Bots tie a strategy to a specific account.

Open a strategy from My Strategies.

Click Deploy Bot, then select your tastytrade account from the dropdown.

Set the Position Size, the maximum cash the bot allocates to each signal. Contract/share count is floor(position_size / per-contract cost), where the per-contract cost (the minimum_budget) is computed live by Nyria at execution time. A $1000 position size against a contract costing $250 produces 4 contracts.

Save the bot. It is now armed against the strategy's alerts.

Step 6: Send a live test order

tastytrade connects live-only, so there is no paper path here. This step spends real money in the account you connected.

Size this test at the smallest amount the instrument allows, and be ready to close it. Nyria does not close it for you. See Close a Position.

From the strategy's Integration tab, copy the webhook URL. It looks like https://trades.nyria.io/webhooks/<tokenHash>.

Send a test alert via curl. Replace <tokenHash> with your real token.

curl -X POST https://trades.nyria.io/webhooks/<tokenHash> \
  -H "Content-Type: application/json" \
  -d '{
    "symbol": "SPY",
    "action": "buy",
    "order_type": "market"
  }'

The fields above are the minimum Nyria needs to interpret a stock entry. For the full payload contract, including option symbols, multi-leg spreads, crypto, and exit semantics, see the Webhook Payload Reference.

Open the strategy's Logs tab. Within ~2 seconds you should see a row like BTO x1 SPY | Order ID 12345. That is your bot routing the order to tastytrade.

Open the tastytrade platform and confirm the position appears in your account, then close it when you are done.

Multi-leg options up to 4 legs

A Nyria strategy carries up to 4 legs, and the builder will not add a fifth. tastytrade's own API accepts more, but 4 is the limit that applies here. The converter rejects anything larger before placing.

A 4-leg iron condor payload looks like this:

{
  "symbol": "SPY",
  "action": "buy_to_open",
  "order_type": "limit",
  "limit_price": 1.25,
  "legs": [
    { "action": "sell_to_open", "symbol": "SPY 250620P 540", "ratio": 1 },
    { "action": "buy_to_open",  "symbol": "SPY 250620P 535", "ratio": 1 },
    { "action": "sell_to_open", "symbol": "SPY 250620C 560", "ratio": 1 },
    { "action": "buy_to_open",  "symbol": "SPY 250620C 565", "ratio": 1 }
  ]
}

Nyria pads OCC symbols to the 21-char format tastytrade expects automatically. If you send shorthand like SPY 250620P 540, the converter rewrites it to the padded form before submission.

Multi-leg exits must reference legs that are all currently open. If any leg of a spread has already closed or was never filled, Nyria refuses to send a partial exit that would leave a naked leg.

Crypto spot

tastytrade offers crypto spot only. Perpetual futures are not available on tastytrade, and no connectable broker on Nyria carries them today. Perpetual strategies run on Nyria Paper only.

Crypto pairs on tastytrade use USD, not USDT or USDC:

{
  "symbol": "BTC/USD",
  "action": "OPEN",
  "direction": "LONG",
  "order_type": "market"
}

Nyria normalizes parser-emitted BTC/USDT to BTC/USD for tastytrade transparently. Fractional quantities (0.0015 BTC) are supported. The entire decimal value survives the pipeline.

Token refresh expectations

tastytrade OAuth access tokens have a 15-minute TTL (token_ttl_seconds=900 in the trade-bot capability registry). Nyria refreshes them server-side on a rolling schedule. You should never see an auth error during normal operation.

What that means for you:

  • Connect once, forget. As long as the refresh token stays valid (90 days of inactivity tolerance on tastytrade's side), Nyria keeps the access token current.
  • Refresh failures surface in Integrations. If tastytrade revokes your refresh token (you changed your password, opted out of API access, or hit a server-side reset), the integration card flips to Reauthorize and the affected bots pause. Click Reconnect and run Step 3 again.
  • Long idle accounts: if you have not traded against the connection for over ~85 days, reconnect proactively before going live. Token rotation is silent on tastytrade's side until you try to use it.

The Accept-Version header: never send it

This is the one tastytrade quirk every integrator hits eventually. tastytrade's API accepts an optional Accept-Version HTTP header that pins the response shape to a specific API revision date. Do not send it.

# DO NOT do this
curl -H "Accept-Version: 20250812" https://api.tastyworks.com/orders/dry-run
# Returns: 406 — "The requested version is not supported"

tastytrade rotates supported versions on a per-endpoint basis. A date that works on /balances will return 406 Not Acceptable on /orders/dry-run the next day. Empirical probe on 2026-05-19: pinning 20250812 returned 200 on /balances but 406 on /orders/dry-run in the same session.

The correct approach (and what Nyria does internally) is to omit the header entirely. tastytrade then serves the current default version, which matches the public reference implementation and survives server-side rotations.

This only matters if you are building your own tastytrade client alongside Nyria. Nyria's broker layer already handles it. The trade-bot's tastytrade adapter explicitly comments this:

Accept-Version is intentionally NOT sent. TastyTrade treats it as opt-in
version pinning, and any date the server has rotated past returns 406 on
a per-endpoint basis. Omitting the header serves the current API version.

Troubleshooting

"401 Unauthorized" right after connecting

Most often this is the Bearer prefix on the Authorization header. tastytrade's OAuth flow requires Authorization: Bearer <access_token>. Raw token (no Bearer) is the older /sessions scheme and returns 401 against OAuth-protected endpoints. Nyria sends the prefix correctly. If you see this on your own client, that is the first thing to check.

"406 Not Acceptable" on order placement

You are sending the Accept-Version header. Remove it. See the section above.

Bot stays in "Reauthorize" forever

Your refresh token was revoked on tastytrade's side. Click Reconnect in Integrations and complete the OAuth flow from Step 3 again. The old token row is replaced; no manual cleanup is needed.

Order rejected with "insufficient buying power" on a credit spread

Credit spreads require margin equal to max loss, not the net credit. For a $5-wide vertical at $1.25 credit: required = (5 - 1.25) × 100 × contracts = $375 per contract. Confirm your account has that available before the alert fires.

Crypto pair "not found"

tastytrade's symbol is BTC/USD, not BTCUSDT or BTC-USD. Nyria converts automatically from the parser's normalized form, but if you are sending raw payloads, use the BTC/USD shape.

Account does not appear in the list

Closed accounts and accounts under regulatory restriction are hidden from the /customers/me/accounts endpoint by tastytrade. Confirm the account is open and unrestricted in the tastytrade portal, then close and reopen the card in Nyria.

What this integration does not support

Per Nyria's trading behavior policy, the following are intentionally not advertised as supported on tastytrade or any broker:

  • Bracket / OCO / OTO orders
  • Trailing stops
  • Attached take-profit legs

These are out of scope today. Build exits as separate alerts against the same strategy.

Crypto perpetual futures are also not available on tastytrade. That is a tastytrade product limitation, not a Nyria one. No connectable broker on Nyria carries perpetuals today either, so a perpetual strategy runs on Nyria Paper only.

Next steps