Refinitiv Real-Time WebSocket API

Low-latency streaming API for real-time market data using WebSocket connections. It supports the Open Message Model (OMM) and allows applications to connect directly to Refinitiv Real-Time distribution systems or the LSEG Data Platform for streaming data.

Work with this as data

Every API 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 apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/refinitiv-real-time-websocket-api"
All apis
curl "https://apis.io/api/v1/apis?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.

AsyncAPI Specification

refinitiv-real-time-websocket-asyncapi.yml Raw ↑
asyncapi: 2.6.0
info:
  title: Refinitiv Real-Time WebSocket API
  version: '1.0.0'
  description: >-
    Low-latency streaming API for real-time market data using WebSocket
    connections. It supports the Open Message Model (OMM) and allows
    applications to connect directly to Refinitiv Real-Time distribution
    systems or the LSEG Data Platform for streaming pricing data, market
    depth, news, and other real-time content using JSON message formats
    over standard WebSocket connections.
  contact:
    name: LSEG Developer Support
    url: https://developers.lseg.com/en/support
  license:
    name: LSEG Terms of Service
    url: https://developers.lseg.com/en/terms-and-conditions
externalDocs:
  description: Refinitiv Real-Time WebSocket API Documentation
  url: https://developers.lseg.com/en/api-catalog/refinitiv-real-time-opnsrc/refinitiv-websocket-api/documentation
servers:
  realTimeOptimized:
    url: wss://api.refinitiv.com/streaming/pricing/v1/
    protocol: wss
    description: >-
      LSEG Real-Time Optimized (RTO) cloud streaming service. Endpoint
      discovery is performed via the RDP streaming/pricing/v1 REST API
      before connecting. Requires a valid OAuth 2.0 access token from the
      RDP authentication service.
    security:
      - bearerToken: []
  realTimeDistribution:
    url: wss://{ads-hostname}:{port}/WebSocket
    protocol: wss
    description: >-
      On-premise Real-Time Distribution System (ADS/RTDS) WebSocket
      endpoint. Hostname and port are configured based on the local
      deployment. Authentication uses DACS username and optional
      application ID.
defaultContentType: application/json
channels:
  login:
    description: >-
      Authentication channel for establishing a streaming session. A Login
      request must be the first message sent after opening the WebSocket
      connection. The server responds with a Login refresh indicating
      session status and entitlements.
    publish:
      operationId: sendLoginRequest
      summary: Send login request
      message:
        $ref: '#/components/messages/LoginRequest'
    subscribe:
      operationId: receiveLoginResponse
      summary: Receive login response
      message:
        $ref: '#/components/messages/LoginResponse'
  pricingStream:
    description: >-
      Channel for subscribing to and receiving real-time pricing updates
      for financial instruments. Clients send Market Price requests
      specifying RICs and receive refresh messages with initial snapshots
      followed by update messages as prices change.
    publish:
      operationId: sendMarketPriceRequest
      summary: Request market price streaming data
      message:
        $ref: '#/components/messages/MarketPriceRequest'
    subscribe:
      operationId: receiveMarketPriceData
      summary: Receive market price updates
      message:
        oneOf:
          - $ref: '#/components/messages/MarketPriceRefresh'
          - $ref: '#/components/messages/MarketPriceUpdate'
          - $ref: '#/components/messages/StatusMessage'
  marketDepth:
    description: >-
      Channel for subscribing to Level 2 market depth data showing the
      full order book for financial instruments. Provides bid and ask
      levels with associated sizes.
    publish:
      operationId: sendMarketByPriceRequest
      summary: Request market depth data
      message:
        $ref: '#/components/messages/MarketByPriceRequest'
    subscribe:
      operationId: receiveMarketByPriceData
      summary: Receive market depth updates
      message:
        oneOf:
          - $ref: '#/components/messages/MarketByPriceRefresh'
          - $ref: '#/components/messages/MarketByPriceUpdate'
          - $ref: '#/components/messages/StatusMessage'
  ping:
    description: >-
      Heartbeat channel for keeping the WebSocket connection alive. The
      server sends periodic ping messages and the client must respond with
      pong messages to maintain the connection.
    publish:
      operationId: sendPong
      summary: Send pong heartbeat response
      message:
        $ref: '#/components/messages/PongMessage'
    subscribe:
      operationId: receivePing
      summary: Receive ping heartbeat
      message:
        $ref: '#/components/messages/PingMessage'
