Railway · AsyncAPI Specification

Railway GraphQL Subscriptions (WebSocket)

Version 1.0.0

AsyncAPI 2.6 description of Railway's **real-time log streaming** surface. Unlike many providers in this catalog, Railway **does** publish a documented public WebSocket transport. Railway's GraphQL Public API is served over both HTTP (queries and mutations) and WebSocket (subscriptions): - HTTP: https://backboard.railway.com/graphql/v2 - WebSocket: wss://backboard.railway.com/graphql/v2 GraphQL subscriptions are delivered over the WebSocket endpoint using the standard GraphQL-over-WebSocket protocol (graphql-transport-ws / graphql-ws). This is the transport the `railway logs` CLI command uses to stream logs in real time, and the same one community tools such as `railway-chord` use to egress Railway logs into external sinks. This document models the four documented log subscription streams: buildLogs, deploymentLogs, environmentLogs, and httpLogs. Queries and mutations (the request/response half of the API) are modeled in the companion GraphQL SDL at `graphql/railway-app-schema.graphql`.

View Spec View on GitHub DeploymentPlatform-as-a-ServiceCloudInfrastructureGraphQLDevOpsAsyncAPIWebhooksEvents

Channels

deploymentLogs
subscribe streamDeploymentLogs
Stream runtime deployment logs.
Real-time runtime logs for a single deployment. Opened via the GraphQL `subscription deploymentLogs(deploymentId: String!)`.
buildLogs
subscribe streamBuildLogs
Stream build logs.
Real-time build logs for a deployment. Opened via the GraphQL `subscription buildLogs(deploymentId: String!)`.
environmentLogs
subscribe streamEnvironmentLogs
Stream environment-wide logs.
Real-time logs across every service in an environment. Opened via the GraphQL `subscription environmentLogs(environmentId: String!)`.
httpLogs
subscribe streamHttpLogs
Stream HTTP request logs.
Real-time HTTP request logs for a deployment. Opened via the GraphQL `subscription httpLogs(deploymentId: String!)`.

Messages

LogEntry
Log entry
A single log line pushed on a subscription stream.

Servers

wss
backboard backboard.railway.com/graphql/v2
Railway GraphQL WebSocket endpoint. Clients open a WebSocket using a GraphQL-over-WebSocket subprotocol, send a `connection_init` with the Bearer token, then `subscribe` to one of the log streams below. The server pushes `next` messages carrying batches of log entries until the client sends `complete` or the socket closes.

AsyncAPI Specification

Raw ↑
asyncapi: '2.6.0'
id: 'urn:com:railway:backboard:graphql:subscriptions'
info:
  title: Railway GraphQL Subscriptions (WebSocket)
  version: '1.0.0'
  description: |
    AsyncAPI 2.6 description of Railway's **real-time log streaming** surface.

    Unlike many providers in this catalog, Railway **does** publish a documented
    public WebSocket transport. Railway's GraphQL Public API is served over both
    HTTP (queries and mutations) and WebSocket (subscriptions):

      - HTTP:      https://backboard.railway.com/graphql/v2
      - WebSocket: wss://backboard.railway.com/graphql/v2

    GraphQL subscriptions are delivered over the WebSocket endpoint using the
    standard GraphQL-over-WebSocket protocol (graphql-transport-ws / graphql-ws).
    This is the transport the `railway logs` CLI command uses to stream logs in
    real time, and the same one community tools such as `railway-chord` use to
    egress Railway logs into external sinks.

    This document models the four documented log subscription streams:
    buildLogs, deploymentLogs, environmentLogs, and httpLogs. Queries and
    mutations (the request/response half of the API) are modeled in the
    companion GraphQL SDL at `graphql/railway-app-schema.graphql`.
  contact:
    name: API Evangelist
    email: kin@apievangelist.com
    url: https://apievangelist.com
  license:
    name: API documentation - Railway Terms of Service
    url: https://railway.com/legal/terms
  x-transport-notes:
    transport: GraphQL subscriptions over WebSocket
    subprotocol: graphql-transport-ws / graphql-ws
    protocol: wss
    direction: server-to-client (push after client-initiated subscribe)
    endpoint: 'wss://backboard.railway.com/graphql/v2'
    isWebSocket: true
    source: https://docs.railway.com/reference/public-api
defaultContentType: application/json
servers:
  backboard:
    url: backboard.railway.com/graphql/v2
    protocol: wss
    description: |
      Railway GraphQL WebSocket endpoint. Clients open a WebSocket using a
      GraphQL-over-WebSocket subprotocol, send a `connection_init` with the
      Bearer token, then `subscribe` to one of the log streams below. The
      server pushes `next` messages carrying batches of log entries until the
      client sends `complete` or the socket closes.
    security:
      - bearerAuth: []
channels:
  deploymentLogs:
    description: |
      Real-time runtime logs for a single deployment. Opened via the GraphQL
      `subscription deploymentLogs(deploymentId: String!)`.
    subscribe:
      operationId: streamDeploymentLogs
      summary: Stream runtime deployment logs.
      message:
        $ref: '#/components/messages/LogEntry'
  buildLogs:
    description: |
      Real-time build logs for a deployment. Opened via the GraphQL
      `subscription buildLogs(deploymentId: String!)`.
    subscribe:
      operationId: streamBuildLogs
      summary: Stream build logs.
      message:
        $ref: '#/components/messages/LogEntry'
  environmentLogs:
    description: |
      Real-time logs across every service in an environment. Opened via the
      GraphQL `subscription environmentLogs(environmentId: String!)`.
    subscribe:
      operationId: streamEnvironmentLogs
      summary: Stream environment-wide logs.
      message:
        $ref: '#/components/messages/LogEntry'
  httpLogs:
    description: |
      Real-time HTTP request logs for a deployment. Opened via the GraphQL
      `subscription httpLogs(deploymentId: String!)`.
    subscribe:
      operationId: streamHttpLogs
      summary: Stream HTTP request logs.
      message:
        $ref: '#/components/messages/LogEntry'
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: 'Railway API token'
      description: |
        Railway account, workspace, or OAuth token. Passed in the WebSocket
        `connection_init` payload as `{ "Authorization": "Bearer <TOKEN>" }`.
  messages:
    LogEntry:
      name: LogEntry
      title: Log entry
      summary: A single log line pushed on a subscription stream.
      contentType: application/json
      payload:
        $ref: '#/components/schemas/LogEntry'
      examples:
        - name: infoLine
          summary: An informational log line
          payload:
            timestamp: '2026-07-02T18:24:14Z'
            message: 'Starting Container'
            severity: 'INFO'
  schemas:
    LogEntry:
      type: object
      required:
        - timestamp
        - message
      properties:
        timestamp:
          type: string
          format: date-time
          description: When the log line was emitted.
        message:
          type: string
          description: The log message text.
        severity:
          type: string
          enum:
            - INFO
            - WARN
            - ERROR
            - DEBUG
          description: Log severity, when classified.
        tags:
          type: object
          description: Structured tags attached to the log line (service, deployment, etc.).
        attributes:
          type: object
          description: Additional structured attributes parsed from the log line.

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.
All 92 tools

Call it yourself

curl for this page
This AsyncAPI spec
curl "https://apis.io/api/v1/asyncapis/railway-app-asyncapi"
All 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 email required.

A second provider on the same verified email joins the account you already have.