Trading with SnapTrade
SnapTrade supports trading workflows for stocks, ETFs, other equities, options, futures, futures options, and crypto. The exact feature set depends on the connected brokerage or exchange, so you should always verify support for the account you are about to trade with.
🚧 Soft Rate Limit
We recommend limiting trade requests to 1 trade per second per account to maximize execution success.
Trading Overview
Most trading integrations with SnapTrade follow the same high-level flow:
- Create or upgrade a trading-enabled connection.
- Choose the brokerage account that will place the order.
- Build the order payload for the asset class you want to trade.
- Validate the order details in your application.
- Submit the order to the brokerage or exchange.
- Monitor execution status, and cancel the order if needed.
The sections below explain how that flow differs for equities, options, futures, and crypto. Monitor and Manage Orders covers the last step, which is the same for every asset class.
Confirm Order Details and Impact
Before submitting an order, show the account owner the order instructions, all available impact and fee information, the source of any estimates, and a clear confirmation action. A brokerage preview is not available for every supported trading workflow and is not a universal prerequisite for placing an order.
See Order impact and confirmation for confirmation requirements, recommended source labels and disclaimers, and guidance for orders without a reliable preview.
Set Up Trading Access
Create a Trading Connection
By default, connections are created with read-only permissions. To create a trading-enabled connection, set the connectionType body parameter to trade when calling .
If you want to request trading access when it is supported, but still allow the user to connect read-only accounts elsewhere, use connectionType=trade-if-available instead.
Enable Trading for an Existing Connection
To enable trading for an existing read-only connection, ask the user to re-authorize access:
- Set the
reconnectbody parameter to the ID of the existing connection. - Set
connectionType=tradewhen calling . - Direct the user to the re-authorization URL that SnapTrade returns.
Stocks, ETFs, and Other Equities
Use the standard trading endpoints for single-leg equity orders.
Typical Equity Workflow
- Identify the account that will place the order.
- Identify the instrument using its brokerage
symbol. This is the recommended identifier when placing orders. - Build the order details:
action:BUYorSELLorder_type: for exampleMarket,Limit,Stop, orStopLimittime_in_force: for exampleDayorGTCunitsfor share quantity, ornotional_valuewhen supported
- Validate the order details in your application before submission.
- Submit the order with .
For most use cases, it is better to validate the order in your own application and then place it directly with . If you need SnapTrade to simulate the order impact before submission, you can use and then submit the returned tradeId with , but this is usually not the primary workflow we recommend.
Extended-Hours Equity Trading
Extended-hours trading is brokerage-specific and only available when both the account and the instrument support it.
To request extended-hours execution:
- Set
trading_session="EXTENDED"in the order payload. - Use a
LIMITorder with an appropriate time-in-force. - Expect brokerage-specific restrictions. Many brokerages only allow
DAYorders for extended-hours trading, while some also allowGTC.
Options
SnapTrade supports both single-leg option orders and multi-leg option strategies, but support is narrower than it is for equities.
Single-Leg Option Orders
Single-leg option orders use the same endpoint as multi-leg option orders, but with a single leg.
- Build the order for , providing only a single leg.
- Provide
instrument.symbolwith an OCC format. - Use an option action such as
BUY_TO_OPEN,BUY_TO_CLOSE,SELL_TO_OPEN, orSELL_TO_CLOSE. - Set
unitsto the number of option contracts. - Validate the order details in your application and submit the order with .
This is the right workflow for straightforward option buys and sells where the order has only one leg.
Multi-Leg Option Strategies
For spreads, condors, and other multi-leg strategies, use .
The multi-leg payload lets you submit:
- an
order_type - a
time_in_force - a
price_effectsuch as debit or credit - a
legsarray containing the option instruments, actions, and contract quantities
Because brokerages often report each leg separately, downstream order history can appear as multiple records for a single multi-leg submission. The newer order endpoints return a multi-leg order as a single order with a legs list.
Futures and Futures Options (Beta)
🚧 Beta
Futures and futures options trading is in beta. The endpoint and its request format may change. If you use an SDK, update to the latest version before you start.
Futures and futures options are placed with . It takes one request format for equities, equity options, futures, and futures options, but it is the only endpoint that supports futures and futures options.
Supported Brokerages
Futures and futures options trading is rolling out one brokerage at a time, and futures options are not available everywhere futures are. See the SnapTrade Institution Support guide for the brokerages that currently support each one.
Typical Futures Workflow
- Identify the account that will place the order. It must be on a trading-enabled connection to a supported brokerage, and the account must be approved for futures at the brokerage.
- Find the contract. Call with the brokerage slug to pull the futures and futures options available at that brokerage, and take the
symbolof the contract you want to trade. - Build the order details:
order_type:market,limit,stop, orstop_limittime_in_force: for exampledayorgtclimit_priceandstop_price, as required by the order typelegs: one entry per leg, each with aninstrument, anaction, andunits
- Validate the order details in your application before submission.
- Submit the order with .
- Store the
brokerage_order_idfrom the response. It is the only field returned, so use it to check the order's status.
All string values in the request are lower snake_case and case-sensitive, and prices and quantities are sent as decimal strings.
This example buys one E-mini S&P 500 December 2026 contract on tastytrade once the price reaches 6000.00, with a limit of 6000.25.
Legs, Actions, and Quantities
Each leg sets instrument.kind to future or future_option:
- Futures use the
buyandsellactions. - Futures options use
buy_to_open,buy_to_close,sell_to_open, andsell_to_close. unitsis a positive whole number of contracts. Fractional quantities are not supported.
A single order cannot mix futures or futures options legs with equity or equity option legs.
Futures Symbols
Futures symbols are not normalized between brokerages. Pass the symbol in the brokerage's own format, exactly as written, including any prefix and spaces:
Always name a specific contract. Root-only and continuous symbols such as @ES are not accepted on TradeStation or Webull, and neither are slash-prefixed aliases. Universal symbol IDs are not accepted for futures on any brokerage.
Brokerage-Specific Limits
- tastytrade: single-leg futures orders, and futures options orders with up to four legs. Multi-leg orders cannot be market orders, and multi-leg
limitandstop_limitorders must setprice_effecttocreditordebit. - TradeStation: single-leg futures and futures options orders only.
time_in_forcecan beday,gtc,ioc, orfok, depending on the contract and route. - Webull US: single-leg futures orders only.
time_in_forcecan bedayorgtc.
These limits apply on every supported brokerage:
gtdorders andtrading_session="extended"are not available for futures or futures options.- Trailing stop orders are not supported.
- SnapTrade forwards prices without rounding. The brokerage decides contract availability, permissions, margin requirements, and valid price increments, and rejects orders that do not meet them.
Crypto
SnapTrade supports specialized crypto trading endpoints for some exchanges such as Kraken, Binance, and Coinbase.
Crypto trading uses tradable asset pairs represented as BASE-QUOTE. The action determines the direction of the trade:
- On a
BUY, the base asset is what you are buying and the quote asset is what you are spending. - On a
SELL, the base asset is what you are selling and the quote asset is what you are receiving.
Typical Crypto Workflow
- Use to find the tradable pairs for the connected account.
- If needed, filter by
baseorquotebecause exchanges can support different pairs and sometimes different tickers for the same asset. - Use to retrieve a quote for the pair. Quote values are returned in units of the quote asset.
- Validate the order details in your application.
- Submit the order with .
When placing a crypto order, set the instrument.symbol to the trading pair and the instrument.type to CRYPTOCURRENCY_PAIR. The amount is the quantity of the base asset to buy or sell.
For most crypto integrations, validating the request in your own application is simpler than relying on the preview endpoint. If you need an exchange-side preview, is available.
In this example, the order buys 0.01 ETH with EUR.
Monitor and Manage Orders
A successful submission does not mean the order has filled. After placing an order, use the brokerage order ID returned by the submission to follow it.
🚧 Beta
The order endpoints in this section are in beta, and their response schema may change. They replace the earlier order endpoints, such as , and are the ones we recommend for new integrations.
All three order endpoints return the same order format, for every asset class:
- Every order has a
legslist with at least one leg. A multi-leg order is a single order with several legs, not one record per leg. - Each leg's
instrumentis discriminated bykind, for examplefutureorfuture_option. Checkinstrument.kindto know which fields are present. order_typeis an object discriminated bykind, and each kind carries only the price fields that apply to it.statusreports where the order stands, for examplePENDING,PARTIALLY_EXECUTED,EXECUTED,CANCELED, orREJECTED.price_effectisnullfor orders that contain a futures leg, because a futures price is a contract quote and not an upfront cash flow. Futures options keep their price effect.
Brokerage Support
Not every brokerage supports every trading workflow. Extended-hours sessions, multi-leg options, futures, futures options, and crypto trading are all institution-specific. Review the SnapTrade Institution Support guide before enabling a feature in production.