Skip to main content

RPC Websocket API

After connecting to the RPC PubSub websocket at ws://<ADDRESS>/:

  • Submit subscription requests to the websocket using the methods below
  • Multiple subscriptions may be active at once
  • Many subscriptions take the optional commitment parameter, defining how finalized a change should be to trigger a notification. For subscriptions, if commitment is unspecified, the default value is finalized.

RPC PubSub WebSocket Endpoint

Default port: 8900 e.g. ws://localhost:8900, http://192.168.1.88:8900

Methods

The following methods are supported in the RPC Websocket API:

accountSubscribe

Subscribe to an account to receive notifications when the lamports or data for a given account public key changes

Parameters:

string required

Account Pubkey, as base-58 encoded string

object optional

Configuration object containing the following fields:

commitment string optional

encoding string optional

Encoding format for Account data

Values: base58base64base64+zstdjsonParsed

Details
  • base58 is slow.
  • jsonParsed encoding attempts to use program-specific state parsers to return more human-readable and explicit account state data
  • If jsonParsed is requested but a parser cannot be found, the field falls back to binary encoding, detectable when the datafield is typestring.

Result:

<number> - Subscription id (needed to unsubscribe)

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "accountSubscribe",
"params": [
"CM78CPUeXjn8o3yroDHxUtKsZZgoy4GPkPPXfouKNH12",
{
"encoding": "jsonParsed",
"commitment": "finalized"
}
]
}

Response:

{ "jsonrpc": "2.0", "result": 23784, "id": 1 }

Notification Format:

The notification format is the same as seen in the getAccountInfo RPC HTTP method.

Base58 encoding:

{
"jsonrpc": "2.0",
"method": "accountNotification",
"params": {
"result": {
"context": {
"slot": 5199307
},
"value": {
"data": [
"11116bv5nS2h3y12kD1yUKeMZvGcKLSjQgX6BeV7u1FrjeJcKfsHPXHRDEHrBesJhZyqnnq9qJeUuF7WHxiuLuL5twc38w2TXNLxnDbjmuR",
"base58"
],
"executable": false,
"lamports": 33594,
"owner": "11111111111111111111111111111111",
"rentEpoch": 635,
"space": 80
}
},
"subscription": 23784
}
}

Parsed-JSON encoding:

{
"jsonrpc": "2.0",
"method": "accountNotification",
"params": {
"result": {
"context": {
"slot": 5199307
},
"value": {
"data": {
"program": "nonce",
"parsed": {
"type": "initialized",
"info": {
"authority": "Bbqg1M4YVVfbhEzwA9SpC9FhsaG83YMTYoR4a8oTDLX",
"blockhash": "LUaQTmM7WbMRiATdMMHaRGakPtCkc2GHtH57STKXs6k",
"feeCalculator": {
"lamportsPerSignature": 5000
}
}
}
},
"executable": false,
"lamports": 33594,
"owner": "11111111111111111111111111111111",
"rentEpoch": 635,
"space": 80
}
},
"subscription": 23784
}
}

accountUnsubscribe

Unsubscribe from account change notifications

Parameters:

number required

id of the account Subscription to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "accountUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

blockSubscribe

Subscribe to receive notification anytime a new block is Confirmed or Finalized.

caution

This subscription is unstable and only available if the validator was started with the --rpc-pubsub-enable-block-subscription flag.

NOTE: The format of this subscription may change in the future

Parameters:

filter string | object optional

filter criteria for the logs to receive results by account type; currently supported:

string

all - include all transactions in block

object

A JSON object with the following field:

  • mentionsAccountOrProgram: <string> - return only transactions that mention the provided public key (as base-58 encoded string). If no mentions in a given block, then no notification will be sent.

object optional

Configuration object containing the following fields:

commitment string optional

transactionDetails string optional

level of transaction detail to return, either "full", "signatures", or "none".

showRewards bool optionalDefault: true

whether to populate the `rewards` array.

encoding string optionalDefault: base64

Encoding format for Account data

Values: base58base64base64+zstdjsonParsed

Details
  • base58 is slow
  • jsonParsed encoding attempts to use program-specific state parsers to return more human-readable and explicit account state data.
  • If jsonParsed is requested but a parser cannot be found, the field falls back to base64 encoding, detectable when the data field is type string.

