Syndica · AsyncAPI Specification

Syndica Solana RPC PubSub & ChainStream WebSocket API

Version 1.0.0

AsyncAPI 2.6 specification for Syndica's Solana WebSocket surface. Covers two products: 1. **Solana RPC PubSub** — JSON-RPC 2.0 subscriptions served from `wss://solana-mainnet.api.syndica.io/api-key/`. Drop-in compatible with the standard Solana PubSub methods (`accountSubscribe`, `blockSubscribe`, `logsSubscribe`, `programSubscribe`, `signatureSubscribe`, `slotSubscribe`, `voteSubscribe`, `rootSubscribe`) and their matching `*Unsubscribe` calls. 2. **ChainStream** — Syndica's proprietary low-latency JSON-RPC 2.0 streaming API served from `wss://chainstream.api.syndica.io/api-key/`. Consolidates updates across multiple validators using a "fastest wins" strategy and supports `transactionsSubscribe`, `slotsSubscribe`, and `blocksSubscribe`, plus their `*Unsubscribe` counterparts. Authentication is performed by embedding the credential in the URL path.

View Spec View on GitHub SolanaBlockchainWeb3RPCStreamingInfrastructureValidatorStakingReal-TimeAsyncAPIEventsWebSockets

Channels

accountSubscribe
publish accountSubscribe
Open an account subscription.
Subscribe to an account to receive notifications when the lamports or data for a given account public key changes.
accountUnsubscribe
publish accountUnsubscribe
Unsubscribe from account-change notifications.
blockSubscribe
publish blockSubscribe
Subscribe to receive notifications when a new block is confirmed or finalized. Filter by `all` or by `mentionsAccountOrProgram`.
blockUnsubscribe
publish blockUnsubscribe
Unsubscribe from block notifications.
logsSubscribe
publish logsSubscribe
Subscribe to transaction log notifications. Filter by `all`, `allWithVotes`, or by `mentions` of one account public key.
logsUnsubscribe
publish logsUnsubscribe
Unsubscribe from log notifications.
programSubscribe
publish programSubscribe
Subscribe to a program to receive notifications when the lamports or data for any account owned by the program changes.
programUnsubscribe
publish programUnsubscribe
Unsubscribe from program-account notifications.
signatureSubscribe
publish signatureSubscribe
Subscribe to a transaction signature to receive a single notification when the transaction reaches the requested commitment level.
signatureUnsubscribe
publish signatureUnsubscribe
Unsubscribe from signature notifications.
slotSubscribe
publish slotSubscribe
Subscribe to receive notification any time a slot is processed by the validator.
slotUnsubscribe
publish slotUnsubscribe
Unsubscribe from slot notifications.
voteSubscribe
publish voteSubscribe
Subscribe to receive notification any time a new vote is observed in gossip. These votes are pre-consensus and not guaranteed to land on chain.
voteUnsubscribe
publish voteUnsubscribe
Unsubscribe from vote notifications.
rootSubscribe
publish rootSubscribe
Subscribe to receive notification any time a new root is set by the validator.
rootUnsubscribe
publish rootUnsubscribe
Unsubscribe from root notifications.
chainstream.transactionsSubscribe
publish chainstreamTransactionsSubscribe
ChainStream `transactionsSubscribe` — receive real-time Solana transaction notifications consolidated across multiple validators. Supports the optional `verified` parameter to deliver only transactions confirmed by multiple validators at `processed` commitment.
chainstream.transactionsUnsubscribe
publish chainstreamTransactionsUnsubscribe
Unsubscribe from ChainStream transaction notifications.
chainstream.slotsSubscribe
publish chainstreamSlotsSubscribe
ChainStream `slotsSubscribe` — real-time slot updates consolidated across validators.
chainstream.slotsUnsubscribe
publish chainstreamSlotsUnsubscribe
Unsubscribe from ChainStream slot notifications.
chainstream.blocksSubscribe
publish chainstreamBlocksSubscribe
ChainStream `blocksSubscribe` — encoded block notifications consolidated across validators.
chainstream.blocksUnsubscribe
publish chainstreamBlocksUnsubscribe
Unsubscribe from ChainStream block notifications.

Messages

