Home
Helius
Helius WebSocket APIs
Helius · AsyncAPI Specification
Helius WebSocket APIs
Version 2026-05-29
AsyncAPI 2.6 description of Helius's real-time WebSocket interfaces for Solana. Coverage: * Standard Solana JSON-RPC PubSub subscriptions exposed by Helius RPC. * Helius enhanced subscriptions (transactionSubscribe, enhanced accountSubscribe). * LaserStream WebSocket (same wire protocol as standard Helius WS; runs on the same infrastructure and exposes the standard Solana subscription methods plus Helius-specific extensions, with lower latency). Out of scope (not modeled here): * LaserStream gRPC (Yellowstone-compatible). gRPC is not a transport supported by AsyncAPI 2.6; use the official LaserStream gRPC protobuf definitions. * Webhooks (REST/HTTP push) — see Helius Webhooks REST API. Notes on stability (per Helius LaserStream WS docs as of 2026-05-29): * Unsupported / unstable on LaserStream WS: blockSubscribe / blockUnsubscribe, slotsUpdatesSubscribe / slotsUpdatesUnsubscribe, voteSubscribe / voteUnsubscribe. These remain reachable on standard Helius RPC WS endpoints.
Channels
accountSubscribe
publish accountSubscribe
Open an accountSubscribe subscription.
Subscribe to changes for a single Solana account. Notifications are emitted when the account's lamports or data change at the configured commitment level. Helius's accountSubscribe is "enhanced" on Helius WS — it accepts the standard Solana parameters and runs on the same unified endpoint as transactionSubscribe.
blockSubscribe
publish blockSubscribe
Open a blockSubscribe subscription.
Subscribe to new blocks at a given commitment. Standard Solana PubSub method. Marked unstable by Solana; per Helius docs this is NOT supported on LaserStream WS, but is available on standard Helius mainnet/devnet WS endpoints.
logsSubscribe
publish logsSubscribe
Open a logsSubscribe subscription.
Subscribe to transaction logs matching a filter (all, allWithVotes, or a specific mentions list).
programSubscribe
publish programSubscribe
Open a programSubscribe subscription.
Subscribe to all account changes owned by a given program.
signatureSubscribe
publish signatureSubscribe
Open a signatureSubscribe subscription.
Subscribe to confirmation status of a single transaction signature.
slotSubscribe
publish slotSubscribe
Open a slotSubscribe subscription.
Subscribe to slot processing notifications.
slotsUpdatesSubscribe
publish slotsUpdatesSubscribe
Open a slotsUpdatesSubscribe subscription.
Subscribe to detailed slot status updates (firstShredReceived, completed, createdBank, frozen, dead, optimisticConfirmation, root). Marked unstable. Per Helius docs this is NOT supported on LaserStream WS, but is reachable on standard Helius mainnet/devnet WS endpoints.
voteSubscribe
publish voteSubscribe
Open a voteSubscribe subscription.
Subscribe to vote notifications from the gossip network. Marked unstable. Per Helius docs this is NOT supported on LaserStream WS, but is reachable on standard Helius mainnet/devnet WS endpoints.
rootSubscribe
publish rootSubscribe
Open a rootSubscribe subscription.
Subscribe to root slot notifications.
transactionSubscribe
publish transactionSubscribe
Open a transactionSubscribe subscription.
Helius enhanced subscription. Streams transactions matched by a TransactionSubscribeFilter (vote, failed, signature, accountInclude up to 50,000, accountExclude up to 50,000, accountRequired up to 50,000) and shaped by TransactionSubscribeOptions (commitment, encoding, transactionDetails, showRewards, maxSupportedTransactionVersion). Available on Helius mainnet/devnet WS endpoints (and the legacy atlas-mainnet endpoint). LaserStream WS supports transactionSubscribe with lower latency.
Messages
✉
AccountSubscribeRequest
accountSubscribe request
JSON-RPC request opening an accountSubscribe subscription.
✉
AccountUnsubscribeRequest
accountUnsubscribe request
✉
BlockSubscribeRequest
blockSubscribe request
✉
BlockUnsubscribeRequest
blockUnsubscribe request
✉
LogsSubscribeRequest
logsSubscribe request
✉
LogsUnsubscribeRequest
logsUnsubscribe request
✉
ProgramSubscribeRequest
programSubscribe request
✉
ProgramUnsubscribeRequest
programUnsubscribe request
✉
SignatureSubscribeRequest
signatureSubscribe request
✉
SignatureUnsubscribeRequest
signatureUnsubscribe request
✉
SlotSubscribeRequest
slotSubscribe request
✉
SlotUnsubscribeRequest
slotUnsubscribe request
✉
SlotsUpdatesSubscribeRequest
slotsUpdatesSubscribe request
✉
SlotsUpdatesUnsubscribeRequest
slotsUpdatesUnsubscribe request
✉
VoteSubscribeRequest
voteSubscribe request
✉
VoteUnsubscribeRequest
voteUnsubscribe request
✉
RootSubscribeRequest
rootSubscribe request
✉
RootUnsubscribeRequest
rootUnsubscribe request
✉
TransactionSubscribeRequest
transactionSubscribe request
Helius enhanced subscription opening a filtered transaction stream.
✉
TransactionUnsubscribeRequest
transactionUnsubscribe request
✉
JsonRpcResponse
JSON-RPC response
Response to a subscribe / unsubscribe request — carries the subscription id (subscribe) or a boolean (unsubscribe).
✉
AccountNotification
accountNotification
✉
BlockNotification
blockNotification
✉
LogsNotification
logsNotification
✉
ProgramNotification
programNotification
✉
SignatureNotification
signatureNotification
✉
SlotNotification
slotNotification
✉
SlotsUpdatesNotification
slotsUpdatesNotification
✉
VoteNotification
voteNotification
✉
RootNotification
rootNotification
✉
TransactionNotification
transactionNotification
Helius enhanced transactionNotification payload.
Servers
wss
mainnet
mainnet.helius-rpc.com/?api-key={apiKey}
Helius Solana mainnet WebSocket endpoint. Exposes both standard Solana JSON-RPC PubSub subscriptions and Helius enhanced subscriptions (transactionSubscribe, enhanced accountSubscribe).
wss
devnet
devnet.helius-rpc.com/?api-key={apiKey}
Helius Solana devnet WebSocket endpoint.
wss
beta
beta.helius-rpc.com/?api-key={apiKey}
Helius beta (Gatekeeper) WebSocket endpoint. Same wire protocol as mainnet; used for testing newer LaserStream WS / gatekeeper features.
wss
atlas-mainnet
atlas-mainnet.helius-rpc.com/?api-key={apiKey}
Legacy Atlas WebSocket endpoint historically used for Helius enhanced subscriptions (transactionSubscribe). Helius has unified these methods onto the standard mainnet endpoint; the Atlas host is preserved here for compatibility with existing clients still pointing at it.
wss
laserstream-mainnet-ws
mainnet.helius-rpc.com/?api-key={apiKey}
LaserStream WebSocket (mainnet). Runs on the same backend as the standard Helius WS endpoint and exposes the standard Solana subscription methods plus Helius-specific extensions, with up to ~200 ms lower latency than Agave RPC-based WebSockets. Requires Developer tier or higher; mainnet access requires Business/Professional plans.
AsyncAPI Specification
asyncapi: '2.6.0'
id: 'urn:helius:websockets'
info:
title: Helius WebSocket APIs
version: '2026-05-29'
description: |
AsyncAPI 2.6 description of Helius's real-time WebSocket interfaces for Solana.
Coverage:
* Standard Solana JSON-RPC PubSub subscriptions exposed by Helius RPC.
* Helius enhanced subscriptions (transactionSubscribe, enhanced accountSubscribe).
* LaserStream WebSocket (same wire protocol as standard Helius WS; runs on the
same infrastructure and exposes the standard Solana subscription methods plus
Helius-specific extensions, with lower latency).
Out of scope (not modeled here):
* LaserStream gRPC (Yellowstone-compatible). gRPC is not a transport supported
by AsyncAPI 2.6; use the official LaserStream gRPC protobuf definitions.
* Webhooks (REST/HTTP push) — see Helius Webhooks REST API.
Notes on stability (per Helius LaserStream WS docs as of 2026-05-29):
* Unsupported / unstable on LaserStream WS: blockSubscribe / blockUnsubscribe,
slotsUpdatesSubscribe / slotsUpdatesUnsubscribe, voteSubscribe / voteUnsubscribe.
These remain reachable on standard Helius RPC WS endpoints.
contact:
name: Helius Developer Support
url: https://www.helius.dev/docs
license:
name: Proprietary (Helius Terms)
url: https://www.helius.dev/terms
termsOfService: https://www.helius.dev/terms
tags:
- name: Solana
- name: WebSocket
- name: JSON-RPC
- name: PubSub
- name: Helius
defaultContentType: application/json
servers:
mainnet:
url: 'mainnet.helius-rpc.com/?api-key={apiKey}'
protocol: wss
description: |
Helius Solana mainnet WebSocket endpoint. Exposes both standard Solana
JSON-RPC PubSub subscriptions and Helius enhanced subscriptions
(transactionSubscribe, enhanced accountSubscribe).
variables:
apiKey:
description: Helius API key provisioned from the Helius dashboard.
default: YOUR_API_KEY
bindings:
ws:
bindingVersion: '0.1.0'
devnet:
url: 'devnet.helius-rpc.com/?api-key={apiKey}'
protocol: wss
description: Helius Solana devnet WebSocket endpoint.
variables:
apiKey:
description: Helius API key.
default: YOUR_API_KEY
bindings:
ws:
bindingVersion: '0.1.0'
beta:
url: 'beta.helius-rpc.com/?api-key={apiKey}'
protocol: wss
description: |
Helius beta (Gatekeeper) WebSocket endpoint. Same wire protocol as mainnet;
used for testing newer LaserStream WS / gatekeeper features.
variables:
apiKey:
description: Helius API key.
default: YOUR_API_KEY
bindings:
ws:
bindingVersion: '0.1.0'
atlas-mainnet:
url: 'atlas-mainnet.helius-rpc.com/?api-key={apiKey}'
protocol: wss
description: |
Legacy Atlas WebSocket endpoint historically used for Helius enhanced
subscriptions (transactionSubscribe). Helius has unified these methods
onto the standard mainnet endpoint; the Atlas host is preserved here for
compatibility with existing clients still pointing at it.
variables:
apiKey:
description: Helius API key.
default: YOUR_API_KEY
bindings:
ws:
bindingVersion: '0.1.0'
laserstream-mainnet-ws:
url: 'mainnet.helius-rpc.com/?api-key={apiKey}'
protocol: wss
description: |
LaserStream WebSocket (mainnet). Runs on the same backend as the standard
Helius WS endpoint and exposes the standard Solana subscription methods
plus Helius-specific extensions, with up to ~200 ms lower latency than
Agave RPC-based WebSockets. Requires Developer tier or higher; mainnet
access requires Business/Professional plans.
variables:
apiKey:
description: Helius API key.
default: YOUR_API_KEY
bindings:
ws:
bindingVersion: '0.1.0'
channels:
accountSubscribe:
description: |
Subscribe to changes for a single Solana account. Notifications are emitted
when the account's lamports or data change at the configured commitment level.
Helius's accountSubscribe is "enhanced" on Helius WS — it accepts the standard
Solana parameters and runs on the same unified endpoint as transactionSubscribe.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: accountNotification
summary: Account change notifications.
message:
$ref: '#/components/messages/AccountNotification'
publish:
operationId: accountSubscribe
summary: Open an accountSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/AccountSubscribeRequest'
- $ref: '#/components/messages/AccountUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
blockSubscribe:
description: |
Subscribe to new blocks at a given commitment. Standard Solana PubSub method.
Marked unstable by Solana; per Helius docs this is NOT supported on LaserStream WS,
but is available on standard Helius mainnet/devnet WS endpoints.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: blockNotification
summary: Block notifications.
message:
$ref: '#/components/messages/BlockNotification'
publish:
operationId: blockSubscribe
summary: Open a blockSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/BlockSubscribeRequest'
- $ref: '#/components/messages/BlockUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
logsSubscribe:
description: Subscribe to transaction logs matching a filter (all, allWithVotes, or a specific mentions list).
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: logsNotification
summary: Log notifications.
message:
$ref: '#/components/messages/LogsNotification'
publish:
operationId: logsSubscribe
summary: Open a logsSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/LogsSubscribeRequest'
- $ref: '#/components/messages/LogsUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
programSubscribe:
description: Subscribe to all account changes owned by a given program.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: programNotification
summary: Program account notifications.
message:
$ref: '#/components/messages/ProgramNotification'
publish:
operationId: programSubscribe
summary: Open a programSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/ProgramSubscribeRequest'
- $ref: '#/components/messages/ProgramUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
signatureSubscribe:
description: Subscribe to confirmation status of a single transaction signature.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: signatureNotification
summary: Signature confirmation notifications.
message:
$ref: '#/components/messages/SignatureNotification'
publish:
operationId: signatureSubscribe
summary: Open a signatureSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/SignatureSubscribeRequest'
- $ref: '#/components/messages/SignatureUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
slotSubscribe:
description: Subscribe to slot processing notifications.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: slotNotification
summary: Slot notifications.
message:
$ref: '#/components/messages/SlotNotification'
publish:
operationId: slotSubscribe
summary: Open a slotSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/SlotSubscribeRequest'
- $ref: '#/components/messages/SlotUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
slotsUpdatesSubscribe:
description: |
Subscribe to detailed slot status updates (firstShredReceived, completed,
createdBank, frozen, dead, optimisticConfirmation, root). Marked unstable.
Per Helius docs this is NOT supported on LaserStream WS, but is reachable
on standard Helius mainnet/devnet WS endpoints.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: slotsUpdatesNotification
summary: Slot update notifications.
message:
$ref: '#/components/messages/SlotsUpdatesNotification'
publish:
operationId: slotsUpdatesSubscribe
summary: Open a slotsUpdatesSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/SlotsUpdatesSubscribeRequest'
- $ref: '#/components/messages/SlotsUpdatesUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
voteSubscribe:
description: |
Subscribe to vote notifications from the gossip network. Marked unstable.
Per Helius docs this is NOT supported on LaserStream WS, but is reachable
on standard Helius mainnet/devnet WS endpoints.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: voteNotification
summary: Vote notifications.
message:
$ref: '#/components/messages/VoteNotification'
publish:
operationId: voteSubscribe
summary: Open a voteSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/VoteSubscribeRequest'
- $ref: '#/components/messages/VoteUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
rootSubscribe:
description: Subscribe to root slot notifications.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: rootNotification
summary: Root slot notifications.
message:
$ref: '#/components/messages/RootNotification'
publish:
operationId: rootSubscribe
summary: Open a rootSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/RootSubscribeRequest'
- $ref: '#/components/messages/RootUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
transactionSubscribe:
description: |
Helius enhanced subscription. Streams transactions matched by a
TransactionSubscribeFilter (vote, failed, signature, accountInclude up to 50,000,
accountExclude up to 50,000, accountRequired up to 50,000) and shaped by
TransactionSubscribeOptions (commitment, encoding, transactionDetails, showRewards,
maxSupportedTransactionVersion).
Available on Helius mainnet/devnet WS endpoints (and the legacy atlas-mainnet
endpoint). LaserStream WS supports transactionSubscribe with lower latency.
bindings:
ws:
bindingVersion: '0.1.0'
subscribe:
operationId: transactionNotification
summary: Filtered transaction notifications.
message:
$ref: '#/components/messages/TransactionNotification'
publish:
operationId: transactionSubscribe
summary: Open a transactionSubscribe subscription.
message:
oneOf:
- $ref: '#/components/messages/TransactionSubscribeRequest'
- $ref: '#/components/messages/TransactionUnsubscribeRequest'
- $ref: '#/components/messages/JsonRpcResponse'
components:
messages:
# -------- Standard Solana subscription requests --------
AccountSubscribeRequest:
name: accountSubscribe
title: accountSubscribe request
summary: JSON-RPC request opening an accountSubscribe subscription.
contentType: application/json
payload:
$ref: '#/components/schemas/AccountSubscribeRequestPayload'
AccountUnsubscribeRequest:
name: accountUnsubscribe
title: accountUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
BlockSubscribeRequest:
name: blockSubscribe
title: blockSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/BlockSubscribeRequestPayload'
BlockUnsubscribeRequest:
name: blockUnsubscribe
title: blockUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
LogsSubscribeRequest:
name: logsSubscribe
title: logsSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/LogsSubscribeRequestPayload'
LogsUnsubscribeRequest:
name: logsUnsubscribe
title: logsUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
ProgramSubscribeRequest:
name: programSubscribe
title: programSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/ProgramSubscribeRequestPayload'
ProgramUnsubscribeRequest:
name: programUnsubscribe
title: programUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
SignatureSubscribeRequest:
name: signatureSubscribe
title: signatureSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/SignatureSubscribeRequestPayload'
SignatureUnsubscribeRequest:
name: signatureUnsubscribe
title: signatureUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
SlotSubscribeRequest:
name: slotSubscribe
title: slotSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/SlotSubscribeRequestPayload'
SlotUnsubscribeRequest:
name: slotUnsubscribe
title: slotUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
SlotsUpdatesSubscribeRequest:
name: slotsUpdatesSubscribe
title: slotsUpdatesSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/SlotsUpdatesSubscribeRequestPayload'
SlotsUpdatesUnsubscribeRequest:
name: slotsUpdatesUnsubscribe
title: slotsUpdatesUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
VoteSubscribeRequest:
name: voteSubscribe
title: voteSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/VoteSubscribeRequestPayload'
VoteUnsubscribeRequest:
name: voteUnsubscribe
title: voteUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
RootSubscribeRequest:
name: rootSubscribe
title: rootSubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/RootSubscribeRequestPayload'
RootUnsubscribeRequest:
name: rootUnsubscribe
title: rootUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
TransactionSubscribeRequest:
name: transactionSubscribe
title: transactionSubscribe request
summary: Helius enhanced subscription opening a filtered transaction stream.
contentType: application/json
payload:
$ref: '#/components/schemas/TransactionSubscribeRequestPayload'
TransactionUnsubscribeRequest:
name: transactionUnsubscribe
title: transactionUnsubscribe request
contentType: application/json
payload:
$ref: '#/components/schemas/UnsubscribeRequestPayload'
# -------- Generic JSON-RPC response (subscription id or unsubscribe ack) --------
JsonRpcResponse:
name: jsonRpcResponse
title: JSON-RPC response
summary: Response to a subscribe / unsubscribe request — carries the subscription id (subscribe) or a boolean (unsubscribe).
contentType: application/json
payload:
$ref: '#/components/schemas/JsonRpcResponse'
# -------- Notification messages --------
AccountNotification:
name: accountNotification
title: accountNotification
contentType: application/json
payload:
$ref: '#/components/schemas/AccountNotificationPayload'
BlockNotification:
name: blockNotification
title: blockNotification
contentType: application/json
payload:
$ref: '#/components/schemas/BlockNotificationPayload'
LogsNotification:
name: logsNotification
title: logsNotification
contentType: application/json
payload:
$ref: '#/components/schemas/LogsNotificationPayload'
ProgramNotification:
name: programNotification
title: programNotification
contentType: application/json
payload:
$ref: '#/components/schemas/ProgramNotificationPayload'
SignatureNotification:
name: signatureNotification
title: signatureNotification
contentType: application/json
payload:
$ref: '#/components/schemas/SignatureNotificationPayload'
SlotNotification:
name: slotNotification
title: slotNotification
contentType: application/json
payload:
$ref: '#/components/schemas/SlotNotificationPayload'
SlotsUpdatesNotification:
name: slotsUpdatesNotification
title: slotsUpdatesNotification
contentType: application/json
payload:
$ref: '#/components/schemas/SlotsUpdatesNotificationPayload'
VoteNotification:
name: voteNotification
title: voteNotification
contentType: application/json
payload:
$ref: '#/components/schemas/VoteNotificationPayload'
RootNotification:
name: rootNotification
title: rootNotification
contentType: application/json
payload:
$ref: '#/components/schemas/RootNotificationPayload'
TransactionNotification:
name: transactionNotification
title: transactionNotification
summary: Helius enhanced transactionNotification payload.
contentType: application/json
payload:
$ref: '#/components/schemas/TransactionNotificationPayload'
schemas:
# ----- JSON-RPC envelopes -----
JsonRpcRequestBase:
type: object
required: [jsonrpc, id, method]
properties:
jsonrpc:
type: string
const: '2.0'
id:
oneOf:
- { type: integer }
- { type: string }
method:
type: string
params:
type: array
JsonRpcResponse:
type: object
required: [jsonrpc, id]
properties:
jsonrpc:
type: string
const: '2.0'
id:
oneOf:
- { type: integer }
- { type: string }
result:
description: For subscribe — a subscription id (integer). For unsubscribe — a boolean.
oneOf:
- { type: integer, description: Subscription id. }
- { type: boolean, description: Unsubscribe acknowledgement. }
error:
$ref: '#/components/schemas/JsonRpcError'
JsonRpcError:
type: object
required: [code, message]
properties:
code: { type: integer }
message: { type: string }
data: {}
JsonRpcNotificationBase:
type: object
required: [jsonrpc, method, params]
properties:
jsonrpc:
type: string
const: '2.0'
method: { type: string }
params:
type: object
required: [subscription]
properties:
subscription: { type: integer }
result: {}
# ----- Common Solana types -----
Commitment:
type: string
enum: [processed, confirmed, finalized]
Encoding:
type: string
enum: [base58, base64, base64+zstd, jsonParsed]
Context:
type: object
required: [slot]
properties:
slot: { type: integer, format: int64 }
apiVersion: { type: string }
AccountInfo:
type: object
required: [lamports, owner, executable, rentEpoch]
properties:
lamports: { type: integer, format: int64 }
owner: { type: string, description: Base58 program owner. }
data:
description: Encoded account data — string + encoding tuple, jsonParsed object, or base64+zstd encoded array.
executable: { type: boolean }
rentEpoch: { type: integer, format: int64 }
space: { type: integer }
UnsubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
enum:
- accountUnsubscribe
- blockUnsubscribe
- logsUnsubscribe
- programUnsubscribe
- signatureUnsubscribe
- slotUnsubscribe
- slotsUpdatesUnsubscribe
- voteUnsubscribe
- rootUnsubscribe
- transactionUnsubscribe
params:
type: array
minItems: 1
maxItems: 1
items:
type: integer
description: Subscription id returned by the corresponding subscribe call.
# ----- accountSubscribe -----
AccountSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
const: accountSubscribe
params:
type: array
minItems: 1
maxItems: 2
items:
oneOf:
- type: string
description: Base58 account public key.
- type: object
properties:
commitment: { $ref: '#/components/schemas/Commitment' }
encoding: { $ref: '#/components/schemas/Encoding' }
AccountNotificationPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcNotificationBase'
- type: object
properties:
method:
type: string
const: accountNotification
params:
type: object
required: [subscription, result]
properties:
subscription: { type: integer }
result:
type: object
required: [context, value]
properties:
context: { $ref: '#/components/schemas/Context' }
value: { $ref: '#/components/schemas/AccountInfo' }
# ----- blockSubscribe -----
BlockSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
const: blockSubscribe
params:
type: array
minItems: 1
maxItems: 2
items:
oneOf:
- type: string
enum: [all]
- type: object
properties:
mentionsAccountOrProgram: { type: string }
- 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, enum: [0] }
BlockNotificationPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcNotificationBase'
- type: object
properties:
method:
type: string
const: blockNotification
params:
type: object
required: [subscription, result]
properties:
subscription: { type: integer }
result:
type: object
required: [context, value]
properties:
context: { $ref: '#/components/schemas/Context' }
value:
type: object
properties:
slot: { type: integer, format: int64 }
err: {}
block:
type: object
properties:
blockhash: { type: string }
previousBlockhash: { type: string }
parentSlot: { type: integer, format: int64 }
transactions:
type: array
items: { type: object }
rewards:
type: array
items: { type: object }
blockTime: { type: integer, format: int64 }
blockHeight: { type: integer, format: int64 }
# ----- logsSubscribe -----
LogsSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
const: logsSubscribe
params:
type: array
minItems: 1
maxItems: 2
items:
oneOf:
- type: string
enum: [all, allWithVotes]
- type: object
properties:
mentions:
type: array
maxItems: 1
items: { type: string }
- type: object
properties:
commitment: { $ref: '#/components/schemas/Commitment' }
LogsNotificationPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcNotificationBase'
- type: object
properties:
method:
type: string
const: logsNotification
params:
type: object
required: [subscription, result]
properties:
subscription: { type: integer }
result:
type: object
required: [context, value]
properties:
context: { $ref: '#/components/schemas/Context' }
value:
type: object
properties:
signature: { type: string }
err: {}
logs:
type: array
items: { type: string }
# ----- programSubscribe -----
ProgramSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
const: programSubscribe
params:
type: array
minItems: 1
maxItems: 2
items:
oneOf:
- type: string
description: Base58 program id.
- type: object
properties:
commitment: { $ref: '#/components/schemas/Commitment' }
encoding: { $ref: '#/components/schemas/Encoding' }
filters:
type: array
items:
oneOf:
- type: object
properties:
dataSize: { type: integer }
- type: object
properties:
memcmp:
type: object
properties:
offset: { type: integer }
bytes: { type: string }
ProgramNotificationPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcNotificationBase'
- type: object
properties:
method:
type: string
const: programNotification
params:
type: object
required: [subscription, result]
properties:
subscription: { type: integer }
result:
type: object
required: [context, value]
properties:
context: { $ref: '#/components/schemas/Context' }
value:
type: object
properties:
pubkey: { type: string }
account: { $ref: '#/components/schemas/AccountInfo' }
# ----- signatureSubscribe -----
SignatureSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
const: signatureSubscribe
params:
type: array
minItems: 1
maxItems: 2
items:
oneOf:
- type: string
description: Transaction signature (base58).
- type: object
properties:
commitment: { $ref: '#/components/schemas/Commitment' }
enableReceivedNotification: { type: boolean }
SignatureNotificationPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcNotificationBase'
- type: object
properties:
method:
type: string
const: signatureNotification
params:
type: object
required: [subscription, result]
properties:
subscription: { type: integer }
result:
type: object
required: [context, value]
properties:
context: { $ref: '#/components/schemas/Context' }
value:
oneOf:
- type: object
properties:
err: {}
- type: string
enum: [receivedSignature]
# ----- slotSubscribe -----
SlotSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- type: object
properties:
method:
type: string
const: slotSubscribe
params:
type: array
maxItems: 0
SlotNotificationPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcNotificationBase'
- type: object
properties:
method:
type: string
const: slotNotification
params:
type: object
required: [subscription, result]
properties:
subscription: { type: integer }
result:
type: object
properties:
parent: { type: integer, format: int64 }
root: { type: integer, format: int64 }
slot: { type: integer, format: int64 }
# ----- slotsUpdatesSubscribe -----
SlotsUpdatesSubscribeRequestPayload:
allOf:
- $ref: '#/components/schemas/JsonRpcRequestBase'
- t
# --- truncated at 32 KB (38 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/helius/refs/heads/main/asyncapi/helius-asyncapi.yml