Result:

integer - subscription id (needed to unsubscribe)

Code sample:

{
"jsonrpc": "2.0",
"id": "1",
"method": "blockSubscribe",
"params": ["all"]
}
{
"jsonrpc": "2.0",
"id": "1",
"method": "blockSubscribe",
"params": [
{
"mentionsAccountOrProgram": "LieKvPRE8XeX3Y2xVNHjKlpAScD12lYySBVQ4HqoJ5op"
},
{
"commitment": "confirmed",
"encoding": "base64",
"showRewards": true,
"transactionDetails": "full"
}
]
}

Response:

{ "jsonrpc": "2.0", "result": 0, "id": 1 }

Notification Format:

The notification will be an object with the following fields:

  • slot: <u64> - The corresponding slot.
  • err: <object|null> - Error if something went wrong publishing the notification otherwise null.
  • block: <object|null> - A block object as seen in the getBlock RPC HTTP method.
{
"jsonrpc": "2.0",
"method": "blockNotification",
"params": {
"result": {
"context": {
"slot": 112301554
},
"value": {
"slot": 112301554,
"block": {
"previousBlockhash": "GJp125YAN4ufCSUvZJVdCyWQJ7RPWMmwxoyUQySydZA",
"blockhash": "6ojMHjctdqfB55JDpEpqfHnP96fiaHEcvzEQ2NNcxzHP",
"parentSlot": 112301553,
"transactions": [
{
"transaction": [
"OpltwoUvWxYi1P2U8vbIdE/aPntjYo5Aa0VQ2JJyeJE2g9Vvxk8dDGgFMruYfDu8/IfUWb0REppTe7IpAuuLRgIBAAkWnj4KHRpEWWW7gvO1c0BHy06wZi2g7/DLqpEtkRsThAXIdBbhXCLvltw50ZnjDx2hzw74NVn49kmpYj2VZHQJoeJoYJqaKcvuxCi/2i4yywedcVNDWkM84Iuw+cEn9/ROCrXY4qBFI9dveEERQ1c4kdU46xjxj9Vi+QXkb2Kx45QFVkG4Y7HHsoS6WNUiw2m4ffnMNnOVdF9tJht7oeuEfDMuUEaO7l9JeUxppCvrGk3CP45saO51gkwVYEgKzhpKjCx3rgsYxNR81fY4hnUQXSbbc2Y55FkwgRBpVvQK7/+clR4Gjhd3L4y+OtPl7QF93Akg1LaU9wRMs5nvfDFlggqI9PqJl+IvVWrNRdBbPS8LIIhcwbRTkSbqlJQWxYg3Bo2CTVbw7rt1ZubuHWWp0mD/UJpLXGm2JprWTePNULzHu67sfqaWF99LwmwjTyYEkqkRt1T0Je5VzHgJs0N5jY4iIU9K3lMqvrKOIn/2zEMZ+ol2gdgjshx+sphIyhw65F3J/Dbzk04LLkK+CULmN571Y+hFlXF2ke0BIuUG6AUF+4214Cu7FXnqo3rkxEHDZAk0lRrAJ8X/Z+iwuwI5cgbd9uHXZaGT2cvhRs7reawctIXtX1s3kTqM9YV+/wCpDLAp8axcEkaQkLDKRoWxqp8XLNZSKial7Rk+ELAVVKWoWLRXRZ+OIggu0OzMExvVLE5VHqy71FNHq4gGitkiKYNFWSLIE4qGfdFLZXy/6hwS+wq9ewjikCpd//C9BcCL7Wl0iQdUslxNVCBZHnCoPYih9JXvGefOb9WWnjGy14sG9j70+RSVx6BlkFELWwFvIlWR/tHn3EhHAuL0inS2pwX7ZQTAU6gDVaoqbR2EiJ47cKoPycBNvHLoKxoY9AZaBjPl6q8SKQJSFyFd9n44opAgI6zMTjYF/8Ok4VpXEESp3QaoUyTI9sOJ6oFP6f4dwnvQelgXS+AEfAsHsKXxGAIUDQENAgMEBQAGBwgIDg8IBJCER3QXl1AVDBADCQoOAAQLERITDAjb7ugh3gOuTy==",
"base64"
],
"meta": {
"err": null,
"status": {
"Ok": null
},
"fee": 5000,
"preBalances": [
1758510880, 2067120, 1566000, 1461600, 2039280, 2039280,
1900080, 1865280, 0, 3680844220, 2039280
],
"postBalances": [
1758505880, 2067120, 1566000, 1461600, 2039280, 2039280,
1900080, 1865280, 0, 3680844220, 2039280
],
"innerInstructions": [
{
"index": 0,
"instructions": [
{
"programIdIndex": 13,
"accounts": [1, 15, 3, 4, 2, 14],
"data": "21TeLgZXNbtHXVBzCaiRmH"
},
{
"programIdIndex": 14,
"accounts": [3, 4, 1],
"data": "6qfC8ic7Aq99"
},
{
"programIdIndex": 13,
"accounts": [1, 15, 3, 5, 2, 14],
"data": "21TeLgZXNbsn4QEpaSEr3q"
},
{
"programIdIndex": 14,
"accounts": [3, 5, 1],
"data": "6LC7BYyxhFRh"
}
]
},
{
"index": 1,
"instructions": [
{
"programIdIndex": 14,
"accounts": [4, 3, 0],
"data": "7aUiLHFjSVdZ"
},
{
"programIdIndex": 19,
"accounts": [17, 18, 16, 9, 11, 12, 14],
"data": "8kvZyjATKQWYxaKR1qD53V"
},
{
"programIdIndex": 14,
"accounts": [9, 11, 18],
"data": "6qfC8ic7Aq99"
}
]
}
],
"logMessages": [
"Program QMNeHCGYnLVDn1icRAfQZpjPLBNkfGbSKRB83G5d8KB invoke [1]",
"Program QMWoBmAyJLAsA1Lh9ugMTw2gciTihncciphzdNzdZYV invoke [2]"
],
"preTokenBalances": [
{
"accountIndex": 4,
"mint": "iouQcQBAiEXe6cKLS85zmZxUqaCqBdeHFpqKoSz615u",
"uiTokenAmount": {
"uiAmount": null,
"decimals": 6,
"amount": "0",
"uiAmountString": "0"
},
"owner": "LieKvPRE8XeX3Y2xVNHjKlpAScD12lYySBVQ4HqoJ5op",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"accountIndex": 5,
"mint": "iouQcQBAiEXe6cKLS85zmZxUqaCqBdeHFpqKoSz615u",
"uiTokenAmount": {
"uiAmount": 11513.0679,
"decimals": 6,
"amount": "11513067900",
"uiAmountString": "11513.0679"
},
"owner": "rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"accountIndex": 10,
"mint": "Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1",
"uiTokenAmount": {
"uiAmount": null,
"decimals": 6,
"amount": "0",
"uiAmountString": "0"
},
"owner": "CL9wkGFT3SZRRNa9dgaovuRV7jrVVigBUZ6DjcgySsCU",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"accountIndex": 11,
"mint": "Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1",
"uiTokenAmount": {
"uiAmount": 15138.514093,
"decimals": 6,
"amount": "15138514093",
"uiAmountString": "15138.514093"
},
"owner": "LieKvPRE8XeX3Y2xVNHjKlpAScD12lYySBVQ4HqoJ5op",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
}
],
"postTokenBalances": [
{
"accountIndex": 4,
"mint": "iouQcQBAiEXe6cKLS85zmZxUqaCqBdeHFpqKoSz615u",
"uiTokenAmount": {
"uiAmount": null,
"decimals": 6,
"amount": "0",
"uiAmountString": "0"
},
"owner": "LieKvPRE8XeX3Y2xVNHjKlpAScD12lYySBVQ4HqoJ5op",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"accountIndex": 5,
"mint": "iouQcQBAiEXe6cKLS85zmZxUqaCqBdeHFpqKoSz615u",
"uiTokenAmount": {
"uiAmount": 11513.103028,
"decimals": 6,
"amount": "11513103028",
"uiAmountString": "11513.103028"
},
"owner": "rXhAofQCT7NN9TUqigyEAUzV1uLL4boeD8CRkNBSkYk",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA"
},
{
"accountIndex": 10,
"mint": "Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1",
"uiTokenAmount": {
"uiAmount": null,
"decimals": 6,
"amount": "0",
"uiAmountString": "0"
},
"owner": "CL9wkGFT3SZRRNa9dgaovuRV7jrVVigBUZ6DjcgySsCU",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
},
{
"accountIndex": 11,
"mint": "Saber2gLauYim4Mvftnrasomsv6NvAuncvMEZwcLpD1",
"uiTokenAmount": {
"uiAmount": 15489.767829,
"decimals": 6,
"amount": "15489767829",
"uiAmountString": "15489.767829"
},
"owner": "BeiHVPRE8XeX3Y2xVNrSsTpAScH94nYySBVQ4HqgN9at",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb"
}
],
"rewards": []
}
}
],
"blockTime": 1639926816,
"blockHeight": 101210751
},
"err": null
}
},
"subscription": 14
}
}

