Polygon.io · AsyncAPI Specification

Polygon.io WebSocket APIs

Version 2.0.0

Streaming WebSocket APIs from Polygon.io (now operating as Massive) for real-time and delayed US Stocks, Options, Forex, Crypto, Indices, and Futures market data. Clients connect to a market-specific WebSocket cluster, authenticate with an API key, then subscribe to one or more event topics scoped to a ticker, contract, or pair (e.g. `T.AAPL`, `Q.MSFT`, `AM.*`). Messages from the server are JSON arrays where each object carries an `ev` field identifying the event type. Endpoints exist for the real-time feed (`socket.polygon.io` / `socket.massive.com`), the 15-minute delayed feed, Launchpad multi-market entitlements, and Business-tier enrichment streams such as Fair Market Value (FMV).

View Spec View on GitHub FintechMarket DataStocksOptionsForexCryptoIndicesFuturesWebSocketsReal-timeHistoricalAsyncAPIWebhooksEvents

Channels

stocks/T
subscribe subscribeStocksTrades
Receive real-time stock trade events.
Stream real-time trades for a given stock ticker symbol.
stocks/Q
subscribe subscribeStocksQuotes
Receive real-time stock quote (NBBO) events.
Stream real-time NBBO quotes for a given stock ticker symbol.
stocks/A
subscribe subscribeStocksSecAggregates
Receive per-second stock aggregate (OHLCV) events.
Stream real-time per-second aggregates for a given stock ticker.
stocks/AM
subscribe subscribeStocksMinAggregates
Receive per-minute stock aggregate (OHLCV) events.
Stream real-time per-minute aggregates for a given stock ticker.
stocks/LULD
subscribe subscribeStocksLULD
Receive LULD (price band) events.
Stream Limit-Up Limit-Down events for a given stock ticker.
stocks/NOI
subscribe subscribeStocksImbalances
Receive auction imbalance events.
Stream NYSE/Nasdaq Order Imbalance (NOI) events for a given stock.
business/stocks/FMV
subscribe subscribeStocksFMV
Receive Fair Market Value events for stocks.
Stream Fair Market Value (FMV) for a given stock ticker. Available on the Business-tier feed (`business.polygon.io/stocks`).
launchpad/stocks/AM
subscribe subscribeLaunchpadStocksMinAggregates
Receive per-minute stock aggregates over Launchpad.
Per-minute aggregates for stocks delivered over the Launchpad multi-market feed.
launchpad/stocks/LV
subscribe subscribeLaunchpadStocksValue
Receive Launchpad Value events for stocks.
Launchpad Value events for stocks.
options/T
subscribe subscribeOptionsTrades
Receive real-time option trade events.
Stream real-time trades for a given option contract.
options/Q
subscribe subscribeOptionsQuotes
Receive real-time option quote events.
Stream real-time quotes for a given option contract.
options/A
subscribe subscribeOptionsSecAggregates
Receive per-second option aggregate events.
Stream real-time per-second aggregates for a given option contract.
options/AM
subscribe subscribeOptionsMinAggregates
Receive per-minute option aggregate events.
Stream real-time per-minute aggregates for a given option contract.
business/options/FMV
subscribe subscribeOptionsFMV
Receive Fair Market Value events for options.
Stream Fair Market Value (FMV) for a given option contract over the Business-tier feed.
launchpad/options/AM
subscribe subscribeLaunchpadOptionsMinAggregates
Receive per-minute option aggregates over Launchpad.
Per-minute aggregates for options delivered over Launchpad.
launchpad/options/LV
subscribe subscribeLaunchpadOptionsValue
Receive Launchpad Value events for options.
Launchpad Value events for options.
forex/C
subscribe subscribeForexQuotes
Receive real-time forex quote events.
Stream real-time quotes for a forex currency pair.
forex/CA
subscribe subscribeForexMinAggregates
Receive per-minute forex aggregate events.
Stream per-minute aggregates for a forex currency pair.
forex/CAS
subscribe subscribeForexSecAggregates
Receive per-second forex aggregate events.
Stream per-second aggregates for a forex currency pair.
business/forex/FMV
subscribe subscribeForexFMV
Receive Fair Market Value events for forex.
Stream Fair Market Value for a forex pair over the Business feed.
launchpad/forex/AM
subscribe subscribeLaunchpadForexMinAggregates
Receive per-minute forex aggregates over Launchpad.
Per-minute aggregates for forex delivered over Launchpad.
launchpad/forex/LV
subscribe subscribeLaunchpadForexValue
Receive Launchpad Value events for forex.
Launchpad Value events for forex.
crypto/XT
subscribe subscribeCryptoTrades
Receive real-time crypto trade events.
Stream real-time trades for a crypto pair.
crypto/XQ
subscribe subscribeCryptoQuotes
Receive real-time crypto quote events.
Stream real-time quotes for a crypto pair.
crypto/XA
subscribe subscribeCryptoMinAggregates
Receive per-minute crypto aggregate events.
Stream per-minute aggregates for a crypto pair.
crypto/XAS
subscribe subscribeCryptoSecAggregates
Receive per-second crypto aggregate events.
Stream per-second aggregates for a crypto pair.
crypto/XL2
subscribe subscribeCryptoLevel2
Receive Level 2 order book snapshots.
Stream Level 2 order book updates for a crypto pair.
business/crypto/FMV
subscribe subscribeCryptoFMV
Receive Fair Market Value events for crypto.
Stream Fair Market Value for a crypto pair over the Business feed.
launchpad/crypto/AM
subscribe subscribeLaunchpadCryptoMinAggregates
Receive per-minute crypto aggregates over Launchpad.
Per-minute aggregates for crypto delivered over Launchpad.
launchpad/crypto/LV
subscribe subscribeLaunchpadCryptoValue
Receive Launchpad Value events for crypto.
Launchpad Value events for crypto.
indices/V
subscribe subscribeIndicesValue
Receive real-time index value events.
Stream real-time index values for a given index ticker.
indices/A
subscribe subscribeIndicesSecAggregates
Receive per-second index aggregate events.
Stream per-second aggregates for a given index ticker.
indices/AM
subscribe subscribeIndicesMinAggregates
Receive per-minute index aggregate events.
Stream per-minute aggregates for a given index ticker.
futures/T
subscribe subscribeFuturesTrades
Receive real-time futures trade events.
Stream real-time trades for a futures contract.
futures/Q
subscribe subscribeFuturesQuotes
Receive real-time futures quote events.
Stream real-time quotes for a futures contract.
futures/A
subscribe subscribeFuturesSecAggregates
Receive per-second futures aggregate events.
Stream per-second aggregates for a futures contract.
futures/AM
subscribe subscribeFuturesMinAggregates
Receive per-minute futures aggregate events.
Stream per-minute aggregates for a futures contract.
control
publish sendControlMessage
Send auth, subscribe, or unsubscribe control messages.
Control channel for client-to-server messages. After the connection is established, the client must send an `auth` message with its API key, then issue `subscribe` and `unsubscribe` messages whose `params` field is a comma-separated list of `.` tuples (e.g. `T.AAPL,T.MSFT`, `Q.*`, `AM.O:A230616C00070000`). The server acknowledges each control message with a `status` event.

