Experimental endpoints

Place a simple order (beta)

Changed on

Beta. Places a single-leg or multi-leg order using a common request format for equities, equity options, futures, and future options. This endpoint is experimental; breaking changes are possible during the experimental phase.

Equity and equity-option orders use the existing brokerage trading capabilities. Futures and future options are currently supported only on tastytrade. Order types, time in force, optional fields, and strategy combinations remain subject to brokerage support. See the brokerage trading support page.

An order may contain equity/option legs or future/future_option legs, but cannot mix those two families. Equity/option strategies must share the same underlying symbol. Each strategy is submitted as one brokerage order; unsupported strategies are never split into independent orders. Tastytrade supports single-leg outright futures and up to four future-option legs, and does not support multi-leg market orders.

All string choices use lower snake_case and are case-sensitive. Symbols retain their native format: equity tickers, OCC equity-option symbols, or the exact tastytrade BrokerageInstrument ticker for futures and future options, including any spaces.

A successful response contains only the brokerage order ID. Use the existing order endpoints to retrieve order details.

post/accounts/{accountId}/trading/simple

Request

  • Base URL
    https://api.snaptrade.com
  • URL
    https://api.snaptrade.com/accounts/{accountId}/trading/simple
  • Auth
    API key in header Signature and API key in query parameter clientId and API key in query parameter timestamp

Path parameters

accountIdstring uuid required

Unique identifier for the connected brokerage account. This is the UUID used to reference the account in SnapTrade.

Example:917c8734-8470-4a3e-a18f-57c3f2ee6631

The ID of the account to execute the trade on.

Query parameters

userIdstring required

SnapTrade User ID. This is chosen by the API partner and can be any string that is a) unique to the user, and b) immutable for the user. It is recommended to NOT use email addresses for this property because they are usually not immutable.

Example:snaptrade-user-123
userSecretstring required

SnapTrade User Secret. This is a randomly generated string and should be stored securely. If compromised, please rotate it via the rotate user secret endpoint.

Example:adf2aa34-8219-40f7-a6b3-60156985cc61

Request body

order_type'limit' | 'market' | 'stop' | 'stop_limit' required
time_in_force'day' | 'gtc' | 'gtd' | 'fok' | 'ioc' required

Order duration, subject to brokerage and execution-path support. gtd requires expiry_date and a non-market single-leg equity/option order. Existing single-leg option routing does not support ioc. Futures and multi-leg orders do not support gtd through this endpoint.

limit_pricestring decimal nullable

A finite decimal, supplied as a decimal string to preserve precision.

stop_pricestring decimal nullable

A finite decimal, supplied as a decimal string to preserve precision.

price_effect'credit' | 'debit' | 'even' nullable

Only applicable to multi-leg limit and stop_limit orders. Requirements and supported values depend on the brokerage; tastytrade requires credit or debit. even implies a zero limit_price, which may be omitted and must be zero if supplied. Single-leg price effects are derived from the action.

client_order_idstring uuid nullable

Optional caller-supplied identifier passed through to the brokerage for idempotent order placement. Must be a canonical 36-character UUID. Idempotency enforcement is brokerage-specific - SnapTrade forwards this value to the broker but does not enforce uniqueness server-side. Refer to per-brokerage documentation for behavior on duplicate submission.

expiry_datestring date-time nullable

ISO 8601 expiry timestamp, required for gtd and invalid with other durations. A missing timezone is treated as UTC. Supported only through existing single-leg Public and Sandbox execution paths.

notional_valuestring decimal nullable

A finite decimal, supplied as a decimal string to preserve precision.

trading_session'regular' | 'extended'

extended uses existing single-leg equity/option brokerage support and requires extended-hours enablement. Futures and multi-leg orders only accept regular.

Example request

{
  "order_type": "stop_limit",
  "time_in_force": "day",
  "legs": [
    {
      "instrument": {
        "kind": "future",
        "symbol": "/ESZ6"
      },
      "action": "buy",
      "units": "1.25"
    }
  ],
  "limit_price": "1.25",
  "stop_price": "1.25",
  "price_effect": "debit",
  "client_order_id": "550e8400-e29b-41d4-a716-446655440000",
  "expiry_date": "2026-12-18T20:00:00Z",
  "notional_value": "1.25",
  "trading_session": "regular"
}

Response

Order placed

brokerage_order_idstring required

The brokerage-assigned ID of the submitted order.

Example response

{
  "brokerage_order_id": "123456"
}

Changes

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from string to no type for status

    • breaking

      the response's property type changed from no type to string for status

    • breaking

      the response's property type changed from no type to string for status

    • breaking

      the response's property type changed from no type to string for status

    • breaking

      the response's property type changed from no type to string for status

    • breaking

      the response's property type changed from no type to string for status

    • breaking

      the response's property type changed from no type to string for status