blockUnsubscribe

Unsubscribe from block notifications

Parameters:

integer required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "blockUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

logsSubscribe

Subscribe to transaction logging

Parameters:

filter string | object required

filter criteria for the logs to receive results by account type. The following filters types are currently supported:

string

A string with one of the following values:

  • all - subscribe to all transactions except for simple vote transactions
  • allWithVotes - subscribe to all transactions, including simple vote transactions

object

An object with the following field:

  • mentions: [ <string> ] - array containing a single Pubkey (as base-58 encoded string); if present, subscribe to only transactions mentioning this address
caution

Currently, the mentions field only supports one Pubkey string per method call. Listing additional addresses will result in an error.

object optional

Configuration object containing the following fields:

commitment string optional

Result:

<integer> - Subscription id (needed to unsubscribe)

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "logsSubscribe",
"params": [
{
"mentions": [ "11111111111111111111111111111111" ]
},
{
"commitment": "finalized"
}
]
}
{
"jsonrpc": "2.0",
"id": 1,
"method": "logsSubscribe",
"params": [ "all" ]
}

Response:

{ "jsonrpc": "2.0", "result": 24040, "id": 1 }

Notification Format:

The notification will be an RpcResponse JSON object with value equal to:

  • signature: <string> - The transaction signature base58 encoded.
  • err: <object|null> - Error if transaction failed, null if transaction succeeded. TransactionError definitions
  • logs: <array|null> - Array of log messages the transaction instructions output during execution, null if simulation failed before the transaction was able to execute (for example due to an invalid blockhash or signature verification failure)

