Tradier · AsyncAPI Specification

Tradier Streaming WebSocket API

Version 1.0.0

AsyncAPI 2.6 description of Tradier's WebSocket streaming for market events and account events. A streaming session must first be created via the brokerage REST endpoints (POST /v1/markets/events/session for market data and POST /v1/accounts/events/session for account data), which return a short-lived sessionid used to authenticate the WebSocket connection. Session identifiers are valid for up to 5 minutes prior to connection. Only one streaming session may be open at a time per user.

View Spec View on GitHub FintechTradingStocksOptionsBrokerageStreamingAsyncAPIWebhooksEvents

Channels

/v1/markets/events
publish subscribeMarketEvents
Send a market data subscription request.
Market events streaming channel. After connecting the client sends a JSON subscription payload referencing a sessionid acquired from POST /v1/markets/events/session. The server then streams one or more of the requested payload types (quote, trade, summary, timesale, tradex). The subscription may be modified mid-stream by sending a new payload with the same sessionid.
/v1/accounts/events
publish subscribeAccountEvents
Send an account events subscription request.
Account events streaming channel. After connecting the client sends a JSON subscription payload referencing a sessionid from POST /v1/accounts/events/session and the desired event types (currently "order"). The server streams order lifecycle events and periodic heartbeats. Streams may only target either live or sandbox accounts within a session.

Messages

MarketSubscription
Market Data Subscription Request
Client request to begin or modify a market data stream.
Quote
Quote Event
Bid/ask quote update for a symbol.
Trade
Trade Event
Executed trade event for a symbol.
Summary
Summary Event
Session open, high, low, or previous close update.
Timesale
Timesale Event
Time and sales tick for a symbol.
Tradex
Tradex Event
Extended trade event recommended for pre and post market sessions in place of the trade payload.
AccountSubscription
Account Events Subscription Request
Client request to begin streaming account events.
OrderEvent
Order Event
Order lifecycle event for a streamed account.
Heartbeat
Heartbeat Event
Stream keep-alive heartbeat.

Servers

wss
production-market ws.tradier.com/v1/markets/events
Production WebSocket endpoint for market events streaming.
wss
production-account ws.tradier.com/v1/accounts/events
Production WebSocket endpoint for account events streaming.

AsyncAPI Specification

Raw ↑
asyncapi: '2.6.0'
info:
  title: Tradier Streaming WebSocket API
  version: '1.0.0'
  description: >-
    AsyncAPI 2.6 description of Tradier's WebSocket streaming for market
    events and account events. A streaming session must first be created
    via the brokerage REST endpoints (POST /v1/markets/events/session for
    market data and POST /v1/accounts/events/session for account data),
    which return a short-lived sessionid used to authenticate the WebSocket
    connection. Session identifiers are valid for up to 5 minutes prior to
    connection. Only one streaming session may be open at a time per user.
  contact:
    name: Tradier API Support
    url: https://docs.tradier.com/
  license:
    name: Tradier API Terms
    url: https://tradier.com/disclosures
defaultContentType: application/json
servers:
  production-market:
    url: ws.tradier.com/v1/markets/events
    protocol: wss
    description: Production WebSocket endpoint for market events streaming.
  production-account:
    url: ws.tradier.com/v1/accounts/events
    protocol: wss
    description: Production WebSocket endpoint for account events streaming.
channels:
  /v1/markets/events:
    description: >-
      Market events streaming channel. After connecting the client sends
      a JSON subscription payload referencing a sessionid acquired from
      POST /v1/markets/events/session. The server then streams one or
      more of the requested payload types (quote, trade, summary,
      timesale, tradex). The subscription may be modified mid-stream by
      sending a new payload with the same sessionid.
    bindings:
      ws:
        bindingVersion: '0.1.0'
    publish:
      operationId: subscribeMarketEvents
      summary: Send a market data subscription request.
      message:
        $ref: '#/components/messages/MarketSubscription'
    subscribe:
      operationId: receiveMarketEvents
      summary: Receive streamed market data payloads.
      message:
        oneOf:
          - $ref: '#/components/messages/Quote'
          - $ref: '#/components/messages/Trade'
          - $ref: '#/components/messages/Summary'
          - $ref: '#/components/messages/Timesale'
          - $ref: '#/components/messages/Tradex'
  /v1/accounts/events:
    description: >-
      Account events streaming channel. After connecting the client
      sends a JSON subscription payload referencing a sessionid from
      POST /v1/accounts/events/session and the desired event types
      (currently "order"). The server streams order lifecycle events and
      periodic heartbeats. Streams may only target either live or
      sandbox accounts within a session.
    bindings:
      ws:
        bindingVersion: '0.1.0'
    publish:
      operationId: subscribeAccountEvents
      summary: Send an account events subscription request.
      message:
        $ref: '#/components/messages/AccountSubscription'
    subscribe:
      operationId: receiveAccountEvents
      summary: Receive streamed account events.
      message:
        oneOf:
          - $ref: '#/components/messages/OrderEvent'
          - $ref: '#/components/messages/Heartbeat'