components:
  securitySchemes:
    bearerToken:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: >-
        OAuth 2.0 Bearer token obtained from the RDP authentication
        service at /auth/oauth2/v1/token.
  messages:
    LoginRequest:
      name: LoginRequest
      title: Login Request
      summary: >-
        Initial authentication message sent to establish a streaming session.
      payload:
        type: object
        required:
          - ID
          - Domain
          - Key
        properties:
          ID:
            type: integer
            description: >-
              Stream identifier for the login stream, typically 1.
          Domain:
            type: string
            const: Login
            description: >-
              The message domain, always Login for authentication.
          Key:
            type: object
            properties:
              Name:
                type: string
                description: >-
                  The machine ID or DACS username for authentication.
              Elements:
                type: object
                properties:
                  ApplicationId:
                    type: string
                    description: >-
                      The application identifier, typically 256.
                  Position:
                    type: string
                    description: >-
                      The application position, typically the IP address
                      and hostname.
                  AuthenticationToken:
                    type: string
                    description: >-
                      The OAuth 2.0 access token for RTO connections.
              NameType:
                type: string
                description: >-
                  The type of name used for authentication.
                enum:
                  - AuthnToken
                  - USER_NAME
    LoginResponse:
      name: LoginResponse
      title: Login Response
      summary: >-
        Response to the login request indicating session status and
        entitlements.
      payload:
        type: object
        properties:
          ID:
            type: integer
            description: >-
              The stream identifier matching the login request.
          Type:
            type: string
            description: >-
              The message type, typically Refresh for a successful login.
            enum:
              - Refresh
              - Status
          Domain:
            type: string
            const: Login
          Key:
            type: object
            properties:
              Name:
                type: string
                description: >-
                  The authenticated username.
          State:
            type: object
            properties:
              Stream:
                type: string
                description: >-
                  Stream state, Open for active sessions.
              Data:
                type: string
                description: >-
                  Data state, Ok for successful authentication.
              Text:
                type: string
                description: >-
                  Status text message.
          Elements:
            type: object
            properties:
              MaxMsgSize:
                type: integer
                description: >-
                  Maximum message size supported.
    MarketPriceRequest:
      name: MarketPriceRequest
      title: Market Price Request
      summary: >-
        Request to subscribe to real-time pricing data for instruments.
      payload:
        type: object
        required:
          - ID
          - Key
        properties:
          ID:
            type: integer
            description: >-
              Unique stream identifier for this subscription.
          Key:
            type: object
            properties:
              Name:
                type: string
                description: >-
                  The RIC or instrument identifier to subscribe to.
              Service:
                type: string
                description: >-
                  The data service name such as ELEKTRON_DD.
          Streaming:
            type: boolean
            description: >-
              Whether to receive streaming updates or just a snapshot.
          View:
            type: array
            items:
              type: integer
            description: >-
              Field IDs to include in the response, for bandwidth
              optimization.
    MarketPriceRefresh:
      name: MarketPriceRefresh
      title: Market Price Refresh
      summary: >-
        Initial snapshot of pricing data for a subscribed instrument.
      payload:
        type: object
        properties:
          ID:
            type: integer
            description: >-
              The stream identifier for this subscription.
          Type:
            type: string
            const: Refresh
          Key:
            type: object
            properties:
              Name:
                type: string
                description: >-
                  The RIC of the instrument.
              Service:
                type: string
                description: >-
                  The data service name.
          State:
            type: object
            properties:
              Stream:
                type: string
                description: >-
                  Stream state.
              Data:
                type: string
                description: >-
                  Data state.
          Fields:
            type: object
            additionalProperties: true
            description: >-
              Map of field names to their current values. Common fields
              include BID, ASK, TRDPRC_1 (last trade), ACVOL_1 (volume),
              HIGH_1, LOW_1, OPEN_PRC, and HST_CLOSE.
    MarketPriceUpdate:
      name: MarketPriceUpdate
      title: Market Price Update
      summary: >-
        Incremental pricing update for a subscribed instrument containing
        only changed fields.
      payload:
        type: object
        properties:
          ID:
            type: integer
            description: >-
              The stream identifier for this subscription.
          Type:
            type: string
            const: Update
          UpdateType:
            type: string
            description: >-
              The type of update such as Trade or Quote.
          Fields:
            type: object
            additionalProperties: true
            description: >-
              Map of changed field names to their new values.
    MarketByPriceRequest:
      name: MarketByPriceRequest
      title: Market By Price Request
      summary: >-
        Request to subscribe to Level 2 market depth data.
      payload:
        type: object
        required:
          - ID
          - Domain
          - Key
        properties:
          ID:
            type: integer
            description: >-
              Unique stream identifier.
          Domain:
            type: string
            const: MarketByPrice
          Key:
            type: object
            properties:
              Name:
                type: string
                description: >-
                  The RIC of the instrument.
              Service:
                type: string
                description: >-
                  The data service name.
    MarketByPriceRefresh:
      name: MarketByPriceRefresh
      title: Market By Price Refresh
      summary: >-
        Initial snapshot of the full order book for a subscribed instrument.
      payload:
        type: object
        properties:
          ID:
            type: integer
          Type:
            type: string
            const: Refresh
          Domain:
            type: string
            const: MarketByPrice
          Key:
            type: object
            properties:
              Name:
                type: string
              Service:
                type: string
          Map:
            type: object
            description: >-
              Map entries containing bid and ask price levels with
              associated order sizes.
    MarketByPriceUpdate:
      name: MarketByPriceUpdate
      title: Market By Price Update
      summary: >-
        Incremental update to the order book for a subscribed instrument.
      payload:
        type: object
        properties:
          ID:
            type: integer
          Type:
            type: string
            const: Update
          Domain:
            type: string
            const: MarketByPrice
          Map:
            type: object
            description: >-
              Updated map entries for changed price levels.
    StatusMessage:
      name: StatusMessage
      title: Status Message
      summary: >-
        Status message indicating stream state changes such as errors,
        closures, or redirects.
      payload:
        type: object
        properties:
          ID:
            type: integer
            description: >-
              The stream identifier.
          Type:
            type: string
            const: Status
          State:
            type: object
            properties:
              Stream:
                type: string
                description: >-
                  Stream state such as Open, Closed, or ClosedRecover.
              Data:
                type: string
                description: >-
                  Data state such as Ok or Suspect.
              Code:
                type: string
                description: >-
                  Status code such as NotFound or NotEntitled.
              Text:
                type: string
                description: >-
                  Human-readable status message.
    PingMessage:
      name: PingMessage
      title: Ping Message
      summary: >-
        Server heartbeat message that must be responded to with a pong.
      payload:
        type: object
        properties:
          Type:
            type: string
            const: Ping
    PongMessage:
      name: PongMessage
      title: Pong Message
      summary: >-
        Client heartbeat response to a server ping message.
      payload:
        type: object
        properties:
          Type:
            type: string
            const: Pong