Example:

{
"jsonrpc": "2.0",
"method": "logsNotification",
"params": {
"result": {
"context": {
"slot": 5208469
},
"value": {
"signature": "5h6xBEauJ3PK6SWCZ1PGjBvj8vDdWG3KpwATGy1ARAXFSDwt8GFXM7W5Ncn16wmqokgpiKRLuS83KUxyZyv2sUYv",
"err": null,
"logs": [
"SBF program 83astBRguLMdt2h5U1Tpdq5tjFoJ6noeGwaY3mDLVcri success"
]
}
},
"subscription": 24040
}
}

logsUnsubscribe

Unsubscribe from transaction logging

Parameters:

integer required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "logsUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

programSubscribe

Subscribe to a program to receive notifications when the lamports or data for an account owned by the given program changes

Parameters:

string required

Pubkey of the program_id, as base-58 encoded string

object optional

Configuration object containing the following fields:

commitment string optional

filters array optional

filter results using various filter objects

info

The resultant account must meet ALL filter criteria to be included in the returned results

encoding string optional

Encoding format for Account data

Values: base58base64base64+zstdjsonParsed

Details
  • base58 is slow.
  • jsonParsed encoding attempts to use program-specific state parsers to return more human-readable and explicit account state data.
  • If jsonParsed is requested but a parser cannot be found, the field falls back to base64 encoding, detectable when the data field is type string.

Result:

<integer> - Subscription id (needed to unsubscribe)

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "programSubscribe",
"params": [
"11111111111111111111111111111111",
{
"encoding": "base64",
"commitment": "finalized"
}
]
}
{
"jsonrpc": "2.0",
"id": 1,
"method": "programSubscribe",
"params": [
"11111111111111111111111111111111",
{
"encoding": "jsonParsed"
}
]
}
{
"jsonrpc": "2.0",
"id": 1,
"method": "programSubscribe",
"params": [
"11111111111111111111111111111111",
{
"encoding": "base64",
"filters": [
{
"dataSize": 80
}
]
}
]
}