✉
SimpleSubscribeRequest
JSON-RPC subscription request (no parameters)
✉
UnsubscribeRequest
JSON-RPC unsubscribe request
✉
UnsubscribeResult
JSON-RPC unsubscribe result
✉
AccountSubscribeRequest
AccountSubscribeRequest
✉
AccountNotification
AccountNotification
✉
BlockSubscribeRequest
BlockSubscribeRequest
✉
BlockNotification
BlockNotification
✉
LogsSubscribeRequest
LogsSubscribeRequest
✉
LogsNotification
LogsNotification
✉
ProgramSubscribeRequest
ProgramSubscribeRequest
✉
ProgramNotification
ProgramNotification
✉
SignatureSubscribeRequest
SignatureSubscribeRequest
✉
SignatureNotification
SignatureNotification
✉
SlotNotification
SlotNotification
✉
VoteNotification
VoteNotification
✉
RootNotification
RootNotification
✉
ChainstreamTransactionsSubscribeRequest
ChainstreamTransactionsSubscribeRequest
✉
ChainstreamTransactionsNotification
ChainstreamTransactionsNotification
✉
ChainstreamSlotsSubscribeRequest
ChainstreamSlotsSubscribeRequest
✉
ChainstreamSlotsNotification
ChainstreamSlotsNotification
✉
ChainstreamBlocksSubscribeRequest
ChainstreamBlocksSubscribeRequest
✉
ChainstreamBlocksNotification
ChainstreamBlocksNotification

Servers

wss
solana-rpc-pubsub solana-mainnet.api.syndica.io/api-key/{apiKey}
Syndica Solana RPC PubSub WebSocket endpoint.
wss
chainstream chainstream.api.syndica.io/api-key/{apiKey}
Syndica ChainStream WebSocket endpoint.

AsyncAPI Specification

Raw ↑
asyncapi: '2.6.0'
info:
  title: Syndica Solana RPC PubSub & ChainStream WebSocket API
  version: '1.0.0'
  description: |
    AsyncAPI 2.6 specification for Syndica's Solana WebSocket surface. Covers two
    products:

      1. **Solana RPC PubSub** — JSON-RPC 2.0 subscriptions served from
         `wss://solana-mainnet.api.syndica.io/api-key/<API_KEY>`. Drop-in
         compatible with the standard Solana PubSub methods (`accountSubscribe`,
         `blockSubscribe`, `logsSubscribe`, `programSubscribe`,
         `signatureSubscribe`, `slotSubscribe`, `voteSubscribe`,
         `rootSubscribe`) and their matching `*Unsubscribe` calls.
      2. **ChainStream** — Syndica's proprietary low-latency JSON-RPC 2.0
         streaming API served from
         `wss://chainstream.api.syndica.io/api-key/<API_KEY>`. Consolidates
         updates across multiple validators using a "fastest wins" strategy
         and supports `transactionsSubscribe`, `slotsSubscribe`, and
         `blocksSubscribe`, plus their `*Unsubscribe` counterparts.

    Authentication is performed by embedding the credential in the URL path.
  contact:
    name: Syndica Support
    url: https://docs.syndica.io
    email: support@syndica.io
  license:
    name: Proprietary
    url: https://syndica.io

defaultContentType: application/json

servers:
  solana-rpc-pubsub:
    url: solana-mainnet.api.syndica.io/api-key/{apiKey}
    protocol: wss
    description: Syndica Solana RPC PubSub WebSocket endpoint.
    variables:
      apiKey:
        description: Syndica API key (credential).
        default: REPLACE_WITH_API_KEY
  chainstream:
    url: chainstream.api.syndica.io/api-key/{apiKey}
    protocol: wss
    description: Syndica ChainStream WebSocket endpoint.
    variables:
      apiKey:
        description: Syndica API key (credential).
        default: REPLACE_WITH_API_KEY