components:
  messages:
    MarketSubscription:
      name: MarketSubscription
      title: Market Data Subscription Request
      summary: Client request to begin or modify a market data stream.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/MarketSubscription'
    Quote:
      name: Quote
      title: Quote Event
      summary: Bid/ask quote update for a symbol.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Quote'
    Trade:
      name: Trade
      title: Trade Event
      summary: Executed trade event for a symbol.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Trade'
    Summary:
      name: Summary
      title: Summary Event
      summary: Session open, high, low, or previous close update.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Summary'
    Timesale:
      name: Timesale
      title: Timesale Event
      summary: Time and sales tick for a symbol.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Timesale'
    Tradex:
      name: Tradex
      title: Tradex Event
      summary: >-
        Extended trade event recommended for pre and post market sessions
        in place of the trade payload.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Tradex'
    AccountSubscription:
      name: AccountSubscription
      title: Account Events Subscription Request
      summary: Client request to begin streaming account events.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/AccountSubscription'
    OrderEvent:
      name: OrderEvent
      title: Order Event
      summary: Order lifecycle event for a streamed account.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/OrderEvent'
    Heartbeat:
      name: Heartbeat
      title: Heartbeat Event
      summary: Stream keep-alive heartbeat.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Heartbeat'
  schemas:
    MarketSubscription:
      type: object
      required:
        - symbols
        - sessionid
      properties:
        symbols:
          type: array
          description: >-
            Equity or OCC option symbols to subscribe to. Submit only the
            symbols needed to avoid abuse detection.
          items:
            type: string
          example:
            - AAPL
            - TSLA250815C00150000
        sessionid:
          type: string
          description: Session identifier returned by POST /v1/markets/events/session.
        filter:
          type: array
          description: >-
            Payload types to receive. All types are returned when not
            specified. Filter cannot be changed after the stream starts.
          items:
            type: string
            enum:
              - trade
              - quote
              - summary
              - timesale
              - tradex
        linebreak:
          type: boolean
          description: When true each payload is separated by a line break.
          default: false
        validOnly:
          type: boolean
          description: Only return exchange-validated ticks.
          default: true
        advancedDetails:
          type: boolean
          description: Include advanced details on timesale payloads.
          default: false
    Quote:
      type: object
      description: Bid/ask quote update.
      properties:
        type:
          type: string
          enum: [quote]
        symbol:
          type: string
        bid:
          type: number
          format: float
        bidsz:
          type: integer
        bidexch:
          type: string
          description: Bid exchange code.
        biddate:
          type: string
          description: Epoch milliseconds for the bid update.
        ask:
          type: number
          format: float
        asksz:
          type: integer
        askexch:
          type: string
          description: Ask exchange code.
        askdate:
          type: string
          description: Epoch milliseconds for the ask update.
    Trade:
      type: object
      description: Executed trade event.
      properties:
        type:
          type: string
          enum: [trade]
        symbol:
          type: string
        exch:
          type: string
          description: Exchange code.
        price:
          type: string
          description: Trade price.
        size:
          type: string
          description: Trade size.
        cvol:
          type: string
          description: Cumulative volume for the symbol.
        date:
          type: string
          description: Epoch milliseconds for the trade.
        last:
          type: string
          description: Last trade price.
    Summary:
      type: object
      description: Session open, high, low, or previous close update.
      properties:
        type:
          type: string
          enum: [summary]
        symbol:
          type: string
        open:
          type: string
        high:
          type: string
        low:
          type: string
        prevClose:
          type: string
    Timesale:
      type: object
      description: Time and sales tick.
      properties:
        type:
          type: string
          enum: [timesale]
        symbol:
          type: string
        exch:
          type: string
        bid:
          type: string
        ask:
          type: string
        last:
          type: string
        size:
          type: string
        date:
          type: string
          description: Epoch milliseconds for the tick.
        seq:
          type: integer
          description: Unique sequence number for the tick.
        flag:
          type: string
          description: Event flag.
        cancel:
          type: boolean
          description: Whether the tick is a cancel.
        correction:
          type: boolean
          description: Whether the tick is a correction.
        session:
          type: string
          description: Market session (pre, regular, post).
    Tradex:
      type: object
      description: >-
        Extended trade event recommended over trade during pre and post
        market sessions for more accurate data.
      properties:
        type:
          type: string
          enum: [tradex]
        symbol:
          type: string
        exch:
          type: string
        price:
          type: string
        size:
          type: string
        cvol:
          type: string
        date:
          type: string
        last:
          type: string
    AccountSubscription:
      type: object
      required:
        - events
        - sessionid
      properties:
        events:
          type: array
          description: Account event types to stream. Currently only order is supported.
          items:
            type: string
            enum:
              - order
        sessionid:
          type: string
          description: Session identifier returned by POST /v1/accounts/events/session.
        excludeAccounts:
          type: array
          description: Account numbers to exclude from the stream.
          items:
            type: string
    OrderEvent:
      type: object
      description: Order lifecycle update for an account.
      properties:
        event:
          type: string
          enum: [order]
        id:
          type: integer
          description: Unique identifier for the order.
        parent_id:
          type: integer
          description: Unique identifier for the parent order, when applicable.
        account:
          type: string
          description: Account number associated with the order.
        status:
          type: string
          enum:
            - open
            - partially_filled
            - filled
            - expired
            - canceled
            - pending
            - rejected
            - calculated
            - accepted_for_bidding
            - error
            - held
        type:
          type: string
          description: >-
            Order type. Single-leg values include market, limit, stop,
            stop_limit; multi-leg values include market, debit, credit, even.
        tag:
          type: string
          description: Optional order tag.
        price:
          type: number
          format: float
          description: Limit price.
        stop_price:
          type: number
          format: float
          description: Stop price.
        avg_fill_price:
          type: number
          format: float
        exec_quantity:
          type: number
          format: float
          description: Total shares or contracts filled.
        last_fill_quantity:
          type: number
          format: float
        remaining_quantity:
          type: number
          format: float
        create_date:
          type: string
          format: date-time
        transaction_date:
          type: string
          format: date-time
    Heartbeat:
      type: object
      description: Stream keep-alive heartbeat message.
      properties:
        event:
          type: string
          enum: [heartbeat]
        status:
          type: string
        timestamp:
          type: string