QuickNode · AsyncAPI Specification

QuickNode WebSocket Subscription API

Version 1.0.0

AsyncAPI definition for QuickNode WebSocket subscription endpoints across Ethereum (and EVM-compatible chains) and Solana. All subscriptions use the JSON-RPC 2.0 envelope. After a successful subscription request the server responds with a subscription id; the server then pushes notifications via the corresponding `*Notification` method until the client unsubscribes. Sources: - https://www.quicknode.com/docs/ethereum/eth_subscribe - https://www.quicknode.com/docs/solana/accountSubscribe - https://www.quicknode.com/docs/solana/blockSubscribe - https://www.quicknode.com/docs/solana/logsSubscribe - https://www.quicknode.com/docs/solana/programSubscribe - https://www.quicknode.com/docs/solana/signatureSubscribe - https://www.quicknode.com/docs/solana/slotSubscribe - https://www.quicknode.com/docs/solana/slotsUpdatesSubscribe - https://www.quicknode.com/docs/solana/voteSubscribe - https://www.quicknode.com/docs/solana/rootSubscribe

View Spec View on GitHub Web3BlockchainRPCStreamsIPFSMulti-chainAsyncAPIWebhooksEvents

Channels

ethereum/newHeads
publish subscribeEthNewHeads
Send eth_subscribe / eth_unsubscribe for newHeads
Subscribe to new block headers on Ethereum (or any EVM chain) via `eth_subscribe` with the `newHeads` subscription type. The server returns a hex-encoded subscription id and then streams a notification for every new block header. Cancel with `eth_unsubscribe`.
ethereum/logs
publish subscribeEthLogs
Send eth_subscribe / eth_unsubscribe for logs
Subscribe to event logs matching filter criteria (addresses, topics) via `eth_subscribe` with the `logs` subscription type.
ethereum/newPendingTransactions
publish subscribeEthNewPendingTransactions
Send eth_subscribe / eth_unsubscribe for newPendingTransactions
Subscribe to pending transactions entering the mempool via `eth_subscribe` with the `newPendingTransactions` subscription type. With the optional boolean flag set to true, full transaction objects are returned instead of hashes.
ethereum/syncing
publish subscribeEthSyncing
Send eth_subscribe / eth_unsubscribe for syncing
Subscribe to node sync state changes via `eth_subscribe` with the `syncing` subscription type. Notifications are emitted when the node starts or stops syncing and with periodic progress reports.
solana/accountSubscribe
publish subscribeSolanaAccount
Send accountSubscribe / accountUnsubscribe
Subscribe to changes (lamports or data) on a specific Solana account identified by a base-58 encoded Pubkey. Notifications use the same shape as the `getAccountInfo` RPC response. Cancel with `accountUnsubscribe`.
solana/blockSubscribe
publish subscribeSolanaBlock
Send blockSubscribe / blockUnsubscribe
Subscribe to new confirmed or finalized blocks. The notification block payload mirrors the structure returned by `getBlock`. Cancel with `blockUnsubscribe`.
solana/logsSubscribe
publish subscribeSolanaLogs
Send logsSubscribe / logsUnsubscribe
Subscribe to transaction logs filtered by `all`, `allWithVotes`, or an object filter (e.g. mentioning a particular account). Cancel with `logsUnsubscribe`.
solana/programSubscribe
publish subscribeSolanaProgram
Send programSubscribe / programUnsubscribe
Subscribe to changes for any account owned by a specific program. The notification payload mirrors `getProgramAccounts`. Cancel with `programUnsubscribe`.
solana/signatureSubscribe
publish subscribeSolanaSignature
Send signatureSubscribe / signatureUnsubscribe
Subscribe to confirmation of a specific transaction signature. The subscription is automatically cancelled after the notification is delivered.
solana/slotSubscribe
publish subscribeSolanaSlot
Send slotSubscribe / slotUnsubscribe
Subscribe to slot processing notifications. Cancel with `slotUnsubscribe`.
solana/slotsUpdatesSubscribe
publish subscribeSolanaSlotsUpdates
Send slotsUpdatesSubscribe / slotsUpdatesUnsubscribe
Subscribe to detailed slot update lifecycle events (firstShredReceived, completed, createdBank, frozen, dead, optimisticConfirmation, root). Cancel with `slotsUpdatesUnsubscribe`.
solana/voteSubscribe
publish subscribeSolanaVote
Send voteSubscribe / voteUnsubscribe
Subscribe to pre-consensus validator vote notifications. Cancel with `voteUnsubscribe`. Note: votes are pre-consensus and may not enter the ledger.
solana/rootSubscribe
publish subscribeSolanaRoot
Send rootSubscribe / rootUnsubscribe
Subscribe to new root slot notifications. Cancel with `rootUnsubscribe`.