channels:

  # ---------------- Solana RPC PubSub ----------------

  accountSubscribe:
    description: |
      Subscribe to an account to receive notifications when the lamports or data
      for a given account public key changes.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: accountSubscribe
      summary: Open an account subscription.
      message:
        $ref: '#/components/messages/AccountSubscribeRequest'
    subscribe:
      operationId: accountNotification
      summary: Receive account change notifications.
      message:
        $ref: '#/components/messages/AccountNotification'

  accountUnsubscribe:
    description: Unsubscribe from account-change notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: accountUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: accountUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  blockSubscribe:
    description: |
      Subscribe to receive notifications when a new block is confirmed or
      finalized. Filter by `all` or by `mentionsAccountOrProgram`.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: blockSubscribe
      message:
        $ref: '#/components/messages/BlockSubscribeRequest'
    subscribe:
      operationId: blockNotification
      message:
        $ref: '#/components/messages/BlockNotification'

  blockUnsubscribe:
    description: Unsubscribe from block notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: blockUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: blockUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  logsSubscribe:
    description: |
      Subscribe to transaction log notifications. Filter by `all`, `allWithVotes`,
      or by `mentions` of one account public key.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: logsSubscribe
      message:
        $ref: '#/components/messages/LogsSubscribeRequest'
    subscribe:
      operationId: logsNotification
      message:
        $ref: '#/components/messages/LogsNotification'

  logsUnsubscribe:
    description: Unsubscribe from log notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: logsUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: logsUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  programSubscribe:
    description: |
      Subscribe to a program to receive notifications when the lamports or data
      for any account owned by the program changes.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: programSubscribe
      message:
        $ref: '#/components/messages/ProgramSubscribeRequest'
    subscribe:
      operationId: programNotification
      message:
        $ref: '#/components/messages/ProgramNotification'

  programUnsubscribe:
    description: Unsubscribe from program-account notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: programUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: programUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  signatureSubscribe:
    description: |
      Subscribe to a transaction signature to receive a single notification when
      the transaction reaches the requested commitment level.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: signatureSubscribe
      message:
        $ref: '#/components/messages/SignatureSubscribeRequest'
    subscribe:
      operationId: signatureNotification
      message:
        $ref: '#/components/messages/SignatureNotification'

  signatureUnsubscribe:
    description: Unsubscribe from signature notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: signatureUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: signatureUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  slotSubscribe:
    description: Subscribe to receive notification any time a slot is processed by the validator.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: slotSubscribe
      message:
        $ref: '#/components/messages/SimpleSubscribeRequest'
    subscribe:
      operationId: slotNotification
      message:
        $ref: '#/components/messages/SlotNotification'

  slotUnsubscribe:
    description: Unsubscribe from slot notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: slotUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: slotUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  voteSubscribe:
    description: |
      Subscribe to receive notification any time a new vote is observed in gossip.
      These votes are pre-consensus and not guaranteed to land on chain.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: voteSubscribe
      message:
        $ref: '#/components/messages/SimpleSubscribeRequest'
    subscribe:
      operationId: voteNotification
      message:
        $ref: '#/components/messages/VoteNotification'

  voteUnsubscribe:
    description: Unsubscribe from vote notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: voteUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: voteUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  rootSubscribe:
    description: Subscribe to receive notification any time a new root is set by the validator.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: rootSubscribe
      message:
        $ref: '#/components/messages/SimpleSubscribeRequest'
    subscribe:
      operationId: rootNotification
      message:
        $ref: '#/components/messages/RootNotification'

  rootUnsubscribe:
    description: Unsubscribe from root notifications.
    servers:
      - solana-rpc-pubsub
    publish:
      operationId: rootUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: rootUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  # ---------------- ChainStream ----------------

  chainstream.transactionsSubscribe:
    description: |
      ChainStream `transactionsSubscribe` — receive real-time Solana transaction
      notifications consolidated across multiple validators. Supports the optional
      `verified` parameter to deliver only transactions confirmed by multiple
      validators at `processed` commitment.
    servers:
      - chainstream
    publish:
      operationId: chainstreamTransactionsSubscribe
      message:
        $ref: '#/components/messages/ChainstreamTransactionsSubscribeRequest'
    subscribe:
      operationId: chainstreamTransactionsNotification
      message:
        $ref: '#/components/messages/ChainstreamTransactionsNotification'

  chainstream.transactionsUnsubscribe:
    description: Unsubscribe from ChainStream transaction notifications.
    servers:
      - chainstream
    publish:
      operationId: chainstreamTransactionsUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: chainstreamTransactionsUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  chainstream.slotsSubscribe:
    description: ChainStream `slotsSubscribe` — real-time slot updates consolidated across validators.
    servers:
      - chainstream
    publish:
      operationId: chainstreamSlotsSubscribe
      message:
        $ref: '#/components/messages/ChainstreamSlotsSubscribeRequest'
    subscribe:
      operationId: chainstreamSlotsNotification
      message:
        $ref: '#/components/messages/ChainstreamSlotsNotification'

  chainstream.slotsUnsubscribe:
    description: Unsubscribe from ChainStream slot notifications.
    servers:
      - chainstream
    publish:
      operationId: chainstreamSlotsUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: chainstreamSlotsUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

  chainstream.blocksSubscribe:
    description: ChainStream `blocksSubscribe` — encoded block notifications consolidated across validators.
    servers:
      - chainstream
    publish:
      operationId: chainstreamBlocksSubscribe
      message:
        $ref: '#/components/messages/ChainstreamBlocksSubscribeRequest'
    subscribe:
      operationId: chainstreamBlocksNotification
      message:
        $ref: '#/components/messages/ChainstreamBlocksNotification'

  chainstream.blocksUnsubscribe:
    description: Unsubscribe from ChainStream block notifications.
    servers:
      - chainstream
    publish:
      operationId: chainstreamBlocksUnsubscribe
      message:
        $ref: '#/components/messages/UnsubscribeRequest'
    subscribe:
      operationId: chainstreamBlocksUnsubscribeResult
      message:
        $ref: '#/components/messages/UnsubscribeResult'

