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.
Channels
Servers
api.tiingo.com
AsyncAPI Specification
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
Work with this as data
Every AsyncAPI spec here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for asyncapi
4 MCP tools reach this
find_asyncapisBrowse and filter every AsyncAPI spec in the catalog.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
curl "https://apis.io/api/v1/asyncapis/tiingo-websockets-asyncapi"
curl "https://apis.io/api/v1/asyncapis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.