Messages

AuthMessage
Authentication request
Authenticate the WebSocket session with an API key.
SubscribeMessage
Subscribe request
Subscribe to one or more topics.
UnsubscribeMessage
Unsubscribe request
Unsubscribe from one or more topics.
StatusMessage
Connection status event
Server-side status update for connect, auth, subscribe, and unsubscribe operations.
StockTrade
Stock trade (T)
A single stock trade tick from the SIP or a TRF.
StockQuote
Stock quote (Q)
A single stock NBBO quote update.
StockAggregate
Stock per-second aggregate (A)
Aggregated OHLCV window covering one second.
StockAggregateMinute
Stock per-minute aggregate (AM)
Aggregated OHLCV window covering one minute.
LimitUpLimitDown
Limit-Up Limit-Down (LULD)
National price bands published under Reg NMS LULD.
Imbalance
Order imbalance (NOI)
NYSE / Nasdaq opening or closing auction imbalance event.
FairMarketValue
Fair Market Value (FMV)
Polygon's proprietary fair value estimate for the asset.
LaunchpadAggregateMinute
Launchpad per-minute aggregate (AM)
Per-minute aggregate routed via the Launchpad multi-market feed.
LaunchpadValue
Launchpad Value (LV)
Launchpad-feed value event.
OptionTrade
Option trade (T)
A single OPRA-licensed option trade tick.
OptionQuote
Option quote (Q)
A single OPRA-licensed option quote update.
OptionAggregate
Option per-second aggregate (A)
OptionAggregateMinute
Option per-minute aggregate (AM)
ForexQuote
Forex quote (C)
Currency pair quote update.
ForexAggregateMinute
Forex per-minute aggregate (CA)
ForexAggregateSecond
Forex per-second aggregate (CAS)
CryptoTrade
Crypto trade (XT)
CryptoQuote
Crypto quote (XQ)
CryptoAggregateMinute
Crypto per-minute aggregate (XA)
CryptoAggregateSecond
Crypto per-second aggregate (XAS)
CryptoLevel2Book
Crypto Level 2 book (XL2)
Aggregated Level 2 book snapshot for a crypto pair.
IndexValue
Index value (V)
IndexAggregate
Index per-second aggregate (A)
IndexAggregateMinute
Index per-minute aggregate (AM)
FuturesTrade
Futures trade (T)
FuturesQuote
Futures quote (Q)
FuturesAggregate
Futures per-second aggregate (A)
FuturesAggregateMinute
Futures per-minute aggregate (AM)

Servers