components:

  messages:

    # ---- Generic JSON-RPC envelopes ----

    SimpleSubscribeRequest:
      name: SimpleSubscribeRequest
      title: JSON-RPC subscription request (no parameters)
      payload:
        type: object
        required: [jsonrpc, id, method]
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string }
          params:
            type: array
            items: {}

    UnsubscribeRequest:
      name: UnsubscribeRequest
      title: JSON-RPC unsubscribe request
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string }
          params:
            type: array
            items: { type: integer }
            description: '[subscriptionId]'

    UnsubscribeResult:
      name: UnsubscribeResult
      title: JSON-RPC unsubscribe result
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          result: { type: boolean }

    # ---- accountSubscribe ----

    AccountSubscribeRequest:
      name: AccountSubscribeRequest
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [accountSubscribe] }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              oneOf:
                - type: string
                  description: Account public key (base-58).
                - $ref: '#/components/schemas/AccountSubscribeConfig'

    AccountNotification:
      name: AccountNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [accountNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  context:
                    $ref: '#/components/schemas/RpcContext'
                  value:
                    $ref: '#/components/schemas/AccountInfo'

    # ---- blockSubscribe ----

    BlockSubscribeRequest:
      name: BlockSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [blockSubscribe] }
          params:
            type: array
            items:
              oneOf:
                - type: string
                  enum: [all]
                - type: object
                  properties:
                    mentionsAccountOrProgram: { type: string }
                - $ref: '#/components/schemas/BlockSubscribeConfig'

    BlockNotification:
      name: BlockNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [blockNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  context:
                    $ref: '#/components/schemas/RpcContext'
                  value:
                    type: object
                    properties:
                      slot: { type: integer }
                      err: { type: [object, 'null'] }
                      block:
                        $ref: '#/components/schemas/Block'

    # ---- logsSubscribe ----

    LogsSubscribeRequest:
      name: LogsSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [logsSubscribe] }
          params:
            type: array
            items:
              oneOf:
                - type: string
                  enum: [all, allWithVotes]
                - type: object
                  properties:
                    mentions:
                      type: array
                      items: { type: string }
                - $ref: '#/components/schemas/CommitmentConfig'

    LogsNotification:
      name: LogsNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [logsNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  context:
                    $ref: '#/components/schemas/RpcContext'
                  value:
                    type: object
                    properties:
                      signature: { type: string }
                      err: { type: [object, 'null'] }
                      logs:
                        type: array
                        items: { type: string }

    # ---- programSubscribe ----

    ProgramSubscribeRequest:
      name: ProgramSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [programSubscribe] }
          params:
            type: array
            items:
              oneOf:
                - type: string
                  description: Program public key (base-58).
                - $ref: '#/components/schemas/ProgramSubscribeConfig'

    ProgramNotification:
      name: ProgramNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [programNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  context:
                    $ref: '#/components/schemas/RpcContext'
                  value:
                    type: object
                    properties:
                      pubkey: { type: string }
                      account:
                        $ref: '#/components/schemas/AccountInfo'

    # ---- signatureSubscribe ----

    SignatureSubscribeRequest:
      name: SignatureSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [signatureSubscribe] }
          params:
            type: array
            items:
              oneOf:
                - type: string
                  description: Transaction signature (base-58).
                - $ref: '#/components/schemas/SignatureSubscribeConfig'

    SignatureNotification:
      name: SignatureNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [signatureNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  context:
                    $ref: '#/components/schemas/RpcContext'
                  value:
                    type: object
                    properties:
                      err: { type: [object, 'null'] }

    # ---- slotSubscribe ----

    SlotNotification:
      name: SlotNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [slotNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  parent: { type: integer }
                  root: { type: integer }
                  slot: { type: integer }

    # ---- voteSubscribe ----

    VoteNotification:
      name: VoteNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [voteNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  hash: { type: string }
                  slots:
                    type: array
                    items: { type: integer }
                  timestamp: { type: [integer, 'null'] }
                  signature: { type: string }
                  votePubkey: { type: string }

    # ---- rootSubscribe ----

    RootNotification:
      name: RootNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [rootNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: integer
                description: Latest root slot number.

    # ---- ChainStream ----

    ChainstreamTransactionsSubscribeRequest:
      name: ChainstreamTransactionsSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [transactionsSubscribe] }
          params:
            type: array
            items:
              type: object
              properties:
                network: { type: string, enum: [solana-mainnet] }
                verified:
                  type: boolean
                  description: When true, deliver only transactions confirmed by multiple validators at `processed` commitment.
                filter:
                  type: object
                  description: Filter by accounts included/excluded, vote, failed status, etc.

    ChainstreamTransactionsNotification:
      name: ChainstreamTransactionsNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [transactionsNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  slot: { type: integer }
                  signature: { type: string }
                  transaction:
                    type: object
                    description: Encoded transaction payload.
                  meta:
                    type: object
                    description: Transaction status metadata.

    ChainstreamSlotsSubscribeRequest:
      name: ChainstreamSlotsSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [slotsSubscribe] }
          params:
            type: array
            items:
              type: object
              properties:
                network: { type: string, enum: [solana-mainnet] }

    ChainstreamSlotsNotification:
      name: ChainstreamSlotsNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [slotsNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  slot: { type: integer }
                  parent: { type: integer }
                  status: { type: string, enum: [processed, confirmed, finalized] }

    ChainstreamBlocksSubscribeRequest:
      name: ChainstreamBlocksSubscribeRequest
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          id: { type: integer }
          method: { type: string, enum: [blocksSubscribe] }
          params:
            type: array
            items:
              type: object
              properties:
                network: { type: string, enum: [solana-mainnet] }
                encoding: { type: string, enum: [base64, base58, json, jsonParsed] }
                transactionDetails: { type: string, enum: [full, accounts, signatures, none] }

    ChainstreamBlocksNotification:
      name: ChainstreamBlocksNotification
      payload:
        type: object
        properties:
          jsonrpc: { type: string, enum: ['2.0'] }
          method: { type: string, enum: [blocksNotification] }
          params:
            type: object
            properties:
              subscription: { type: integer }
              result:
                type: object
                properties:
                  slot: { type: integer }
                  block:
                    $ref: '#/components/schemas/Block'

  schemas:

    Commitment:
      type: string
      enum: [processed, confirmed, finalized]

    CommitmentConfig:
      type: object
      properties:
        commitment:
          $ref: '#/components/schemas/Commitment'

    Encoding:
      type: string
      enum: [base58, base64, base64+zstd, jsonParsed]

    RpcContext:
      type: object
      properties:
        slot: { type: integer }
        apiVersion: { type: string }

    AccountInfo:
      type: object
      properties:
        lamports: { type: integer }
        owner: { type: string }
        data:
          oneOf:
            - type: array
              items: { type: string }
            - type: object
        executable: { type: boolean }
        rentEpoch: { type: integer }
        space: { type: integer }

    AccountSubscribeConfig:
      type: object
      properties:
        commitment:
          $ref: '#/components/schemas/Commitment'
        encoding:
          $ref: '#/components/schemas/Encoding'

    BlockSubscribeConfig:
      type: object
      properties:
        commitment:
          $ref: '#/components/schemas/Commitment'
        encoding:
          $ref: '#/components/schemas/Encoding'
        transactionDetails:
          type: string
          enum: [full, accounts, signatures, none]
        showRewards: { type: boolean }
        maxSupportedTransactionVersion: { type: integer }

    ProgramSubscribeConfig:
      type: object
      properties:
        commitment:
          $ref: '#/components/schemas/Commitment'
        encoding:
          $ref: '#/components/schemas/Encoding'
        filters:
          type: array
          items: { type: object }
        withContext: { type: boolean }

    SignatureSubscribeConfig:
      type: object
      properties:
        commitment:
          $ref: '#/components/schemas/Commitment'
        enableReceivedNotification: { type: boolean }

    Block:
      type: object
      properties:
        blockHeight: { type: integer }
        blockTime: { type: [integer, 'null'] }
        blockhash: { type: string }
        parentSlot: { type: integer }
        previousBlockhash: { type: string }
        transactions:
          type: array
          items: { type: object }
        rewards:
          type: array
          items: { type: object }

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/syndica-io-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 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.