Messages

EthSubscribeNewHeadsRequest
eth_subscribe newHeads request
Subscribe to new block headers
EthSubscribeLogsRequest
eth_subscribe logs request
Subscribe to logs matching an optional address/topics filter
EthSubscribeNewPendingTransactionsRequest
eth_subscribe newPendingTransactions request
Subscribe to pending transactions in the mempool
EthSubscribeSyncingRequest
eth_subscribe syncing request
Subscribe to node sync state notifications
EthUnsubscribeRequest
eth_unsubscribe request
Cancel an active eth_subscribe subscription
EthSubscribeResponse
eth_subscribe response
Returned subscription id (hex string)
EthUnsubscribeResponse
eth_unsubscribe response
EthNewHeadsNotification
eth_subscription newHeads notification
EthLogsNotification
eth_subscription logs notification
EthNewPendingTransactionsNotification
eth_subscription newPendingTransactions notification
EthSyncingNotification
eth_subscription syncing notification
SolSubscribeResponse
Solana *Subscribe response
Returned subscription id (integer)
SolUnsubscribeResponse
Solana *Unsubscribe response
SolAccountSubscribeRequest
accountSubscribe request
SolAccountUnsubscribeRequest
accountUnsubscribe request
SolAccountNotification
accountNotification
Notification matching the getAccountInfo response shape
SolBlockSubscribeRequest
blockSubscribe request
SolBlockUnsubscribeRequest
blockUnsubscribe request
SolBlockNotification
blockNotification
SolLogsSubscribeRequest
logsSubscribe request
SolLogsUnsubscribeRequest
logsUnsubscribe request
SolLogsNotification
logsNotification
SolProgramSubscribeRequest
programSubscribe request
SolProgramUnsubscribeRequest
programUnsubscribe request
SolProgramNotification
programNotification
Notification matching the getProgramAccounts response shape
SolSignatureSubscribeRequest
signatureSubscribe request
SolSignatureUnsubscribeRequest
signatureUnsubscribe request
SolSignatureNotification
signatureNotification
Delivered once when the signature reaches the requested commitment. The subscription is automatically cancelled after delivery.
SolSlotSubscribeRequest
slotSubscribe request
SolSlotUnsubscribeRequest
slotUnsubscribe request
SolSlotNotification
slotNotification
SolSlotsUpdatesSubscribeRequest
slotsUpdatesSubscribe request
SolSlotsUpdatesUnsubscribeRequest
slotsUpdatesUnsubscribe request
SolSlotsUpdatesNotification
slotsUpdatesNotification
SolVoteSubscribeRequest
voteSubscribe request
SolVoteUnsubscribeRequest
voteUnsubscribe request
SolVoteNotification
voteNotification
SolRootSubscribeRequest
rootSubscribe request
SolRootUnsubscribeRequest
rootUnsubscribe request
SolRootNotification
rootNotification

Servers

wss
ethereum wss://{endpointName}.quiknode.pro/{token}/
QuickNode Ethereum (and EVM-compatible) WebSocket endpoint
wss
solana wss://{endpointName}.solana-mainnet.quiknode.pro/{token}/
QuickNode Solana WebSocket endpoint

AsyncAPI Specification