wss
stocks socket.polygon.io/stocks
Real-time stocks WebSocket cluster.
wss
stocks-delayed delayed.polygon.io/stocks
15-minute delayed stocks WebSocket cluster.
wss
options socket.polygon.io/options
Real-time options (OPRA) WebSocket cluster.
wss
options-delayed delayed.polygon.io/options
15-minute delayed options WebSocket cluster.
wss
forex socket.polygon.io/forex
Real-time forex WebSocket cluster.
wss
crypto socket.polygon.io/crypto
Real-time crypto WebSocket cluster.
wss
indices socket.polygon.io/indices
Real-time indices WebSocket cluster.
wss
futures socket.polygon.io/futures
Real-time futures WebSocket cluster. Sub-paths exist for individual venues: `/futures/cme`, `/futures/cbot`, `/futures/nymex`, `/futures/comex`.
wss
launchpad launchpad.polygon.io
Launchpad multi-market feed. Append the market segment to the path, e.g. `launchpad.polygon.io/stocks`. Carries `AM` (per-minute aggregates) and `LV` (Launchpad Value) topics across stocks, options, forex, and crypto.
wss
business business.polygon.io
Business-tier feed. Append the market segment to the path, e.g. `business.polygon.io/stocks`. Carries the `FMV` (Fair Market Value) topic across stocks, options, forex, and crypto.
wss
nasdaq nasdaqfeed.polygon.io/stocks
Nasdaq-only direct feed for stocks (entitlement required).
wss
polyfeed polyfeed.polygon.io/stocks
PolyFeed aggregated stocks feed (entitlement required).
wss
polyfeedplus polyfeedplus.polygon.io/stocks
PolyFeed Plus aggregated stocks feed (entitlement required).
wss
starterfeed starterfeed.polygon.io/stocks
Starter feed for stocks (entitlement required).

AsyncAPI Specification

Raw ↑
asyncapi: 2.6.0
id: urn:polygon-io:websocket
info:
  title: Polygon.io WebSocket APIs
  version: 2.0.0
  description: >-
    Streaming WebSocket APIs from Polygon.io (now operating as Massive) for
    real-time and delayed US Stocks, Options, Forex, Crypto, Indices, and
    Futures market data. Clients connect to a market-specific WebSocket
    cluster, authenticate with an API key, then subscribe to one or more event
    topics scoped to a ticker, contract, or pair (e.g. `T.AAPL`, `Q.MSFT`,
    `AM.*`). Messages from the server are JSON arrays where each object
    carries an `ev` field identifying the event type. Endpoints exist for the
    real-time feed (`socket.polygon.io` / `socket.massive.com`), the 15-minute
    delayed feed, Launchpad multi-market entitlements, and Business-tier
    enrichment streams such as Fair Market Value (FMV).
  contact:
    name: Polygon.io Developer Support
    url: https://polygon.io/contact
  license:
    name: Polygon.io Terms of Service
    url: https://polygon.io/legal/terms
  x-source: https://polygon.io/docs/websocket
  x-status: production
defaultContentType: application/json
servers:
  stocks:
    url: socket.polygon.io/stocks
    protocol: wss
    description: Real-time stocks WebSocket cluster.
    security:
      - apiKey: []
  stocks-delayed:
    url: delayed.polygon.io/stocks
    protocol: wss
    description: 15-minute delayed stocks WebSocket cluster.
    security:
      - apiKey: []
  options:
    url: socket.polygon.io/options
    protocol: wss
    description: Real-time options (OPRA) WebSocket cluster.
    security:
      - apiKey: []
  options-delayed:
    url: delayed.polygon.io/options
    protocol: wss
    description: 15-minute delayed options WebSocket cluster.
    security:
      - apiKey: []
  forex:
    url: socket.polygon.io/forex
    protocol: wss
    description: Real-time forex WebSocket cluster.
    security:
      - apiKey: []
  crypto:
    url: socket.polygon.io/crypto
    protocol: wss
    description: Real-time crypto WebSocket cluster.
    security:
      - apiKey: []
  indices:
    url: socket.polygon.io/indices
    protocol: wss
    description: Real-time indices WebSocket cluster.
    security:
      - apiKey: []
  futures:
    url: socket.polygon.io/futures
    protocol: wss
    description: >-
      Real-time futures WebSocket cluster. Sub-paths exist for individual
      venues: `/futures/cme`, `/futures/cbot`, `/futures/nymex`, `/futures/comex`.
    security:
      - apiKey: []
  launchpad:
    url: launchpad.polygon.io
    protocol: wss
    description: >-
      Launchpad multi-market feed. Append the market segment to the path,
      e.g. `launchpad.polygon.io/stocks`. Carries `AM` (per-minute aggregates)
      and `LV` (Launchpad Value) topics across stocks, options, forex, and crypto.
    security:
      - apiKey: []
  business:
    url: business.polygon.io
    protocol: wss
    description: >-
      Business-tier feed. Append the market segment to the path,
      e.g. `business.polygon.io/stocks`. Carries the `FMV` (Fair Market Value)
      topic across stocks, options, forex, and crypto.
    security:
      - apiKey: []
  nasdaq:
    url: nasdaqfeed.polygon.io/stocks
    protocol: wss
    description: Nasdaq-only direct feed for stocks (entitlement required).
    security:
      - apiKey: []
  polyfeed:
    url: polyfeed.polygon.io/stocks
    protocol: wss
    description: PolyFeed aggregated stocks feed (entitlement required).
    security:
      - apiKey: []
  polyfeedplus:
    url: polyfeedplus.polygon.io/stocks
    protocol: wss
    description: PolyFeed Plus aggregated stocks feed (entitlement required).
    security:
      - apiKey: []
  starterfeed:
    url: starterfeed.polygon.io/stocks
    protocol: wss
    description: Starter feed for stocks (entitlement required).
    security:
      - apiKey: []