Response:

{ "jsonrpc": "2.0", "result": 24040, "id": 1 }

Notification format

The notification format is a single program account object as seen in the getProgramAccounts RPC HTTP method.

Base58 encoding:

{
"jsonrpc": "2.0",
"method": "programNotification",
"params": {
"result": {
"context": {
"slot": 5208469
},
"value": {
"pubkey": "H4vnBqifaSACnKa7acsxstsY1iV1bvJNxsCY7enrd1hq",
"account": {
"data": [
"11116bv5nS2h3y12kD1yUKeMZvGcKLSjQgX6BeV7u1FrjeJcKfsHPXHRDEHrBesJhZyqnnq9qJeUuF7WHxiuLuL5twc38w2TXNLxnDbjmuR",
"base58"
],
"executable": false,
"lamports": 33594,
"owner": "11111111111111111111111111111111",
"rentEpoch": 636,
"space": 80
}
}
},
"subscription": 24040
}
}

Parsed-JSON encoding:

{
"jsonrpc": "2.0",
"method": "programNotification",
"params": {
"result": {
"context": {
"slot": 5208469
},
"value": {
"pubkey": "H4vnBqifaSACnKa7acsxstsY1iV1bvJNxsCY7enrd1hq",
"account": {
"data": {
"program": "nonce",
"parsed": {
"type": "initialized",
"info": {
"authority": "Bbqg1M4YVVfbhEzwA9SpC9FhsaG83YMTYoR4a8oTDLX",
"blockhash": "LUaQTmM7WbMRiATdMMHaRGakPtCkc2GHtH57STKXs6k",
"feeCalculator": {
"lamportsPerSignature": 5000
}
}
}
},
"executable": false,
"lamports": 33594,
"owner": "11111111111111111111111111111111",
"rentEpoch": 636,
"space": 80
}
}
},
"subscription": 24040
}
}

programUnsubscribe

Unsubscribe from program-owned account change notifications

Parameters:

number required

id of account Subscription to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "programUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

signatureSubscribe

Subscribe to receive a notification when the transaction with the given signature reaches the specified commitment level.

caution

This is a subscription to a single notification. It is automatically cancelled by the server once the notification, signatureNotification, is sent by the RPC.

Parameters:

string required

transaction signature, as base-58 encoded string

info

The transaction signature must be the first signature from the transaction (see transaction id for more details).

object optional

Configuration object containing the following fields:

commitment string optional

enableReceivedNotification bool optional

Whether or not to subscribe for notifications when signatures are received by the RPC, in addition to when they are processed.

Result:

<integer> - subscription id (needed to unsubscribe)

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "signatureSubscribe",
"params": [
"2EBVM6cB8vAAD93Ktr6Vd8p67XPbQzCJX47MpReuiCXJAtcjaxpvWpcg9Ege1Nr5Tk3a2GFrByT7WPBjdsTycY9b",
{
"commitment": "finalized",
"enableReceivedNotification": false
}
]
}

Response:

{ "jsonrpc": "2.0", "result": 0, "id": 1 }

Notification Format:

The notification will be an RpcResponse JSON object with value containing an object with:

  • slot: <u64> - The corresponding slot.
  • value: <object|string> - a notification value of RpcSignatureResult, resulting in either:
    • when enableReceivedNotification is true and the signature is received: the literal string "receivedSignature", or
    • when the signature is processed: err: <object|null>:
      • null if the transaction succeeded in being processed at the specified commitment level, or
      • a TransactionError, if the transaction failed

Example responses:

The following is an example response of a notification from a successfully processed transactions:

{
"jsonrpc": "2.0",
"method": "signatureNotification",
"params": {
"result": {
"context": {
"slot": 5207624
},
"value": {
"err": null
}
},
"subscription": 24006
}
}

The following is an example response of a notification from a successfully recieved transaction signature:

{
"jsonrpc": "2.0",
"method": "signatureNotification",
"params": {
"result": {
"context": {
"slot": 5207624
},
"value": "receivedSignature"
},
"subscription": 24006
}
}

signatureUnsubscribe

Unsubscribe from signature confirmation notification

Parameters:

number required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "signatureUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