Raw ↑
asyncapi: '2.6.0'
info:
  title: QuickNode WebSocket Subscription API
  version: '1.0.0'
  description: |
    AsyncAPI definition for QuickNode WebSocket subscription endpoints across
    Ethereum (and EVM-compatible chains) and Solana. All subscriptions use the
    JSON-RPC 2.0 envelope. After a successful subscription request the server
    responds with a subscription id; the server then pushes notifications via
    the corresponding `*Notification` method until the client unsubscribes.

    Sources:
      - https://www.quicknode.com/docs/ethereum/eth_subscribe
      - https://www.quicknode.com/docs/solana/accountSubscribe
      - https://www.quicknode.com/docs/solana/blockSubscribe
      - https://www.quicknode.com/docs/solana/logsSubscribe
      - https://www.quicknode.com/docs/solana/programSubscribe
      - https://www.quicknode.com/docs/solana/signatureSubscribe
      - https://www.quicknode.com/docs/solana/slotSubscribe
      - https://www.quicknode.com/docs/solana/slotsUpdatesSubscribe
      - https://www.quicknode.com/docs/solana/voteSubscribe
      - https://www.quicknode.com/docs/solana/rootSubscribe
  contact:
    name: QuickNode
    url: https://www.quicknode.com/
  license:
    name: Proprietary
    url: https://www.quicknode.com/terms

defaultContentType: application/json

servers:
  ethereum:
    url: wss://{endpointName}.quiknode.pro/{token}/
    protocol: wss
    description: QuickNode Ethereum (and EVM-compatible) WebSocket endpoint
    variables:
      endpointName:
        description: Customer-specific QuickNode endpoint slug
        default: your-endpoint
      token:
        description: Authentication token issued by QuickNode for the endpoint
        default: your-token
  solana:
    url: wss://{endpointName}.solana-mainnet.quiknode.pro/{token}/
    protocol: wss
    description: QuickNode Solana WebSocket endpoint
    variables:
      endpointName:
        description: Customer-specific QuickNode endpoint slug
        default: your-endpoint
      token:
        description: Authentication token issued by QuickNode for the endpoint
        default: your-token