channels:
  stocks/T:
    description: Stream real-time trades for a given stock ticker symbol.
    servers:
      - stocks
      - stocks-delayed
      - nasdaq
      - polyfeed
      - polyfeedplus
      - starterfeed
    parameters:
      ticker:
        description: Ticker symbol or `*` for all. Comma-separated for multiple.
        schema:
          type: string
        location: $message.payload#/sym
    subscribe:
      operationId: subscribeStocksTrades
      summary: Receive real-time stock trade events.
      message:
        $ref: '#/components/messages/StockTrade'
  stocks/Q:
    description: Stream real-time NBBO quotes for a given stock ticker symbol.
    servers:
      - stocks
      - nasdaq
      - polyfeed
      - polyfeedplus
      - starterfeed
    subscribe:
      operationId: subscribeStocksQuotes
      summary: Receive real-time stock quote (NBBO) events.
      message:
        $ref: '#/components/messages/StockQuote'
  stocks/A:
    description: Stream real-time per-second aggregates for a given stock ticker.
    servers:
      - stocks
      - stocks-delayed
    subscribe:
      operationId: subscribeStocksSecAggregates
      summary: Receive per-second stock aggregate (OHLCV) events.
      message:
        $ref: '#/components/messages/StockAggregate'
  stocks/AM:
    description: Stream real-time per-minute aggregates for a given stock ticker.
    servers:
      - stocks
      - stocks-delayed
    subscribe:
      operationId: subscribeStocksMinAggregates
      summary: Receive per-minute stock aggregate (OHLCV) events.
      message:
        $ref: '#/components/messages/StockAggregateMinute'
  stocks/LULD:
    description: Stream Limit-Up Limit-Down events for a given stock ticker.
    servers:
      - stocks
    subscribe:
      operationId: subscribeStocksLULD
      summary: Receive LULD (price band) events.
      message:
        $ref: '#/components/messages/LimitUpLimitDown'
  stocks/NOI:
    description: Stream NYSE/Nasdaq Order Imbalance (NOI) events for a given stock.
    servers:
      - stocks
    subscribe:
      operationId: subscribeStocksImbalances
      summary: Receive auction imbalance events.
      message:
        $ref: '#/components/messages/Imbalance'
  business/stocks/FMV:
    description: >-
      Stream Fair Market Value (FMV) for a given stock ticker. Available on
      the Business-tier feed (`business.polygon.io/stocks`).
    servers:
      - business
    subscribe:
      operationId: subscribeStocksFMV
      summary: Receive Fair Market Value events for stocks.
      message:
        $ref: '#/components/messages/FairMarketValue'
  launchpad/stocks/AM:
    description: >-
      Per-minute aggregates for stocks delivered over the Launchpad multi-market feed.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadStocksMinAggregates
      summary: Receive per-minute stock aggregates over Launchpad.
      message:
        $ref: '#/components/messages/LaunchpadAggregateMinute'
  launchpad/stocks/LV:
    description: Launchpad Value events for stocks.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadStocksValue
      summary: Receive Launchpad Value events for stocks.
      message:
        $ref: '#/components/messages/LaunchpadValue'
  options/T:
    description: Stream real-time trades for a given option contract.
    servers:
      - options
      - options-delayed
    subscribe:
      operationId: subscribeOptionsTrades
      summary: Receive real-time option trade events.
      message:
        $ref: '#/components/messages/OptionTrade'
  options/Q:
    description: Stream real-time quotes for a given option contract.
    servers:
      - options
    subscribe:
      operationId: subscribeOptionsQuotes
      summary: Receive real-time option quote events.
      message:
        $ref: '#/components/messages/OptionQuote'
  options/A:
    description: Stream real-time per-second aggregates for a given option contract.
    servers:
      - options
      - options-delayed
    subscribe:
      operationId: subscribeOptionsSecAggregates
      summary: Receive per-second option aggregate events.
      message:
        $ref: '#/components/messages/OptionAggregate'
  options/AM:
    description: Stream real-time per-minute aggregates for a given option contract.
    servers:
      - options
      - options-delayed
    subscribe:
      operationId: subscribeOptionsMinAggregates
      summary: Receive per-minute option aggregate events.
      message:
        $ref: '#/components/messages/OptionAggregateMinute'
  business/options/FMV:
    description: >-
      Stream Fair Market Value (FMV) for a given option contract over the
      Business-tier feed.
    servers:
      - business
    subscribe:
      operationId: subscribeOptionsFMV
      summary: Receive Fair Market Value events for options.
      message:
        $ref: '#/components/messages/FairMarketValue'
  launchpad/options/AM:
    description: Per-minute aggregates for options delivered over Launchpad.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadOptionsMinAggregates
      summary: Receive per-minute option aggregates over Launchpad.
      message:
        $ref: '#/components/messages/LaunchpadAggregateMinute'
  launchpad/options/LV:
    description: Launchpad Value events for options.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadOptionsValue
      summary: Receive Launchpad Value events for options.
      message:
        $ref: '#/components/messages/LaunchpadValue'
  forex/C:
    description: Stream real-time quotes for a forex currency pair.
    servers:
      - forex
    subscribe:
      operationId: subscribeForexQuotes
      summary: Receive real-time forex quote events.
      message:
        $ref: '#/components/messages/ForexQuote'
  forex/CA:
    description: Stream per-minute aggregates for a forex currency pair.
    servers:
      - forex
    subscribe:
      operationId: subscribeForexMinAggregates
      summary: Receive per-minute forex aggregate events.
      message:
        $ref: '#/components/messages/ForexAggregateMinute'
  forex/CAS:
    description: Stream per-second aggregates for a forex currency pair.
    servers:
      - forex
    subscribe:
      operationId: subscribeForexSecAggregates
      summary: Receive per-second forex aggregate events.
      message:
        $ref: '#/components/messages/ForexAggregateSecond'
  business/forex/FMV:
    description: Stream Fair Market Value for a forex pair over the Business feed.
    servers:
      - business
    subscribe:
      operationId: subscribeForexFMV
      summary: Receive Fair Market Value events for forex.
      message:
        $ref: '#/components/messages/FairMarketValue'
  launchpad/forex/AM:
    description: Per-minute aggregates for forex delivered over Launchpad.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadForexMinAggregates
      summary: Receive per-minute forex aggregates over Launchpad.
      message:
        $ref: '#/components/messages/LaunchpadAggregateMinute'
  launchpad/forex/LV:
    description: Launchpad Value events for forex.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadForexValue
      summary: Receive Launchpad Value events for forex.
      message:
        $ref: '#/components/messages/LaunchpadValue'
  crypto/XT:
    description: Stream real-time trades for a crypto pair.
    servers:
      - crypto
    subscribe:
      operationId: subscribeCryptoTrades
      summary: Receive real-time crypto trade events.
      message:
        $ref: '#/components/messages/CryptoTrade'
  crypto/XQ:
    description: Stream real-time quotes for a crypto pair.
    servers:
      - crypto
    subscribe:
      operationId: subscribeCryptoQuotes
      summary: Receive real-time crypto quote events.
      message:
        $ref: '#/components/messages/CryptoQuote'
  crypto/XA:
    description: Stream per-minute aggregates for a crypto pair.
    servers:
      - crypto
    subscribe:
      operationId: subscribeCryptoMinAggregates
      summary: Receive per-minute crypto aggregate events.
      message:
        $ref: '#/components/messages/CryptoAggregateMinute'
  crypto/XAS:
    description: Stream per-second aggregates for a crypto pair.
    servers:
      - crypto
    subscribe:
      operationId: subscribeCryptoSecAggregates
      summary: Receive per-second crypto aggregate events.
      message:
        $ref: '#/components/messages/CryptoAggregateSecond'
  crypto/XL2:
    description: Stream Level 2 order book updates for a crypto pair.
    servers:
      - crypto
    subscribe:
      operationId: subscribeCryptoLevel2
      summary: Receive Level 2 order book snapshots.
      message:
        $ref: '#/components/messages/CryptoLevel2Book'
  business/crypto/FMV:
    description: Stream Fair Market Value for a crypto pair over the Business feed.
    servers:
      - business
    subscribe:
      operationId: subscribeCryptoFMV
      summary: Receive Fair Market Value events for crypto.
      message:
        $ref: '#/components/messages/FairMarketValue'
  launchpad/crypto/AM:
    description: Per-minute aggregates for crypto delivered over Launchpad.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadCryptoMinAggregates
      summary: Receive per-minute crypto aggregates over Launchpad.
      message:
        $ref: '#/components/messages/LaunchpadAggregateMinute'
  launchpad/crypto/LV:
    description: Launchpad Value events for crypto.
    servers:
      - launchpad
    subscribe:
      operationId: subscribeLaunchpadCryptoValue
      summary: Receive Launchpad Value events for crypto.
      message:
        $ref: '#/components/messages/LaunchpadValue'
  indices/V:
    description: Stream real-time index values for a given index ticker.
    servers:
      - indices
    subscribe:
      operationId: subscribeIndicesValue
      summary: Receive real-time index value events.
      message:
        $ref: '#/components/messages/IndexValue'
  indices/A:
    description: Stream per-second aggregates for a given index ticker.
    servers:
      - indices
    subscribe:
      operationId: subscribeIndicesSecAggregates
      summary: Receive per-second index aggregate events.
      message:
        $ref: '#/components/messages/IndexAggregate'
  indices/AM:
    description: Stream per-minute aggregates for a given index ticker.
    servers:
      - indices
    subscribe:
      operationId: subscribeIndicesMinAggregates
      summary: Receive per-minute index aggregate events.
      message:
        $ref: '#/components/messages/IndexAggregateMinute'
  futures/T:
    description: Stream real-time trades for a futures contract.
    servers:
      - futures
    subscribe:
      operationId: subscribeFuturesTrades
      summary: Receive real-time futures trade events.
      message:
        $ref: '#/components/messages/FuturesTrade'
  futures/Q:
    description: Stream real-time quotes for a futures contract.
    servers:
      - futures
    subscribe:
      operationId: subscribeFuturesQuotes
      summary: Receive real-time futures quote events.
      message:
        $ref: '#/components/messages/FuturesQuote'
  futures/A:
    description: Stream per-second aggregates for a futures contract.
    servers:
      - futures
    subscribe:
      operationId: subscribeFuturesSecAggregates
      summary: Receive per-second futures aggregate events.
      message:
        $ref: '#/components/messages/FuturesAggregate'
  futures/AM:
    description: Stream per-minute aggregates for a futures contract.
    servers:
      - futures
    subscribe:
      operationId: subscribeFuturesMinAggregates
      summary: Receive per-minute futures aggregate events.
      message:
        $ref: '#/components/messages/FuturesAggregateMinute'
  control:
    description: >-
      Control channel for client-to-server messages. After the connection is
      established, the client must send an `auth` message with its API key,
      then issue `subscribe` and `unsubscribe` messages whose `params` field
      is a comma-separated list of `<TOPIC>.<TICKER>` tuples (e.g.
      `T.AAPL,T.MSFT`, `Q.*`, `AM.O:A230616C00070000`). The server
      acknowledges each control message with a `status` event.
    publish:
      operationId: sendControlMessage
      summary: Send auth, subscribe, or unsubscribe control messages.
      message:
        oneOf:
          - $ref: '#/components/messages/AuthMessage'
          - $ref: '#/components/messages/SubscribeMessage'
          - $ref: '#/components/messages/UnsubscribeMessage'
    subscribe:
      operationId: receiveStatusMessage
      summary: Receive connection / auth / subscription status events.
      message:
        $ref: '#/components/messages/StatusMessage'
