Tiingo · AsyncAPI Specification

Tiingo WebSocket API

Version 1.0.0

Tiingo's WebSocket streaming interface for real-time market data. Clients subscribe and unsubscribe to data feeds by sending a JSON request containing eventName, an authorization API token, and eventData (thresholdLevel, tickers, and subscriptionId for updates). Servers push frames tagged with a messageType. Generated by API Evangelist from Tiingo's published WebSocket documentation (https://www.tiingo.com/documentation/websockets/iex) - Tiingo does not publish an AsyncAPI itself.

View Spec View on GitHub FintechMarket DataStocksCryptoFXNewsFundamentalsWebSocketsAsyncAPIWebhooksEvents

Channels

/iex
publish
Send a subscribe or unsubscribe request as a JSON object.
IEX real-time top-of-book and last-sale data.
/crypto
publish
Send a subscribe or unsubscribe request as a JSON object.
Real-time cryptocurrency top-of-book and trade data aggregated across exchanges.
/fx
publish
Send a subscribe or unsubscribe request as a JSON object.
Real-time forex quote data.
/boats
publish
Send a subscribe or unsubscribe request as a JSON object.
BOATS overnight session real-time equity market data firehose (beta).
/equity/intraday
publish
Send a subscribe or unsubscribe request as a JSON object.
Consolidated equity realtime snapshot stream (beta).
/test
publish
Send a subscribe request to verify connectivity.
Test channel for verifying WebSocket connectivity and authentication.

Servers

wss
production api.tiingo.com
Tiingo WebSocket server. Authenticate by passing your API token in the authorization field of each subscribe request.

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
info:
  title: Tiingo WebSocket API
  version: 1.0.0
  description: Tiingo's WebSocket streaming interface for real-time market data. Clients subscribe and unsubscribe
    to data feeds by sending a JSON request containing eventName, an authorization API token, and eventData (thresholdLevel,
    tickers, and subscriptionId for updates). Servers push frames tagged with a messageType. Generated by API Evangelist
    from Tiingo's published WebSocket documentation (https://www.tiingo.com/documentation/websockets/iex) - Tiingo
    does not publish an AsyncAPI itself.
  x-apievangelist:
    generated: '2026-07-22'
    method: generated
    source: https://apimedia.tiingo.com/dist/src_app_api_documentation_documentation_module_ts-es2015.f5eea3d64917e26bb724.js
externalDocs:
  url: https://www.tiingo.com/documentation/general/connecting
servers:
  production:
    url: api.tiingo.com
    protocol: wss
    description: Tiingo WebSocket server. Authenticate by passing your API token in the authorization field of each
      subscribe request.
channels:
  /iex:
    description: IEX real-time top-of-book and last-sale data.
    subscribe:
      summary: Server pushes market data frames after a subscribe request.
      message:
        name: iexFrame
        payload:
          type: object
          properties:
            messageType: &id001
              type: string
              enum:
              - A
              - U
              - D
              - I
              - E
              - H
              description: 'Message type on every server frame: "A" new data, "U" update to existing data, "D" delete
                existing data, "I" informational/meta data, "E" error messages, "H" heartbeat (sent every 30 seconds
                to keep the connection alive).'
            service:
              type: string
              description: The service the message pertains to.
            data:
              description: Message data. On the first response after a successful subscribe, contains the subscriptionId
                used to manage the connection (add/remove tickers).
    publish:
      summary: Send a subscribe or unsubscribe request as a JSON object.
      message:
        name: iexSubscribe
        payload:
          type: object
          properties:
            eventName:
              type: string
              description: This will be either "subscribe" or "unsubscribe".
            authorization:
              type: string
              description: This will be your API Auth token.
            eventData:
              type: object
              properties:
                thresholdLevel:
                  type: string
                  description: 'A threshold level. This is a filter that determines how much data you get from the
                    IEX feed. 0 - All updates from IEX. Be careful with this as it is A LOT of data. 5 - If a quote:
                    sends updates where mid is not null AND there is a change in mid by at least $0.01 OR If a trade:
                    send a trade if it differs from the last trade price.'
              required:
              - thresholdLevel
              description: 'Subscribe parameters: thresholdLevel controls how much data you receive from the IEX
                feed.'
          required:
          - eventName
          - authorization
  /crypto:
    description: Real-time cryptocurrency top-of-book and trade data aggregated across exchanges.
    subscribe:
      summary: Server pushes market data frames after a subscribe request.
      message:
        name: cryptoFrame
        payload:
          type: object
          properties:
            messageType: *id001
            service:
              type: string
              description: The service the message pertains to.
            data:
              description: Message data. On the first response after a successful subscribe, contains the subscriptionId
                used to manage the connection (add/remove tickers).
    publish:
      summary: Send a subscribe or unsubscribe request as a JSON object.
      message:
        name: cryptoSubscribe
        payload:
          type: object
          properties:
            eventName:
              type: string
              description: This will be either "subscribe" or "unsubscribe".
            authorization:
              type: string
              description: This will be your API Auth token.
            eventData:
              type: object
              properties:
                subscriptionId:
                  type: string
                  description: This is used to modify existing subscriptions. Leave this blank for new connections.
                    Can use this parameter to subscribe/unsubscribe from additional tickers.
                thresholdLevel:
                  type: string
                  description: A threshold level. This is a filter that determines how much data you get from the
                    crypto feed. 2 - Top-of-Book quote updates as well as Trade updates. Both quote and trade updates
                    are per-exchange 5 - Trade Updates per-exchange.
              description: Subscribe/unsubscribe parameters.
          required:
          - eventName
          - authorization
  /fx:
    description: Real-time forex quote data.
    subscribe:
      summary: Server pushes market data frames after a subscribe request.
      message:
        name: fxFrame
        payload:
          type: object
          properties:
            messageType: *id001
            service:
              type: string
              description: The service the message pertains to.
            data:
              description: Message data. On the first response after a successful subscribe, contains the subscriptionId
                used to manage the connection (add/remove tickers).
    publish:
      summary: Send a subscribe or unsubscribe request as a JSON object.
      message:
        name: fxSubscribe
        payload:
          type: object
          properties:
            eventName:
              type: string
              description: This will be either "subscribe" or "unsubscribe".
            authorization:
              type: string
              description: This will be your API Auth token.
            eventData:
              type: object
              properties:
                subscriptionId:
                  type: string
                  description: This is used to modify existing subscriptions. Leave this blank for new connections.
                    Can use this parameter to subscribe/unsubscribe from additional tickers.
                thresholdLevel:
                  type: string
                  description: A threshold level. This is a filter that determines how much data you get from the
                    FX feed. 7 - A top-of-book update that is due to a change in either the bid/ask price or size.
              description: 'Subscribe parameters: thresholdLevel controls how much data you receive from the FX
                feed; subscriptionId modifies existing subscriptions.'
          required:
          - eventName
          - authorization
  /boats:
    description: BOATS overnight session real-time equity market data firehose (beta).
    subscribe:
      summary: Server pushes market data frames after a subscribe request.
      message:
        name: boatsFrame
        payload:
          type: object
          properties:
            messageType: *id001
            service:
              type: string
              description: The service the message pertains to.
            data:
              description: Message data. On the first response after a successful subscribe, contains the subscriptionId
                used to manage the connection (add/remove tickers).
    publish:
      summary: Send a subscribe or unsubscribe request as a JSON object.
      message:
        name: boatsSubscribe
        payload:
          type: object
          properties:
            eventName:
              type: string
              description: This will be either "subscribe" or "unsubscribe".
            authorization:
              type: string
              description: This will be your API Auth token.
            eventData:
              type: object
              properties:
                thresholdLevel:
                  type: string
                  description: A threshold level. This is a filter that determines how much data you get from the
                    BOATS feed. 3 - All venue-native BOATS top-of-book and last-trade updates (full firehose). Requires
                    the BOATS Real-time entitlement.
              required:
              - thresholdLevel
              description: 'Subscribe parameters: thresholdLevel controls how much data you receive from the BOATS
                feed.'
          required:
          - eventName
          - authorization
  /equity/intraday:
    description: Consolidated equity realtime snapshot stream (beta).
    subscribe:
      summary: Server pushes market data frames after a subscribe request.
      message:
        name: equityRealtimeFrame
        payload:
          type: object
          properties:
            messageType: *id001
            service:
              type: string
              description: The service the message pertains to.
            data:
              description: Message data. On the first response after a successful subscribe, contains the subscriptionId
                used to manage the connection (add/remove tickers).
    publish:
      summary: Send a subscribe or unsubscribe request as a JSON object.
      message:
        name: equityRealtimeSubscribe
        payload:
          type: object
          properties:
            eventName:
              type: string
              description: This will be either "subscribe" or "unsubscribe".
            authorization:
              type: string
              description: This will be your API Auth token.
            eventData:
              type: object
              properties:
                thresholdLevel:
                  type: string
                  description: A threshold level. This is a filter that determines how much data you get from the
                    consolidated equity feed. 4 - Receive liquidity risk metric updates \u2014 statistical estimates
                    of spread and liquidity characteristics derived from aggregated historical observations.
              required:
              - thresholdLevel
              description: Subscribe parameters for the consolidated equity realtime feed.
          required:
          - eventName
          - authorization
  /test:
    description: Test channel for verifying WebSocket connectivity and authentication.
    publish:
      summary: Send a subscribe request to verify connectivity.
      message:
        name: testSubscribe
        payload:
          type: object
          properties:
            eventName:
              type: string
              description: This will be either "subscribe" or "unsubscribe".
            authorization:
              type: string
              description: This will be your API Auth token.
            eventData:
              type: object
              properties:
                thresholdLevel:
                  type: string
                  description: 'A threshold level. This is a filter that determines how much data you get from the
                    IEX feed. 0 - All updates from IEX. Be careful with this as it is A LOT of data. 5 - If a quote:
                    sends updates where mid is not null AND there is a change in mid by at least $0.01 OR If a trade:
                    send a trade if it differs from the last trade price.'
              required:
              - thresholdLevel
              description: Subscribe parameters.
          required:
          - eventName
          - authorization