channels:
  ###############################
  # Ethereum / EVM subscriptions
  ###############################
  ethereum/newHeads:
    description: |
      Subscribe to new block headers on Ethereum (or any EVM chain) via
      `eth_subscribe` with the `newHeads` subscription type. The server returns
      a hex-encoded subscription id and then streams a notification for every
      new block header. Cancel with `eth_unsubscribe`.
    servers:
      - ethereum
    publish:
      operationId: subscribeEthNewHeads
      summary: Send eth_subscribe / eth_unsubscribe for newHeads
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeNewHeadsRequest'
          - $ref: '#/components/messages/EthUnsubscribeRequest'
    subscribe:
      operationId: receiveEthNewHeads
      summary: Receive subscription id and newHeads notifications
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeResponse'
          - $ref: '#/components/messages/EthUnsubscribeResponse'
          - $ref: '#/components/messages/EthNewHeadsNotification'

  ethereum/logs:
    description: |
      Subscribe to event logs matching filter criteria (addresses, topics) via
      `eth_subscribe` with the `logs` subscription type.
    servers:
      - ethereum
    publish:
      operationId: subscribeEthLogs
      summary: Send eth_subscribe / eth_unsubscribe for logs
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeLogsRequest'
          - $ref: '#/components/messages/EthUnsubscribeRequest'
    subscribe:
      operationId: receiveEthLogs
      summary: Receive subscription id and log notifications
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeResponse'
          - $ref: '#/components/messages/EthUnsubscribeResponse'
          - $ref: '#/components/messages/EthLogsNotification'

  ethereum/newPendingTransactions:
    description: |
      Subscribe to pending transactions entering the mempool via
      `eth_subscribe` with the `newPendingTransactions` subscription type. With
      the optional boolean flag set to true, full transaction objects are
      returned instead of hashes.
    servers:
      - ethereum
    publish:
      operationId: subscribeEthNewPendingTransactions
      summary: Send eth_subscribe / eth_unsubscribe for newPendingTransactions
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeNewPendingTransactionsRequest'
          - $ref: '#/components/messages/EthUnsubscribeRequest'
    subscribe:
      operationId: receiveEthNewPendingTransactions
      summary: Receive subscription id and pending transaction notifications
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeResponse'
          - $ref: '#/components/messages/EthUnsubscribeResponse'
          - $ref: '#/components/messages/EthNewPendingTransactionsNotification'

  ethereum/syncing:
    description: |
      Subscribe to node sync state changes via `eth_subscribe` with the
      `syncing` subscription type. Notifications are emitted when the node
      starts or stops syncing and with periodic progress reports.
    servers:
      - ethereum
    publish:
      operationId: subscribeEthSyncing
      summary: Send eth_subscribe / eth_unsubscribe for syncing
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeSyncingRequest'
          - $ref: '#/components/messages/EthUnsubscribeRequest'
    subscribe:
      operationId: receiveEthSyncing
      summary: Receive subscription id and syncing notifications
      message:
        oneOf:
          - $ref: '#/components/messages/EthSubscribeResponse'
          - $ref: '#/components/messages/EthUnsubscribeResponse'
          - $ref: '#/components/messages/EthSyncingNotification'

  ###############################
  # Solana subscriptions
  ###############################
  solana/accountSubscribe:
    description: |
      Subscribe to changes (lamports or data) on a specific Solana account
      identified by a base-58 encoded Pubkey. Notifications use the same
      shape as the `getAccountInfo` RPC response. Cancel with
      `accountUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaAccount
      summary: Send accountSubscribe / accountUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolAccountSubscribeRequest'
          - $ref: '#/components/messages/SolAccountUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaAccount
      summary: Receive subscription id and account notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolAccountNotification'

  solana/blockSubscribe:
    description: |
      Subscribe to new confirmed or finalized blocks. The notification block
      payload mirrors the structure returned by `getBlock`. Cancel with
      `blockUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaBlock
      summary: Send blockSubscribe / blockUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolBlockSubscribeRequest'
          - $ref: '#/components/messages/SolBlockUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaBlock
      summary: Receive subscription id and block notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolBlockNotification'

  solana/logsSubscribe:
    description: |
      Subscribe to transaction logs filtered by `all`, `allWithVotes`, or an
      object filter (e.g. mentioning a particular account). Cancel with
      `logsUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaLogs
      summary: Send logsSubscribe / logsUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolLogsSubscribeRequest'
          - $ref: '#/components/messages/SolLogsUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaLogs
      summary: Receive subscription id and log notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolLogsNotification'

  solana/programSubscribe:
    description: |
      Subscribe to changes for any account owned by a specific program. The
      notification payload mirrors `getProgramAccounts`. Cancel with
      `programUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaProgram
      summary: Send programSubscribe / programUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolProgramSubscribeRequest'
          - $ref: '#/components/messages/SolProgramUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaProgram
      summary: Receive subscription id and program-account notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolProgramNotification'

  solana/signatureSubscribe:
    description: |
      Subscribe to confirmation of a specific transaction signature. The
      subscription is automatically cancelled after the notification is
      delivered.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaSignature
      summary: Send signatureSubscribe / signatureUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolSignatureSubscribeRequest'
          - $ref: '#/components/messages/SolSignatureUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaSignature
      summary: Receive subscription id and signature notification
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolSignatureNotification'

  solana/slotSubscribe:
    description: |
      Subscribe to slot processing notifications. Cancel with `slotUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaSlot
      summary: Send slotSubscribe / slotUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolSlotSubscribeRequest'
          - $ref: '#/components/messages/SolSlotUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaSlot
      summary: Receive subscription id and slot notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolSlotNotification'

  solana/slotsUpdatesSubscribe:
    description: |
      Subscribe to detailed slot update lifecycle events (firstShredReceived,
      completed, createdBank, frozen, dead, optimisticConfirmation, root).
      Cancel with `slotsUpdatesUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaSlotsUpdates
      summary: Send slotsUpdatesSubscribe / slotsUpdatesUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolSlotsUpdatesSubscribeRequest'
          - $ref: '#/components/messages/SolSlotsUpdatesUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaSlotsUpdates
      summary: Receive subscription id and slot-update notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolSlotsUpdatesNotification'

  solana/voteSubscribe:
    description: |
      Subscribe to pre-consensus validator vote notifications. Cancel with
      `voteUnsubscribe`. Note: votes are pre-consensus and may not enter the
      ledger.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaVote
      summary: Send voteSubscribe / voteUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolVoteSubscribeRequest'
          - $ref: '#/components/messages/SolVoteUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaVote
      summary: Receive subscription id and vote notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolVoteNotification'

  solana/rootSubscribe:
    description: |
      Subscribe to new root slot notifications. Cancel with `rootUnsubscribe`.
    servers:
      - solana
    publish:
      operationId: subscribeSolanaRoot
      summary: Send rootSubscribe / rootUnsubscribe
      message:
        oneOf:
          - $ref: '#/components/messages/SolRootSubscribeRequest'
          - $ref: '#/components/messages/SolRootUnsubscribeRequest'
    subscribe:
      operationId: receiveSolanaRoot
      summary: Receive subscription id and root notifications
      message:
        oneOf:
          - $ref: '#/components/messages/SolSubscribeResponse'
          - $ref: '#/components/messages/SolUnsubscribeResponse'
          - $ref: '#/components/messages/SolRootNotification'