slotSubscribe

Subscribe to receive notification anytime a slot is processed by the validator

Parameters:

None

Result:

<integer> - Subscription id (needed to unsubscribe)

Code sample:

{ "jsonrpc": "2.0", "id": 1, "method": "slotSubscribe" }

Response:

{ "jsonrpc": "2.0", "result": 0, "id": 1 }

Notification Format:

The notification will be an object with the following fields:

  • parent: <u64> - The parent slot
  • root: <u64> - The current root slot
  • slot: <u64> - The newly set slot value

Example:

{
"jsonrpc": "2.0",
"method": "slotNotification",
"params": {
"result": {
"parent": 75,
"root": 44,
"slot": 76
},
"subscription": 0
}
}

slotUnsubscribe

Unsubscribe from slot notifications

Parameters:

integer required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "slotUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

slotsUpdatesSubscribe

Subscribe to receive a notification from the validator on a variety of updates on every slot

caution

This subscription is unstable

NOTE: the format of this subscription may change in the future and it may not always be supported

Parameters:

None

Result:

<integer> - Subscription id (needed to unsubscribe)

Code sample:

{ "jsonrpc": "2.0", "id": 1, "method": "slotsUpdatesSubscribe" }

Response:

{ "jsonrpc": "2.0", "result": 0, "id": 1 }

Notification Format:

The notification will be an object with the following fields:

  • parent: <u64> - The parent slot
  • slot: <u64> - The newly updated slot
  • timestamp: <i64> - The Unix timestamp of the update
  • type: <string> - The update type, one of:
    • "firstShredReceived"
    • "completed"
    • "createdBank"
    • "frozen"
    • "dead"
    • "optimisticConfirmation"
    • "root"
{
"jsonrpc": "2.0",
"method": "slotsUpdatesNotification",
"params": {
"result": {
"parent": 75,
"slot": 76,
"timestamp": 1625081266243,
"type": "optimisticConfirmation"
},
"subscription": 0
}
}

slotsUpdatesUnsubscribe

Unsubscribe from slot-update notifications

Parameters:

number required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "slotsUpdatesUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

rootSubscribe

Subscribe to receive notification anytime a new root is set by the validator.

Parameters:

None

Result:

integer - subscription id (needed to unsubscribe)

Code sample:

{ "jsonrpc": "2.0", "id": 1, "method": "rootSubscribe" }

Response:

{ "jsonrpc": "2.0", "result": 0, "id": 1 }

Notification Format:

The result is the latest root slot number.

{
"jsonrpc": "2.0",
"method": "rootNotification",
"params": {
"result": 42,
"subscription": 0
}
}

rootUnsubscribe

Unsubscribe from root notifications

Parameters:

number required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "rootUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }

voteSubscribe

Subscribe to receive notification anytime a new vote is observed in gossip. These votes are pre-consensus therefore there is no guarantee these votes will enter the ledger.

caution

This subscription is unstable and only available if the validator was started with the --rpc-pubsub-enable-vote-subscription flag. The format of this subscription may change in the future

Parameters:

None

Result:

<integer> - subscription id (needed to unsubscribe)

Code sample:

{ "jsonrpc": "2.0", "id": 1, "method": "voteSubscribe" }

Response:

{ "jsonrpc": "2.0", "result": 0, "id": 1 }

Notification Format:

The notification will be an object with the following fields:

  • hash: <string> - The vote hash
  • slots: <array> - The slots covered by the vote, as an array of u64 integers
  • timestamp: <i64|null> - The timestamp of the vote
  • signature: <string> - The signature of the transaction that contained this vote
{
"jsonrpc": "2.0",
"method": "voteNotification",
"params": {
"result": {
"hash": "8Rshv2oMkPu5E4opXTRyuyBeZBqQ4S477VG26wUTFxUM",
"slots": [1, 2],
"timestamp": null
},
"subscription": 0
}
}

voteUnsubscribe

Unsubscribe from vote notifications

Parameters:

integer required

subscription id to cancel

Result:

<bool> - unsubscribe success message

Code sample:

{
"jsonrpc": "2.0",
"id": 1,
"method": "voteUnsubscribe",
"params": [0]
}

Response:

{ "jsonrpc": "2.0", "result": true, "id": 1 }