components:
  securitySchemes:
    apiKey:
      type: userPassword
      description: >-
        Authentication is performed inside the WebSocket session by sending
        a JSON message of the form
        `{"action":"auth","params":"<APIKEY>"}` after the connection opens.
        The server responds with `[{"ev":"status","status":"auth_success",...}]`
        on success or `auth_failed` on failure.
  messages:
    AuthMessage:
      name: AuthMessage
      title: Authentication request
      summary: Authenticate the WebSocket session with an API key.
      contentType: application/json
      payload:
        type: object
        required:
          - action
          - params
        properties:
          action:
            type: string
            enum:
              - auth
          params:
            type: string
            description: The API key.
        example:
          action: auth
          params: YOUR_API_KEY
    SubscribeMessage:
      name: SubscribeMessage
      title: Subscribe request
      summary: Subscribe to one or more topics.
      contentType: application/json
      payload:
        type: object
        required:
          - action
          - params
        properties:
          action:
            type: string
            enum:
              - subscribe
          params:
            type: string
            description: >-
              Comma-separated list of `<TOPIC>.<TICKER>` tuples. The wildcard
              `*` subscribes to all symbols on that topic (entitlement
              permitting). Examples: `T.AAPL,T.MSFT`, `AM.*`, `XT.BTC-USD`,
              `FMV.NVDA`.
        example:
          action: subscribe
          params: T.AAPL,T.MSFT
    UnsubscribeMessage:
      name: UnsubscribeMessage
      title: Unsubscribe request
      summary: Unsubscribe from one or more topics.
      contentType: application/json
      payload:
        type: object
        required:
          - action
          - params
        properties:
          action:
            type: string
            enum:
              - unsubscribe
          params:
            type: string
            description: Comma-separated list of `<TOPIC>.<TICKER>` tuples to unsubscribe from.
        example:
          action: unsubscribe
          params: T.AAPL
    StatusMessage:
      name: StatusMessage
      title: Connection status event
      summary: >-
        Server-side status update for connect, auth, subscribe, and
        unsubscribe operations.
      contentType: application/json
      payload:
        type: object
        properties:
          ev:
            type: string
            enum:
              - status
          status:
            type: string
            description: >-
              Status code such as `connected`, `auth_success`, `auth_failed`,
              `success`, `error`, `max_connections`.
          message:
            type: string
            description: Human-readable status message.
        example:
          ev: status
          status: auth_success
          message: authenticated
    StockTrade:
      name: StockTrade
      title: Stock trade (T)
      summary: A single stock trade tick from the SIP or a TRF.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/StockTrade'
    StockQuote:
      name: StockQuote
      title: Stock quote (Q)
      summary: A single stock NBBO quote update.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/StockQuote'
    StockAggregate:
      name: StockAggregate
      title: Stock per-second aggregate (A)
      summary: Aggregated OHLCV window covering one second.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/StockAggregate'
    StockAggregateMinute:
      name: StockAggregateMinute
      title: Stock per-minute aggregate (AM)
      summary: Aggregated OHLCV window covering one minute.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/StockAggregateMinute'
    LimitUpLimitDown:
      name: LimitUpLimitDown
      title: Limit-Up Limit-Down (LULD)
      summary: National price bands published under Reg NMS LULD.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LimitUpLimitDown'
    Imbalance:
      name: Imbalance
      title: Order imbalance (NOI)
      summary: NYSE / Nasdaq opening or closing auction imbalance event.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/Imbalance'
    FairMarketValue:
      name: FairMarketValue
      title: Fair Market Value (FMV)
      summary: Polygon's proprietary fair value estimate for the asset.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/FairMarketValue'
    LaunchpadAggregateMinute:
      name: LaunchpadAggregateMinute
      title: Launchpad per-minute aggregate (AM)
      summary: Per-minute aggregate routed via the Launchpad multi-market feed.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LaunchpadAggregateMinute'
    LaunchpadValue:
      name: LaunchpadValue
      title: Launchpad Value (LV)
      summary: Launchpad-feed value event.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LaunchpadValue'
    OptionTrade:
      name: OptionTrade
      title: Option trade (T)
      summary: A single OPRA-licensed option trade tick.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/OptionTrade'
    OptionQuote:
      name: OptionQuote
      title: Option quote (Q)
      summary: A single OPRA-licensed option quote update.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/OptionQuote'
    OptionAggregate:
      name: OptionAggregate
      title: Option per-second aggregate (A)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/OptionAggregate'
    OptionAggregateMinute:
      name: OptionAggregateMinute
      title: Option per-minute aggregate (AM)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/OptionAggregateMinute'
    ForexQuote:
      name: ForexQuote
      title: Forex quote (C)
      summary: Currency pair quote update.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ForexQuote'
    ForexAggregateMinute:
      name: ForexAggregateMinute
      title: Forex per-minute aggregate (CA)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ForexAggregateMinute'
    ForexAggregateSecond:
      name: ForexAggregateSecond
      title: Forex per-second aggregate (CAS)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/ForexAggregateSecond'
    CryptoTrade:
      name: CryptoTrade
      title: Crypto trade (XT)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CryptoTrade'
    CryptoQuote:
      name: CryptoQuote
      title: Crypto quote (XQ)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CryptoQuote'
    CryptoAggregateMinute:
      name: CryptoAggregateMinute
      title: Crypto per-minute aggregate (XA)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CryptoAggregateMinute'
    CryptoAggregateSecond:
      name: CryptoAggregateSecond
      title: Crypto per-second aggregate (XAS)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CryptoAggregateSecond'
    CryptoLevel2Book:
      name: CryptoLevel2Book
      title: Crypto Level 2 book (XL2)
      summary: Aggregated Level 2 book snapshot for a crypto pair.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/CryptoLevel2Book'
    IndexValue:
      name: IndexValue
      title: Index value (V)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/IndexValue'
    IndexAggregate:
      name: IndexAggregate
      title: Index per-second aggregate (A)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/IndexAggregate'
    IndexAggregateMinute:
      name: IndexAggregateMinute
      title: Index per-minute aggregate (AM)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/IndexAggregateMinute'
    FuturesTrade:
      name: FuturesTrade
      title: Futures trade (T)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/FuturesTrade'
    FuturesQuote:
      name: FuturesQuote
      title: Futures quote (Q)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/FuturesQuote'
    FuturesAggregate:
      name: FuturesAggregate
      title: Futures per-second aggregate (A)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/FuturesAggregate'
    FuturesAggregateMinute:
      name: FuturesAggregateMinute
      title: Futures per-minute aggregate (AM)
      contentType: application/json
      payload:
        $ref: '#/components/schemas/FuturesAggregateMinute'
  schemas:
    StockTrade:
      type: object
      properties:
        ev:
          type: string
          enum: [T]
          description: The event type.
        sym:
          type: string
          description: The ticker symbol for the given stock.
        x:
          type: integer
          description: The exchange ID.
        i:
          type: string
          description: The trade ID.
        z:
          type: integer
          description: The tape (1 = NYSE, 2 = AMEX, 3 = Nasdaq).
        p:
          type: number
          format: double
          description: The price.
        s:
          type: integer
          description: The trade size.
        c:
          type: array
          description: The trade conditions.
          items:
            type: integer
        t:
          type: integer
          description: The SIP timestamp in Unix MS.
        q:
          type: integer
          description: Per-ticker sequence number.
        trfi:
          type: integer
          description: The TRF ID where the trade took place.
        trft:
          type: integer
          description: The TRF timestamp in Unix MS.
      example:
        ev: T
        sym: MSFT
        x: 4
        i: "12345"
        z: 3
        p: 114.125
        s: 100
        c: [0, 12]
        t: 1536036818784
        q: 3681328
    StockQuote:
      type: object
      properties:
        ev:
          type: string
          enum: [Q]
        sym:
          type: string
        bx:
          type: integer
          description: The bid exchange ID.
        bp:
          type: number
          format: double
          description: The bid price.
        bs:
          type: integer
          description: The bid size in round lots.
        ax:
          type: integer
          description: The ask exchange ID.
        ap:
          type: number
          format: double
          description: The ask price.
        as:
          type: integer
          description: The ask size in round lots.
        c:
          type: integer
          description: The condition.
        i:
          type: array
          items:
            type: integer
          description: The indicators.
        t:
          type: integer
          description: The SIP timestamp in Unix MS.
        q:
          type: integer
          description: Per-ticker sequence number.
        z:
          type: integer
          description: The tape.
    StockAggregate:
      type: object
      properties:
        ev:
          type: string
          enum: [A]
        sym:
          type: string
        v:
          type: integer
          description: The tick volume.
        av:
          type: integer
          description: Today's accumulated volume.
        op:
          type: number
          format: double
          description: Today's official opening price.
        vw:
          type: number
          format: float
          description: The tick's VWAP.
        o:
          type: number
          format: double
        c:
          type: number
          format: double
        h:
          type: number
          format: double
        l:
          type: number
          format: double
        a:
          type: number
          format: float
          description: Today's VWAP.
        z:
          type: integer
          description: Average trade size for this aggregate window.
        s:
          type: integer
          description: Start timestamp (Unix MS).
        e:
          type: integer
          description: End timestamp (Unix MS).
        otc:
          type: boolean
          description: Present and true when the ticker is OTC.
    StockAggregateMinute:
      allOf:
        - $ref: '#/components/schemas/StockAggregate'
        - type: object
          properties:
            ev:
              type: string
              enum: [AM]
    LimitUpLimitDown:
      type: object
      properties:
        ev:
          type: string
          enum: [LULD]
        T:
          type: string
          description: The ticker symbol.
        h:
          type: number
          format: double
          description: The high price band.
        l:
          type: number
          format: double
          description: The low price band.
        i:
          type: array
          items:
            type: integer
          description: Indicators.
        z:
          type: integer
          description: The tape.
        t:
          type: integer
          description: SIP timestamp in Unix MS.
        q:
          type: integer
          description: Per-ticker sequence number.
    Imbalance:
      type: object
      properties:
        ev:
          type: string
          enum: [NOI]
        T:
          type: string
          description: The ticker symbol.
        t:
          type: integer
          description: SIP timestamp in Unix MS.
        at:
          type: integer
          description: Auction time.
        a:
          type: string
          description: Auction type.
        i:
          type: integer
          description: Symbol sequence.
        x:
          type: integer
          description: Exchange ID.
        o:
          type: integer
          description: Imbalance quantity.
        p:
          type: integer
          description: Paired quantity.
        b:
          type: number
          format: double
          description: Book clearing price.
    FairMarketValue:
      type: object
      properties:
        ev:
          type: string
          enum: [FMV]
        fmv:
          type: number
          format: double
          description: Polygon-derived fair market value.
        sym:
          type: string
          description: The ticker, contract symbol, or pair.
        t:
          type: integer
          description: Nanosecond Unix timestamp.
    LaunchpadAggregateMinute:
      type: object
      properties:
        ev:
          type: string
          enum: [AM]
        sym:
          type: string
        v:
          type: integer
        av:
          type: integer
        op:
          type: number
          format: double
        vw:
          type: number
          format: float
        o:
          type: number
          format: double
        c:
          type: number
          format: double
        h:
          type: number
          format: double
        l:
          type: number
          format: double
        a:
          type: number
          format: float
        z:
          type: integer
        s:
          type: integer
        e:
          type: integer
    LaunchpadValue:
      type: object
      properties:
        ev:
          type: string
          enum: [LV]
      

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/polygon-io/refs/heads/main/asyncapi/polygon-io-asyncapi.yml