components:
  messages:
    # ---------- Ethereum messages ----------
    EthSubscribeNewHeadsRequest:
      name: EthSubscribeNewHeadsRequest
      title: eth_subscribe newHeads request
      summary: Subscribe to new block headers
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: eth_subscribe }
          params:
            type: array
            minItems: 1
            maxItems: 1
            items:
              - { type: string, const: newHeads }
        example:
          jsonrpc: '2.0'
          id: 1
          method: eth_subscribe
          params: [newHeads]

    EthSubscribeLogsRequest:
      name: EthSubscribeLogsRequest
      title: eth_subscribe logs request
      summary: Subscribe to logs matching an optional address/topics filter
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: eth_subscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - { type: string, const: logs }
              - $ref: '#/components/schemas/EthLogsFilter'
        example:
          jsonrpc: '2.0'
          id: 1
          method: eth_subscribe
          params:
            - logs
            - address: '0xa0b86991c6218b36c1d19d4a2e9eb0ce3606eb48'
              topics:
                - '0xddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef'

    EthSubscribeNewPendingTransactionsRequest:
      name: EthSubscribeNewPendingTransactionsRequest
      title: eth_subscribe newPendingTransactions request
      summary: Subscribe to pending transactions in the mempool
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: eth_subscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - { type: string, const: newPendingTransactions }
              - { type: boolean, description: 'When true, returns full transaction objects instead of hashes' }
        example:
          jsonrpc: '2.0'
          id: 1
          method: eth_subscribe
          params: [newPendingTransactions, false]

    EthSubscribeSyncingRequest:
      name: EthSubscribeSyncingRequest
      title: eth_subscribe syncing request
      summary: Subscribe to node sync state notifications
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: eth_subscribe }
          params:
            type: array
            minItems: 1
            maxItems: 1
            items:
              - { type: string, const: syncing }
        example:
          jsonrpc: '2.0'
          id: 1
          method: eth_subscribe
          params: [syncing]

    EthUnsubscribeRequest:
      name: EthUnsubscribeRequest
      title: eth_unsubscribe request
      summary: Cancel an active eth_subscribe subscription
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: eth_unsubscribe }
          params:
            type: array
            minItems: 1
            maxItems: 1
            items:
              - { type: string, description: 'Hex-encoded subscription id returned from eth_subscribe' }
        example:
          jsonrpc: '2.0'
          id: 2
          method: eth_unsubscribe
          params: ['0x9cef478923ff08bf67fde6c64013158d']

    EthSubscribeResponse:
      name: EthSubscribeResponse
      title: eth_subscribe response
      summary: Returned subscription id (hex string)
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, result]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          result:
            type: string
            description: Hex-encoded subscription id
        example:
          jsonrpc: '2.0'
          id: 1
          result: '0x9cef478923ff08bf67fde6c64013158d'

    EthUnsubscribeResponse:
      name: EthUnsubscribeResponse
      title: eth_unsubscribe response
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, result]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          result:
            type: boolean
            description: True if the subscription was cancelled
        example:
          jsonrpc: '2.0'
          id: 2
          result: true

    EthNewHeadsNotification:
      name: EthNewHeadsNotification
      title: eth_subscription newHeads notification
      contentType: application/json
      payload:
        $ref: '#/components/schemas/EthNotificationEnvelope'
        # the result is a block header

    EthLogsNotification:
      name: EthLogsNotification
      title: eth_subscription logs notification
      contentType: application/json
      payload:
        $ref: '#/components/schemas/EthNotificationEnvelope'

    EthNewPendingTransactionsNotification:
      name: EthNewPendingTransactionsNotification
      title: eth_subscription newPendingTransactions notification
      contentType: application/json
      payload:
        $ref: '#/components/schemas/EthNotificationEnvelope'

    EthSyncingNotification:
      name: EthSyncingNotification
      title: eth_subscription syncing notification
      contentType: application/json
      payload:
        $ref: '#/components/schemas/EthNotificationEnvelope'

    # ---------- Solana shared messages ----------
    SolSubscribeResponse:
      name: SolSubscribeResponse
      title: Solana *Subscribe response
      summary: Returned subscription id (integer)
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, result]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          result:
            type: integer
            description: Subscription id used to unsubscribe
        example:
          jsonrpc: '2.0'
          id: 1
          result: 23784

    SolUnsubscribeResponse:
      name: SolUnsubscribeResponse
      title: Solana *Unsubscribe response
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, result]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          result: { type: boolean }
        example:
          jsonrpc: '2.0'
          id: 2
          result: true

    # ---------- Solana account ----------
    SolAccountSubscribeRequest:
      name: SolAccountSubscribeRequest
      title: accountSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: accountSubscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - { type: string, description: 'Base-58 Pubkey of the account to monitor' }
              - $ref: '#/components/schemas/SolAccountConfig'
        example:
          jsonrpc: '2.0'
          id: 1
          method: accountSubscribe
          params:
            - 'CM78CPUeXjn8o3yroDHxUtKsZZgoy4GPkPPXfouKNH12'
            - { encoding: jsonParsed, commitment: finalized }

    SolAccountUnsubscribeRequest:
      name: SolAccountUnsubscribeRequest
      title: accountUnsubscribe request
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SolUnsubscribeRequestBody'

    SolAccountNotification:
      name: SolAccountNotification
      title: accountNotification
      summary: Notification matching the getAccountInfo response shape
      contentType: application/json
      payload:
        allOf:
          - $ref: '#/components/schemas/SolNotificationEnvelope'
          - type: object
            properties:
              method: { const: accountNotification }

    # ---------- Solana block ----------
    SolBlockSubscribeRequest:
      name: SolBlockSubscribeRequest
      title: blockSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: blockSubscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - oneOf:
                  - { type: string, enum: [all] }
                  - type: object
                    properties:
                      mentionsAccountOrProgram: { type: string }
              - $ref: '#/components/schemas/SolBlockConfig'
        example:
          jsonrpc: '2.0'
          id: 1
          method: blockSubscribe
          params: [all]

    SolBlockUnsubscribeRequest:
      name: SolBlockUnsubscribeRequest
      title: blockUnsubscribe request
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SolUnsubscribeRequestBody'

    SolBlockNotification:
      name: SolBlockNotification
      title: blockNotification
      contentType: application/json
      payload:
        allOf:
          - $ref: '#/components/schemas/SolNotificationEnvelope'
          - type: object
            properties:
              method: { const: blockNotification }
              params:
                type: object
                properties:
                  result:
                    type: object
                    properties:
                      context:
                        type: object
                        properties:
                          slot: { type: integer }
                      value:
                        type: object
                        properties:
                          slot: { type: integer }
                          err: { type: [object, 'null'] }
                          block:
                            type: object
                            description: Block object (same shape as getBlock)

    # ---------- Solana logs ----------
    SolLogsSubscribeRequest:
      name: SolLogsSubscribeRequest
      title: logsSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: logsSubscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - oneOf:
                  - { type: string, enum: [all, allWithVotes] }
                  - type: object
                    properties:
                      mentions:
                        type: array
                        items: { type: string }
              - type: object
                properties:
                  commitment: { $ref: '#/components/schemas/SolCommitment' }
                  encoding: { $ref: '#/components/schemas/SolEncoding' }
        example:
          jsonrpc: '2.0'
          id: 1
          method: logsSubscribe
          params:
            - { mentions: ['11111111111111111111111111111111'] }
            - { commitment: finalized }

    SolLogsUnsubscribeRequest:
      name: SolLogsUnsubscribeRequest
      title: logsUnsubscribe request
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SolUnsubscribeRequestBody'

    SolLogsNotification:
      name: SolLogsNotification
      title: logsNotification
      contentType: application/json
      payload:
        allOf:
          - $ref: '#/components/schemas/SolNotificationEnvelope'
          - type: object
            properties:
              method: { const: logsNotification }
              params:
                type: object
                properties:
                  result:
                    type: object
                    properties:
                      context:
                        type: object
                        properties:
                          slot: { type: integer }
                      value:
                        type: object
                        properties:
                          signature: { type: string, description: Base-58 transaction signature }
                          err: { type: [object, 'null'] }
                          logs:
                            type: [array, 'null']
                            items: { type: string }

    # ---------- Solana program ----------
    SolProgramSubscribeRequest:
      name: SolProgramSubscribeRequest
      title: programSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: programSubscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - { type: string, description: 'Base-58 program id' }
              - $ref: '#/components/schemas/SolProgramConfig'
        example:
          jsonrpc: '2.0'
          id: 1
          method: programSubscribe
          params:
            - 'TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA'
            - { encoding: jsonParsed, commitment: confirmed }

    SolProgramUnsubscribeRequest:
      name: SolProgramUnsubscribeRequest
      title: programUnsubscribe request
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SolUnsubscribeRequestBody'

    SolProgramNotification:
      name: SolProgramNotification
      title: programNotification
      summary: Notification matching the getProgramAccounts response shape
      contentType: application/json
      payload:
        allOf:
          - $ref: '#/components/schemas/SolNotificationEnvelope'
          - type: object
            properties:
              method: { const: programNotification }

    # ---------- Solana signature ----------
    SolSignatureSubscribeRequest:
      name: SolSignatureSubscribeRequest
      title: signatureSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method, params]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: signatureSubscribe }
          params:
            type: array
            minItems: 1
            maxItems: 2
            items:
              - { type: string, description: 'Base-58 transaction signature' }
              - type: object
                properties:
                  commitment: { $ref: '#/components/schemas/SolCommitment' }
        example:
          jsonrpc: '2.0'
          id: 1
          method: signatureSubscribe
          params:
            - '5h6xBEauJ3PK6SWCZ1PGjBvj8vDdWG3KcEZQXKZ7G4'
            - { commitment: finalized }

    SolSignatureUnsubscribeRequest:
      name: SolSignatureUnsubscribeRequest
      title: signatureUnsubscribe request
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SolUnsubscribeRequestBody'

    SolSignatureNotification:
      name: SolSignatureNotification
      title: signatureNotification
      summary: |
        Delivered once when the signature reaches the requested commitment.
        The subscription is automatically cancelled after delivery.
      contentType: application/json
      payload:
        allOf:
          - $ref: '#/components/schemas/SolNotificationEnvelope'
          - type: object
            properties:
              method: { const: signatureNotification }
              params:
                type: object
                properties:
                  result:
                    type: object
                    properties:
                      context:
                        type: object
                        properties:
                          slot: { type: integer }
                      value:
                        type: object
                        properties:
                          err: { type: [object, 'null'] }

    # ---------- Solana slot ----------
    SolSlotSubscribeRequest:
      name: SolSlotSubscribeRequest
      title: slotSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: slotSubscribe }
          params:
            type: array
            maxItems: 0
        example:
          jsonrpc: '2.0'
          id: 1
          method: slotSubscribe

    SolSlotUnsubscribeRequest:
      name: SolSlotUnsubscribeRequest
      title: slotUnsubscribe request
      contentType: application/json
      payload:
        $ref: '#/components/schemas/SolUnsubscribeRequestBody'

    SolSlotNotification:
      name: SolSlotNotification
      title: slotNotification
      contentType: application/json
      payload:
        allOf:
          - $ref: '#/components/schemas/SolNotificationEnvelope'
          - type: object
            properties:
              method: { const: slotNotification }
              params:
                type: object
                properties:
                  result:
                    type: object
                    required: [parent, root, slot]
                    properties:
                      parent: { type: integer, description: Parent slot number }
                      root:   { type: integer, description: Current root slot }
                      slot:   { type: integer, description: New slot value }

    # ---------- Solana slotsUpdates ----------
    SolSlotsUpdatesSubscribeRequest:
      name: SolSlotsUpdatesSubscribeRequest
      title: slotsUpdatesSubscribe request
      contentType: application/json
      payload:
        type: object
        required: [jsonrpc, id, method]
        properties:
          jsonrpc: { const: '2.0' }
          id: { type: [integer, string] }
          method: { const: slo

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