| title | JSON Reference |
|---|---|
| h1 | Solana RPC JSON Structures |
Various Solana RPC methods return structured JSON objects with well-defined fields and nested data.
This page documents the shared JSON data structures reused across Solana RPC responses.
Start with the top-level structure returned by the RPC method you are using, then follow the linked sections for any nested objects it contains.
| Reference | Details |
|---|---|
| Type definitions | transaction-status-client-types; rpc-client-types; account-decoder-client-types |
| Serialization behavior | transaction-status; rpc |
The sections below are grouped into top-level response objects and shared structures. Each section begins with a reference table that links the structure to the RPC method or parent structure, response path, and type definition.
Block-oriented RPC methods such as getBlock return confirmed blocks in this
structure:
| Reference | Details |
|---|---|
| Returned by | getBlock; the block field in blockSubscribe notifications |
| Response path | result in getBlock; params.result.value.block in blockSubscribe |
| Type Definition | UiConfirmedBlock |
!type string
The previous block's blockhash, as a base-58 encoded string.
!type string
This block's blockhash, as a base-58 encoded string.
!type u64
Slot index of this block's parent.
!type array[object] | undefined
Transactions included in the block. Each entry uses the structure documented in
Encoded Transaction Responses. Present when
transactionDetails is "full" or "accounts".
!type object | string | [string, "base58" | "base64"]
Encoded transaction payload. Uses the structure documented in Encoded Transaction Responses.
!type object | null
Transaction metadata using the same structure documented in
Transaction Status Metadata, or null if
metadata is unavailable.
!type "legacy" | number | undefined
Transaction version for this entry. Omitted when version information is not
available, including legacy transactions without
maxSupportedTransactionVersion.
!type array[object] | undefined
Rewards recorded for the block. Present when block rewards are requested; omitted otherwise. Uses the structure documented in Rewards.
!type u64 | undefined
Number of reward partitions in the block, when available.
!type i64 | null
Estimated production time of the block as a Unix timestamp.
!type u64 | null
Block height of this block, if available.
!type array[string] | undefined
Transaction signatures only. Present when transactionDetails is
"signatures".
getTransaction returns a confirmed transaction in this structure:
| Reference | Details |
|---|---|
| Returned by | getTransaction |
| Response path | result |
| Type Definition | EncodedConfirmedTransactionWithStatusMeta |
{
// !hover slot
"slot": 408830360,
// !hover(1:51) transaction
"transaction": {
"signatures": [
"4fqGV381e6h87Hn5vGm7W5MGivHFtTisS9G2UpbsuritcTmXPsPtU32BWF2Bw4yMxH1NAFgGtpWbuVfXbZt8xTBw",
"3KYwzbzs2oupAv2A4qMCLpPQusXazJRSxzT99UE3rfoejStBbDnBFeZRUt8et3LTSVBXncCqTXzBVWqxNSrK4J41"
],
"message": {
"accountKeys": [
"44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"BhRYqZJfASkDVaKPtU8NLoPyXAbJFAWSsMujzRn1wFRV",
"D3XSB6m2ZjNjTspKVd8hXdmi19CbjmtKabBLLzgf9x6B",
"5eHy2DQ7cQjEw2PoEfxvUd5rttzr2NydmGhKpQHk2TdM",
"8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"DocSpnPnyffShXENq9xKSuL68GeScV7HsQnZw5X65LSb",
"mKLWCKDeHeym4egVLMTLNV661E1FsHarXvYr6pwAFPz"
],
"addressTableLookups": [
{
"accountKey": "buDnget76BvfyDQQgUKN6npRixeir9K59jBVP9QMqZq",
"readonlyIndexes": [140, 144, 141, 33, 26, 20, 3, 34, 143, 142],
"writableIndexes": [4]
}
],
"header": {
"numReadonlySignedAccounts": 1,
"numReadonlyUnsignedAccounts": 5,
"numRequiredSignatures": 2
},
"instructions": [
{
"accounts": [2, 20, 1],
"data": "6vx8P",
"programIdIndex": 15,
"stackHeight": 1
},
{
"accounts": [21],
"data": "2fX7imjEaEwy",
"programIdIndex": 18,
"stackHeight": 1
},
{
"accounts": [],
"data": "3Sby4Ya7yebR",
"programIdIndex": 18,
"stackHeight": 1
}
],
"recentBlockhash": "5D7W1x5zbqBn67kPDz62L5ZF1McxnhajiRGrhh3Y3wKb"
}
},
// !hover(1:99) meta
"meta": {
"err": null,
"fee": 2010000,
"innerInstructions": [
{
"index": 5,
"instructions": [
{
"accounts": [28, 16],
"data": "2BfZXS1GQrCLZ1vzWVcaYz6Kpzd9QSStQWUgg9fK2UEsEo",
"programIdIndex": 29,
"stackHeight": 2
}
]
}
],
"logMessages": [
"Program 11111111111111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success"
],
"postBalances": [
232434298, 100440447, 1447680, 0, 2985840, 3821040, 2074080, 2074080
],
"postTokenBalances": [
{
"accountIndex": 6,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "0",
"decimals": 6,
"uiAmount": null,
"uiAmountString": "0"
}
},
{
"accountIndex": 7,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "170620656370954",
"decimals": 6,
"uiAmount": 170620656.370954,
"uiAmountString": "170620656.370954"
}
}
],
"preBalances": [
131202493, 100440447, 1447680, 0, 2985840, 3821040, 2074080, 2074080
],
"preTokenBalances": [
{
"accountIndex": 6,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "175173728464",
"decimals": 6,
"uiAmount": 175173.728464,
"uiAmountString": "175173.728464"
}
},
{
"accountIndex": 7,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "170445482642490",
"decimals": 6,
"uiAmount": 170445482.64249,
"uiAmountString": "170445482.64249"
}
}
],
"rewards": [],
"loadedAddresses": {
"readonly": [
"SysvarRecentB1ockHashes11111111111111111111",
"jitodontfront1111111111111111111111tradewiz",
"SysvarRent111111111111111111111111111111111",
"ADyA8hdefvWN2dbGGWFotbzWxrAvLW83WG6QCVXvJKqw"
],
"writable": ["So11111111111111111111111111111111111111112"]
},
"returnData": null,
"computeUnitsConsumed": 98924,
"costUnits": 107709,
"status": {
"Ok": null
}
},
// !hover version
"version": 0,
// !hover blockTime
"blockTime": 1774467439
}!type u64
Slot that contains this transaction.
!type object | string | [string, "base58" | "base64"]
Encoded transaction payload. Uses the structure documented in Encoded Transaction Responses.
!type object | null
Transaction metadata, or null if metadata is unavailable. Uses the structure
documented in Transaction Status Metadata.
!type "legacy" | number | undefined
Transaction version. Omitted when version information is not available,
including legacy transactions when maxSupportedTransactionVersion is not set.
Versioned transactions serialize as a numeric version.
!type i64 | null
Estimated production time of the block that contains this transaction, as a Unix timestamp.
simulateTransaction returns this object inside result.value.
sendTransaction preflight failures use the same structure inside error.data.
Preflight failures return a sparser subset of fields, with several fields set to
null:
| Reference | Details |
|---|---|
| Returned by | simulateTransaction; sendTransaction preflight failures in error.data |
| Response path | result.value in simulateTransaction; error.data in sendTransaction preflight failures |
| Type Definitions | RpcSimulateTransactionResult, RpcBlockhash, UiAccount |
{
// !hover accounts
"accounts": null,
// !hover err
"err": null,
// !hover innerInstructions
"innerInstructions": null,
// !hover loadedAccountsDataSize
"loadedAccountsDataSize": 711749,
// !hover(1:6) logs
"logs": [
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb invoke [1]",
"Program log: Instruction: Transfer",
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb consumed 1824 of 200000 compute units",
"Program TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb success"
],
// !hover(1:4) replacementBlockhash
"replacementBlockhash": {
// !hover replacementBlockhash.blockhash
"blockhash": "CDK7TP7iVFdqwMhdrG3kZUhLcNUS9KQ3d7MsGQyUyfKx",
// !hover replacementBlockhash.lastValidBlockHeight
"lastValidBlockHeight": 438875965
},
// !hover returnData
"returnData": null,
// !hover unitsConsumed
"unitsConsumed": 1824,
// !hover fee
"fee": 5000,
// !hover preBalances
"preBalances": [994375240, 2074080, 2074080, 1159846],
// !hover postBalances
"postBalances": [994370240, 2074080, 2074080, 1159846],
// !hover(1:26) postTokenBalances
"postTokenBalances": [
{
"accountIndex": 1,
"mint": "72p1XsRo7KRptf8ZhPoHvVFneLPpUT4rpTYRu5EnKB8A",
"owner": "GzKdGsAgBBz7ekBnVmiaoq1QV43J9fu6tTexJMmygQUS",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "200",
"decimals": 2,
"uiAmount": 2.0,
"uiAmountString": "2"
}
},
{
"accountIndex": 2,
"mint": "72p1XsRo7KRptf8ZhPoHvVFneLPpUT4rpTYRu5EnKB8A",
"owner": "AUpUPTU4dUGJmGSk6TbWDua2EzLr4oV8VtQ9vd6t6mqc",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "999999999999800",
"decimals": 2,
"uiAmount": 9999999999998.0,
"uiAmountString": "9999999999998"
}
}
],
// !hover(1:26) preTokenBalances
"preTokenBalances": [
{
"accountIndex": 1,
"mint": "72p1XsRo7KRptf8ZhPoHvVFneLPpUT4rpTYRu5EnKB8A",
"owner": "GzKdGsAgBBz7ekBnVmiaoq1QV43J9fu6tTexJMmygQUS",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "100",
"decimals": 2,
"uiAmount": 1.0,
"uiAmountString": "1"
}
},
{
"accountIndex": 2,
"mint": "72p1XsRo7KRptf8ZhPoHvVFneLPpUT4rpTYRu5EnKB8A",
"owner": "AUpUPTU4dUGJmGSk6TbWDua2EzLr4oV8VtQ9vd6t6mqc",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "999999999999900",
"decimals": 2,
"uiAmount": 9999999999999.0,
"uiAmountString": "9999999999999"
}
}
],
// !hover(1:4) loadedAddresses
"loadedAddresses": {
// !hover loadedAddresses.readonly
"readonly": [],
// !hover loadedAddresses.writable
"writable": []
}
}!type array[object | null] | null
Post-simulation snapshots for the addresses requested in
simulateTransaction.accounts.addresses. Each element corresponds to the same
index in the request and is either null or an account object using the same
schema documented in Account Data. The data field depends on
the requested account encoding.
!type string | object | null
Simulation error. Uses the structure documented in
Transaction Errors. null indicates success.
!type array[object] | null
Inner instructions captured during simulation. null unless CPI recording was
requested. Uses the structure documented in
Inner Instructions, always in the JSON Parsed form: each
instruction is either fully parsed or partially decoded, never a compiled
instruction with account indexes.
!type u32
Total number of account-data bytes loaded while simulating the transaction.
!type array[string] | null
Program log output captured during simulation. This field is null if the
simulation failed before execution began; otherwise, it is an array that may be
empty.
!type object | null
Replacement blockhash the RPC node used when replaceRecentBlockhash was
enabled.
!type string
Replacement recent blockhash, as a base-58 encoded string.
!type u64
Last block height at which the replacement blockhash remains valid.
!type object | null
Most recent instruction return data captured during simulation. Uses the structure documented in Return Data.
!type u64
Compute units consumed during simulation.
!type u64 | null
Fee charged for the simulated transaction. null if simulation failed before
fee calculation completed.
!type array[u64] | null
Lamport balances before simulation, indexed to the transaction account list.
!type array[u64] | null
Lamport balances after simulation, indexed to the transaction account list.
!type array[object] | null
Token balances after simulation. Uses the structure documented in Token Balances.
!type array[object] | null
Token balances before simulation. Uses the structure documented in Token Balances.
!type object | null
Loaded account addresses resolved from lookup tables. simulateTransaction
currently serializes this field as an object, using empty arrays when no
addresses were loaded. sendTransaction preflight failures may return null
for this field in error.data. Uses the structure documented in
Loaded Addresses.
Transaction-oriented RPC methods embed transactions in an encoded wrapper using this structure:
| Reference | Details |
|---|---|
| Included in | transactions[] in Confirmed Blocks; the shared transaction, meta, and version fields in Confirmed Transaction Responses |
| Response path | transactions[] in confirmed blocks; result.transaction, result.meta, and result.version in confirmed transaction responses |
| Type Definition | EncodedTransactionWithStatusMeta |
{
// !hover(1:51) transaction
"transaction": {
"signatures": [
"4fqGV381e6h87Hn5vGm7W5MGivHFtTisS9G2UpbsuritcTmXPsPtU32BWF2Bw4yMxH1NAFgGtpWbuVfXbZt8xTBw",
"3KYwzbzs2oupAv2A4qMCLpPQusXazJRSxzT99UE3rfoejStBbDnBFeZRUt8et3LTSVBXncCqTXzBVWqxNSrK4J41"
],
"message": {
"accountKeys": [
"44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"BhRYqZJfASkDVaKPtU8NLoPyXAbJFAWSsMujzRn1wFRV",
"D3XSB6m2ZjNjTspKVd8hXdmi19CbjmtKabBLLzgf9x6B",
"5eHy2DQ7cQjEw2PoEfxvUd5rttzr2NydmGhKpQHk2TdM",
"8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"DocSpnPnyffShXENq9xKSuL68GeScV7HsQnZw5X65LSb",
"mKLWCKDeHeym4egVLMTLNV661E1FsHarXvYr6pwAFPz"
],
"addressTableLookups": [
{
"accountKey": "buDnget76BvfyDQQgUKN6npRixeir9K59jBVP9QMqZq",
"readonlyIndexes": [140, 144, 141, 33, 26, 20, 3, 34, 143, 142],
"writableIndexes": [4]
}
],
"header": {
"numReadonlySignedAccounts": 1,
"numReadonlyUnsignedAccounts": 5,
"numRequiredSignatures": 2
},
"instructions": [
{
"accounts": [2, 20, 1],
"data": "6vx8P",
"programIdIndex": 15,
"stackHeight": 1
},
{
"accounts": [21],
"data": "2fX7imjEaEwy",
"programIdIndex": 18,
"stackHeight": 1
},
{
"accounts": [],
"data": "3Sby4Ya7yebR",
"programIdIndex": 18,
"stackHeight": 1
}
],
"recentBlockhash": "5D7W1x5zbqBn67kPDz62L5ZF1McxnhajiRGrhh3Y3wKb"
}
},
// !hover(1:99) meta
"meta": {
"err": null,
"fee": 2010000,
"innerInstructions": [
{
"index": 5,
"instructions": [
{
"accounts": [28, 16],
"data": "2BfZXS1GQrCLZ1vzWVcaYz6Kpzd9QSStQWUgg9fK2UEsEo",
"programIdIndex": 29,
"stackHeight": 2
}
]
}
],
"logMessages": [
"Program 11111111111111111111111111111111 invoke [1]",
"Program 11111111111111111111111111111111 success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success"
],
"postBalances": [
232434298, 100440447, 1447680, 0, 2985840, 3821040, 2074080, 2074080
],
"postTokenBalances": [
{
"accountIndex": 6,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "0",
"decimals": 6,
"uiAmount": null,
"uiAmountString": "0"
}
},
{
"accountIndex": 7,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "170620656370954",
"decimals": 6,
"uiAmount": 170620656.370954,
"uiAmountString": "170620656.370954"
}
}
],
"preBalances": [
131202493, 100440447, 1447680, 0, 2985840, 3821040, 2074080, 2074080
],
"preTokenBalances": [
{
"accountIndex": 6,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "175173728464",
"decimals": 6,
"uiAmount": 175173.728464,
"uiAmountString": "175173.728464"
}
},
{
"accountIndex": 7,
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"owner": "8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
"uiTokenAmount": {
"amount": "170445482642490",
"decimals": 6,
"uiAmount": 170445482.64249,
"uiAmountString": "170445482.64249"
}
}
],
"rewards": [],
"loadedAddresses": {
"readonly": [
"SysvarRecentB1ockHashes11111111111111111111",
"jitodontfront1111111111111111111111tradewiz",
"SysvarRent111111111111111111111111111111111",
"ADyA8hdefvWN2dbGGWFotbzWxrAvLW83WG6QCVXvJKqw"
],
"writable": ["So11111111111111111111111111111111111111112"]
},
"returnData": null,
"computeUnitsConsumed": 98924,
"costUnits": 107709,
"status": {
"Ok": null
}
},
// !hover version
"version": 0
}!type object | string | [string, "base58" | "base64"]
Encoded transaction payload. For JSON encodings, this uses the structures
documented in Transactions or
Accounts Only Transaction Responses. For
binary encodings, this is a base-58/base-64 string or a [string, encoding]
tuple.
!type object | null
Transaction metadata, or null if metadata is unavailable. Uses the structure
documented in Transaction Status Metadata. In
accounts mode block responses, some metadata fields are intentionally omitted,
including innerInstructions, logMessages, loadedAddresses, returnData,
computeUnitsConsumed, and costUnits.
!type "legacy" | number | undefined
Transaction version. Omitted when version information is not available,
including legacy transactions when maxSupportedTransactionVersion is not set.
Versioned transactions serialize as a numeric version.
Transactions are quite different from those on other blockchains. Be sure to review Anatomy of a Transaction to learn about transactions on Solana.
| Reference | Details |
|---|---|
| Included in | Encoded Transaction Responses; the transaction field in Confirmed Transaction Responses |
| Response path | transaction |
| Type Definitions | UiTransaction, UiMessage, UiRawMessage, UiParsedMessage |
| Encoding | Message shape | Instruction shape | Notes |
|---|---|---|---|
json |
UiRawMessage |
Compiled instructions | accountKeys are base-58 strings. Versioned messages describe lookup tables in addressTableLookups, with resolved loaded addresses reported separately in metadata. |
jsonParsed |
UiParsedMessage |
Parsed or partially decoded instructions | accountKeys are objects, and parsed versioned responses include lookup-table accounts. |
In the
v1 transaction format,
v1 messages additionally carry a transactionConfig object holding the
transaction's resource limits (requests must set
maxSupportedTransactionVersion: 1 to receive v1 transactions):
"message": {
// ... standard message fields ...
"transactionConfig": {
"computeUnitLimit": 30000,
"heapSize": null,
"loadedAccountsDataSizeLimit": 200000,
"priorityFee": null
}
}transactionConfigis present only for v1 messages — it is absent entirely (nevernull) for legacy and v0.- Unset inner fields are explicit
null, not omitted. priorityFeeis a total in lamports, not micro-lamports per compute unit.addressTableLookupsis omitted for v1 messages, which do not support address lookup tables.
The JSON structure of a transaction is defined as follows:
{
// !hover(1:45) message
"message": {
// !hover(1:10) message.accountKeys
"accountKeys": [
"44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"BhRYqZJfASkDVaKPtU8NLoPyXAbJFAWSsMujzRn1wFRV",
"D3XSB6m2ZjNjTspKVd8hXdmi19CbjmtKabBLLzgf9x6B",
"5eHy2DQ7cQjEw2PoEfxvUd5rttzr2NydmGhKpQHk2TdM",
"8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"DocSpnPnyffShXENq9xKSuL68GeScV7HsQnZw5X65LSb",
"mKLWCKDeHeym4egVLMTLNV661E1FsHarXvYr6pwAFPz"
],
// !hover(1:7) message.addressTableLookups
"addressTableLookups": [
{
"accountKey": "buDnget76BvfyDQQgUKN6npRixeir9K59jBVP9QMqZq",
"readonlyIndexes": [140, 144, 141, 33, 26, 20, 3, 34, 143, 142],
"writableIndexes": [4]
}
],
// !hover(1:5) message.header
"header": {
// !hover message.header.numReadonlySignedAccounts
"numReadonlySignedAccounts": 1,
// !hover message.header.numReadonlyUnsignedAccounts
"numReadonlyUnsignedAccounts": 5,
// !hover message.header.numRequiredSignatures
"numRequiredSignatures": 2
},
// !hover(1:20) message.instructions
"instructions": [
{
// !hover message.instructions.accounts
"accounts": [2, 20, 1],
// !hover message.instructions.data
"data": "6vx8P",
// !hover message.instructions.programIdIndex
"programIdIndex": 15,
// !hover message.instructions.stackHeight
"stackHeight": 1
},
{
"accounts": [21],
"data": "2fX7imjEaEwy",
"programIdIndex": 18,
"stackHeight": 1
},
{
"accounts": [],
"data": "3Sby4Ya7yebR",
"programIdIndex": 18,
"stackHeight": 1
}
],
// !hover message.recentBlockhash
"recentBlockhash": "5D7W1x5zbqBn67kPDz62L5ZF1McxnhajiRGrhh3Y3wKb"
},
// !hover(1:4) signatures
"signatures": [
"4fqGV381e6h87Hn5vGm7W5MGivHFtTisS9G2UpbsuritcTmXPsPtU32BWF2Bw4yMxH1NAFgGtpWbuVfXbZt8xTBw",
"3KYwzbzs2oupAv2A4qMCLpPQusXazJRSxzT99UE3rfoejStBbDnBFeZRUt8et3LTSVBXncCqTXzBVWqxNSrK4J41"
]
}!type object
Defines the content of the transaction.
!type array[string]
List of base-58 encoded static account keys stored in the message. For legacy
transactions this is the full account list. For versioned transactions,
additional loaded addresses are described separately via
message.addressTableLookups and metadata loadedAddresses. The first
message.header.numRequiredSignatures public keys must sign the transaction.
!type array[object] | undefined
Address lookup table references for versioned transactions. Present when the
transaction is versioned and maxSupportedTransactionVersion is set. This field
is currently emitted for v0 messages even when the array is empty, and is
omitted for v1 messages, which do not support address lookup tables. Uses the
structure documented in Address Table Lookups.
!type object
Details the account types and signatures required by the transaction.
!type u8
The last numReadonlySignedAccounts of the signed keys are read-only accounts.
Programs may process multiple transactions that load read-only accounts within a
single PoH entry, but are not permitted to credit or debit lamports or modify
account data. Transactions targeting the same read-write account are evaluated
sequentially.
!type u8
The last numReadonlyUnsignedAccounts of the unsigned keys are read-only
accounts.
!type u8
The total number of signatures required to make the transaction valid. The
signatures must match the first numRequiredSignatures of
message.accountKeys.
!type array[object]
List of program instructions that will be executed in sequence and committed in one atomic transaction if all succeed.
!type array[u8]
List of ordered indices into the transaction's account key space indicating
which accounts to pass to the program. For versioned messages, lookup-loaded
addresses are appended after the static message.accountKeys.
!type string
The program input data encoded in a base-58 string.
!type u8
Index into the transaction's account key space indicating the program account
that executes this instruction. For legacy messages this indexes directly into
message.accountKeys; for versioned messages, lookup-loaded addresses are
appended after the static keys.
!type u32
Transaction-level instruction stack height. This is currently 1 for top-level
instructions.
!type string
A base-58 encoded hash of a recent block in the ledger used to prevent transaction duplication and to give transactions lifetimes.
!type object | undefined
The compute budget a v1 message declares inline, in place of the ComputeBudget
program instructions used by legacy and v0 messages. Present only for v1
messages, and absent entirely — never null — for legacy and v0. Each inner
field is an explicit null when the transaction did not request that limit.
!type u32 | null
The maximum number of compute units the transaction may consume. A v1 transaction that requests no limit is budgeted zero compute units and fails at execution.
!type u32 | null
The heap frame size in bytes requested for execution. When null, the runtime
allocated the default 32,768 bytes.
!type u32 | null
The maximum size in bytes of account data the transaction may load. When null,
the transaction was budgeted zero bytes.
!type u64 | null
The total priority fee in lamports paid for prioritization, for the whole transaction rather than a price per compute unit.
!type array[string]
A list of base-58 encoded signatures applied to the transaction. The list is
always of length message.header.numRequiredSignatures and not empty. The
signature at index i corresponds to the public key at index i in
message.accountKeys. The first one is used as the
transaction id.
The JSON parsed structure of a transaction follows a similar structure to the regular JSON format, with additional parsing of account and instruction information:
{
// !hover(1:69) message
"message": {
// !hover(1:32) message.accountKeys
"accountKeys": [
{
// !hover message.accountKeys.pubkey
"pubkey": "44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
// !hover message.accountKeys.signer
"signer": true,
// !hover message.accountKeys.source
"source": "transaction",
// !hover message.accountKeys.writable
"writable": true
},
{
// !hover message.accountKeys.pubkey
"pubkey": "BhRYqZJfASkDVaKPtU8NLoPyXAbJFAWSsMujzRn1wFRV",
// !hover message.accountKeys.signer
"signer": true,
// !hover message.accountKeys.source
"source": "transaction",
// !hover message.accountKeys.writable
"writable": false
},
{
// !hover message.accountKeys.pubkey
"pubkey": "D3XSB6m2ZjNjTspKVd8hXdmi19CbjmtKabBLLzgf9x6B",
// !hover message.accountKeys.signer
"signer": false,
// !hover message.accountKeys.source
"source": "transaction",
// !hover message.accountKeys.writable
"writable": true
},
{
// !hover message.accountKeys.pubkey
"pubkey": "5eHy2DQ7cQjEw2PoEfxvUd5rttzr2NydmGhKpQHk2TdM",
// !hover message.accountKeys.signer
"signer": false,
// !hover message.accountKeys.source
"source": "transaction",
// !hover message.accountKeys.writable
"writable": true
},
{
// !hover message.accountKeys.pubkey
"pubkey": "8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ",
// !hover message.accountKeys.signer
"signer": false,
// !hover message.accountKeys.source
"source": "lookupTable",
// !hover message.accountKeys.writable
"writable": true
}
],
// !hover(1:7) message.addressTableLookups
"addressTableLookups": [
{
"accountKey": "buDnget76BvfyDQQgUKN6npRixeir9K59jBVP9QMqZq",
"readonlyIndexes": [140, 144, 141, 33, 26, 20, 3, 34, 143, 142],
"writableIndexes": [4]
}
],
// !hover(1:27) message.instructions
"instructions": [
{
// !hover(1:8) message.instructions.parsed
"parsed": {
// !hover(1:5) message.instructions.parsed.info
"info": {
"nonceAccount": "D3XSB6m2ZjNjTspKVd8hXdmi19CbjmtKabBLLzgf9x6B",
"nonceAuthority": "BhRYqZJfASkDVaKPtU8NLoPyXAbJFAWSsMujzRn1wFRV",
"recentBlockhashesSysvar": "SysvarRecentB1ockHashes11111111111111111111"
},
// !hover message.instructions.parsed.type
"type": "advanceNonce"
},
// !hover message.instructions.program
"program": "system",
// !hover message.instructions.programId
"programId": "11111111111111111111111111111111",
// !hover message.instructions.stackHeight
"stackHeight": 1
},
{
"accounts": ["jitodontfront1111111111111111111111tradewiz"],
"data": "2fX7imjEaEwy",
"programId": "ComputeBudget111111111111111111111111111111",
"stackHeight": 1
},
{
"accounts": [],
"data": "3Sby4Ya7yebR",
"programId": "ComputeBudget111111111111111111111111111111",
"stackHeight": 1
}
],
// !hover message.recentBlockhash
"recentBlockhash": "5D7W1x5zbqBn67kPDz62L5ZF1McxnhajiRGrhh3Y3wKb"
},
// !hover(1:4) signatures
"signatures": [
"4fqGV381e6h87Hn5vGm7W5MGivHFtTisS9G2UpbsuritcTmXPsPtU32BWF2Bw4yMxH1NAFgGtpWbuVfXbZt8xTBw",
"3KYwzbzs2oupAv2A4qMCLpPQusXazJRSxzT99UE3rfoejStBbDnBFeZRUt8et3LTSVBXncCqTXzBVWqxNSrK4J41"
]
}!type object
Defines the content of the transaction.
!type array[object]
List of account information used by the transaction. Uses the shared
Parsed Accounts structure. In current full jsonParsed
versioned transaction responses, this includes loaded lookup-table accounts.
!type string
The base-58 encoded public key of the account.
!type boolean
Indicates if the account is a required transaction signer.
!type "transaction" | "lookupTable"
Source of the account metadata. This field is transaction for static message
accounts and lookupTable for loaded lookup-table accounts in
transaction/accounts responses.
!type boolean
Indicates if the account is writable.
!type array[object] | undefined
Address lookup table references for versioned transactions. Present when the
transaction is versioned and maxSupportedTransactionVersion is set. This field
is currently emitted for v0 messages even when the array is empty, and is
omitted for v1 messages, which do not support address lookup tables. Uses the
structure documented in Address Table Lookups.
!type array[object]
List of parsed or partially decoded program instructions.
!type object | undefined
Program-specific parsed data. Present when the instruction was fully parsed.
!type object
Parsed instruction information specific to the program and instruction type.
!type string
The type of instruction (e.g., "transfer").
!type string | undefined
The name of the program being called. Present when the instruction was fully parsed.
!type string
The base-58 encoded public key of the program.
!type u32
Transaction-level instruction stack height. This is currently 1 for top-level
instructions.
!type array[string] | undefined
Account addresses referenced by the instruction, in order. Present when the instruction was partially decoded because the RPC node did not have a parser for the program.
!type string | undefined
Instruction data, base-58 encoded. Present when the instruction was partially decoded because the RPC node did not have a parser for the program.
!type string
A base-58 encoded hash of a recent block in the ledger used to prevent transaction duplication and to give transactions lifetimes.
!type object | undefined
The compute budget a v1 message declares inline, in place of the ComputeBudget
program instructions used by legacy and v0 messages. Present only for v1
messages, and absent entirely — never null — for legacy and v0. Each inner
field is an explicit null when the transaction did not request that limit.
!type u32 | null
The maximum number of compute units the transaction may consume. A v1 transaction that requests no limit is budgeted zero compute units and fails at execution.
!type u32 | null
The heap frame size in bytes requested for execution. When null, the runtime
allocated the default 32,768 bytes.
!type u32 | null
The maximum size in bytes of account data the transaction may load. When null,
the transaction was budgeted zero bytes.
!type u64 | null
The total priority fee in lamports paid for prioritization, for the whole transaction rather than a price per compute unit.
!type array[string]
A list of base-58 encoded signatures applied to the transaction.
When a block is requested with transactionDetails: "accounts", the response
returns transaction account metadata in this structure:
| Reference | Details |
|---|---|
| Included in | Encoded Transaction Responses when transactionDetails: "accounts" |
| Response path | transaction |
| Type Definition | UiAccountsList |
{
// !hover(1:3) signatures
"signatures": [
"bciv6kPHkXFqBWGnWoHvQ4Tcv6gFZXajipE8x7Aty5VSCz4U7F3jK2yaFZvFUDDRWxf2i38r2WRoM8oGHqwUJaK"
],
// !hover(1:50) accountKeys
"accountKeys": [
{
// !hover accountKeys.pubkey
"pubkey": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
// !hover accountKeys.signer
"signer": true,
// !hover accountKeys.source
"source": "transaction",
// !hover accountKeys.writable
"writable": true
},
{
// !hover accountKeys.pubkey
"pubkey": "AT9SNJB3RmrJ5MERohWQHc6HGbtCJHWkFCUVb1rUUyb6",
"signer": false,
"source": "transaction",
"writable": true
},
{
"pubkey": "BFAXnehgs9BPSH8GVAzUvjXLCqUrxm3RqK6YBzTdoxuX",
"signer": false,
"source": "transaction",
"writable": true
},
{
"pubkey": "Cw8CFyM9FkoMi7K7Crf6HNQqf4uEMzpKw6QNghXLvLkY",
"signer": false,
"source": "transaction",
"writable": true
},
{
"pubkey": "11111111111111111111111111111111",
"signer": false,
"source": "transaction",
"writable": false
},
{
"pubkey": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
"signer": false,
"source": "transaction",
"writable": false
},
{
"pubkey": "8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ",
// !hover accountKeys.signer
"signer": false,
// !hover accountKeys.source
"source": "lookupTable",
// !hover accountKeys.writable
"writable": true
},
{
"pubkey": "MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms",
"signer": false,
"source": "lookupTable",
"writable": false
}
]
}!type array[string]
Transaction signatures in wire order.
!type array[object]
Parsed account metadata for each transaction account. Uses the structure documented in Parsed Accounts.
RPC methods and subscriptions that return account data use this structure:
| Reference | Details |
|---|---|
| Returned by | getAccountInfo; getMultipleAccounts; the value field in accountSubscribe notifications |
| Response path | result.value; result.value[]; params.result.value |
| Type Definitions | UiAccount, UiAccountData, UiAccountEncoding, ParsedAccount |
Account data also appears in these nested response objects:
| Reference | Details |
|---|---|
| Included in | Simulation Results; the account field in response objects returned by getProgramAccounts, getTokenAccountsByOwner, getTokenAccountsByDelegate, and programSubscribe |
| Response path | result.value.accounts[]; result[].account; result.value[].account; params.result.value.account |
{
// !hover data
"data": ["", "base64"],
// !hover executable
"executable": false,
// !hover lamports
"lamports": 88867121550052,
// !hover owner
"owner": "11111111111111111111111111111111",
// !hover rentEpoch
"rentEpoch": 18446744073709551615,
// !hover space
"space": 0
}!type string | [string, "base58" | "base64" | "base64+zstd"]
Account data. If the requested encoding is binary, this is a plain base-58
string. If the encoding is base58, base64, or base64+zstd, this is
[data, encoding].
!type boolean
Whether the account contains a program and is therefore read-only.
!type u64
Lamports assigned to this account.
!type string
Program owner pubkey, as a base-58 encoded string.
!type u64
Epoch at which this account next owes rent.
!type u64 | null
Account data size in bytes. Current Solana RPC responses populate this field for encoded account responses.
When jsonParsed encoding is requested, the data field uses this parsed
wrapper when a parser is available:
{
// !hover(1:19) data
"data": {
// !hover(1:15) data.parsed
"parsed": {
"info": {
"isNative": false,
"mint": "4zMMC9srt5Ri5X14GAgXhaHii3GnPAEERYPJgZJDncDU",
"owner": "DBD8hAwLDRQkTsu6EqviaYNGKPnsAMmQonxf7AH8ZcFY",
"state": "initialized",
"tokenAmount": {
"amount": "3482803892164901945",
"decimals": 6,
"uiAmount": 3482803892164.902,
"uiAmountString": "3482803892164.901945"
}
},
"type": "account"
},
// !hover data.program
"program": "spl-token",
// !hover data.space
"space": 165
},
// !hover executable
"executable": false,
// !hover lamports
"lamports": 2039280,
// !hover owner
"owner": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
// !hover rentEpoch
"rentEpoch": 18446744073709551615,
// !hover space
"space": 165
}!type object | [string, "base64"]
Parsed account data wrapper. When a parser is available, this is
{program, parsed, space}. If jsonParsed is requested but no parser is
available, the RPC node falls back to [data, "base64"].
!type object
Parser-specific JSON payload. Its structure depends on the owning program and account type.
!type string
Name of the parser that produced the decoded account data.
!type u64
Account data size in bytes inside the parsed data object.
!type boolean
Whether the account contains a program and is therefore read-only.
!type u64
Lamports assigned to this account.
!type string
Program owner pubkey, as a base-58 encoded string.
!type u64
Epoch at which this account next owes rent.
!type u64 | null
Account data size in bytes. Current Solana RPC responses populate this field for encoded account responses.
Parsed transaction and accounts only responses represent account keys in this structure:
| Reference | Details |
|---|---|
| Included in | Transactions; Accounts Only Transaction Responses |
| Response path | message.accountKeys[] in parsed transactions; accountKeys[] in accounts only responses |
| Type Definitions | ParsedAccount, ParsedAccountSource |
{
// !hover pubkey
"pubkey": "8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ",
// !hover signer
"signer": false,
// !hover source
"source": "lookupTable",
// !hover writable
"writable": true
}!type string
Account address, as a base-58 encoded string.
!type boolean
Whether this account signed the transaction.
!type "transaction" | "lookupTable"
Source of the account metadata. This field is transaction for static message
accounts and lookupTable for loaded lookup-table accounts in
transaction/accounts responses.
!type boolean
Whether the transaction marks this account writable.
Versioned transaction messages may include address table lookups:
| Reference | Details |
|---|---|
| Included in | Transactions |
| Response path | message.addressTableLookups[] |
| Type Definition | UiAddressTableLookup |
// !hover(1:7) addressTableLookups
"addressTableLookups": [
{
// !hover addressTableLookups.accountKey
"accountKey": "4m25Bu6JhCFLzbPKJm8usuxr1yjJBnWNEe4u8PUgcpaU",
// !hover addressTableLookups.writableIndexes
"writableIndexes": [143, 141, 134, 139, 137],
// !hover addressTableLookups.readonlyIndexes
"readonlyIndexes": [57, 13, 60, 31]
}
]!type array[object]
List of address table lookups used by a versioned transaction to dynamically load account addresses.
!type string
Address lookup table account pubkey, as a base-58 encoded string.
!type array[u8]
Lookup-table indexes loaded as writable accounts.
!type array[u8]
Lookup-table indexes loaded as readonly accounts.
Transaction execution metadata is returned in this structure:
| Reference | Details |
|---|---|
| Included in | Encoded Transaction Responses; Confirmed Transaction Responses |
| Response path | meta |
| Type Definition | UiTransactionStatusMeta |
The table below highlights fields whose presence changes across transaction response modes. Fields not listed here serialize the same way whenever metadata is available.
json / full covers full metadata responses in raw JSON form, including
getTransaction responses with encoding: "json" and block responses with
transactionDetails: "full". jsonParsed covers parsed transaction responses,
and accounts covers block responses with transactionDetails: "accounts".
| Field | json / full |
jsonParsed |
accounts |
|---|---|---|---|
innerInstructions |
array | null |
array | null |
omitted |
logMessages |
array | null |
array | null |
omitted |
loadedAddresses |
object |
omitted | omitted |
returnData |
object | undefined |
object | undefined |
omitted |
computeUnitsConsumed |
u64 | undefined |
u64 | undefined |
omitted |
costUnits |
u64 | undefined |
u64 | undefined |
omitted |
rewards |
array | null |
array | null |
array | null | omitted |
In accounts responses, rewards is omitted when showRewards is false.
Otherwise it serializes as an array or null.
{
// !hover(1:102) meta
"meta": {
// !hover meta.err
"err": null,
// !hover meta.fee
"fee": 8772,
// !hover(1:13) meta.innerInstructions
"innerInstructions": [
{
"index": 2,
"instructions": [
{
"accounts": [0, 0, 10, 4, 2, 1, 12, 13, 16, 18, 16, 17, 14, 11],
"data": "3UnF8KPv9rbpD1e4dSEq3QqVZa",
"programIdIndex": 15,
"stackHeight": 2
}
]
}
],
// !hover(1:8) meta.logMessages
"logMessages": [
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success",
"Program ComputeBudget111111111111111111111111111111 invoke [1]",
"Program ComputeBudget111111111111111111111111111111 success",
"Program JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4 invoke [1]",
"Program log: Instruction: Route"
],
// !hover meta.postBalances
"postBalances": [435302465, 2039280, 2039280, 946560, 1, 1, 6184956904, 0],
// !hover(1:26) meta.postTokenBalances
"postTokenBalances": [
{
"accountIndex": 1,
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"uiTokenAmount": {
"amount": "0",
"decimals": 6,
"uiAmount": null,
"uiAmountString": "0"
}
},
{
"accountIndex": 2,
"mint": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"uiTokenAmount": {
"amount": "466231747",
"decimals": 6,
"uiAmount": 466.231747,
"uiAmountString": "466.231747"
}
}
],
// !hover meta.preBalances
"preBalances": [435311237, 2039280, 2039280, 946560, 1, 1, 6184956904, 0],
// !hover(1:26) meta.preTokenBalances
"preTokenBalances": [
{
"accountIndex": 1,
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"uiTokenAmount": {
"amount": "466190218",
"decimals": 6,
"uiAmount": 466.190218,
"uiAmountString": "466.190218"
}
},
{
"accountIndex": 2,
"mint": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"uiTokenAmount": {
"amount": "0",
"decimals": 6,
"uiAmount": null,
"uiAmountString": "0"
}
}
],
// !hover meta.rewards
"rewards": null,
// !hover(1:13) meta.loadedAddresses
"loadedAddresses": {
// !hover(1:6) meta.loadedAddresses.readonly
"readonly": [
"MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms",
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
],
// !hover(1:5) meta.loadedAddresses.writable
"writable": [
"8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ",
"9x85APtURYxxxosTmJhvZWBmPSoTMqhYHz4tBnJ7N4T8",
"CNRQ2Q5YURFcQrATzYeKUWgKUoBDfqzkDrRWf21UXCVo"
]
},
// !hover(1:4) meta.returnData
"returnData": {
// !hover meta.returnData.programId
"programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
// !hover meta.returnData.data
"data": ["wyHKGwAAAAA=", "base64"]
},
// !hover meta.computeUnitsConsumed
"computeUnitsConsumed": 35804,
// !hover meta.costUnits
"costUnits": 40132,
// !hover(1:3) meta.status
"status": {
// !hover meta.status.Ok
"Ok": null
}
}
}!type object
!type string | object | null
Transaction error. null means the transaction succeeded. Simple error variants
serialize as strings, while variants with extra data serialize as objects keyed
by the variant name. For example, InstructionError serializes as
{"InstructionError": [instructionIndex, instructionError]}. Uses the structure
documented in Transaction Errors.
!type u64
Fee charged for the transaction, in lamports.
!type array[object] | null | undefined
List of inner instructions.
Present in full and jsonParsed transaction metadata responses. null if inner
instruction recording was not enabled during this transaction. Omitted in
accounts mode responses.
!type array[string] | null | undefined
Program log output captured during execution. Present in full and jsonParsed
transaction metadata responses. null if log recording was not enabled during
this transaction. Omitted in accounts mode responses.
!type array[u64]
Lamport balances from after the transaction was processed, indexed to the transaction's full account key list. For versioned transactions, this includes lookup-loaded addresses in addition to the static message keys.
!type array[object] | null
List of token balances from after
the transaction was processed. null if token balance recording was not
available during this transaction.
!type array[u64]
Lamport balances from before the transaction was processed, indexed to the transaction's full account key list. For versioned transactions, this includes lookup-loaded addresses in addition to the static message keys.
!type array[object] | null
List of token balances from before
the transaction was processed. null if token balance recording was not
available during this transaction.
!type array[object] | null | undefined
Rewards applied while processing the transaction. null if rewards were not
recorded or were disabled in full/jsonParsed transaction responses. Omitted in
accounts mode when rewards are disabled. Uses the structure documented in
Rewards.
!type object
Loaded account addresses resolved from lookup tables. Present in full
non-jsonParsed transaction metadata responses. This field is always serialized
as an object, using empty arrays when no addresses were loaded. Omitted for
jsonParsed and accounts responses. Uses the structure documented in
Loaded Addresses.
!type object | undefined
Most recent return data generated by an instruction in the transaction. Present
in full and jsonParsed transaction metadata responses when available. Omitted
if no instruction generated return data, and omitted in accounts mode. Uses
the structure documented in Return Data.
!type u64 | undefined
Number of compute units consumed by the
transaction. Present when available in full and jsonParsed transaction
responses; omitted otherwise and in accounts mode.
!type u64 | undefined
Total cost-model units charged by the transaction. Present when available in
full and jsonParsed transaction responses; omitted otherwise and in accounts
mode.
!type object
DEPRECATED: Transaction status that mirrors err.
!type null
Deprecated success marker.
!type string | object
Deprecated failure payload. Uses the same structure documented in Transaction Errors.
Transaction errors serialize as a string or a variant-tagged object:
| Reference | Details |
|---|---|
| Included in | Transaction Status Metadata; Simulation Results |
| Response path | err |
| Type Definition | UiTransactionError |
Simple variants appear as a string:
// !hover transactionError.string
"BlockhashNotFound"!type string | object
Serialized transaction error value.
!type string
Simple error variant encoded as a string, such as "BlockhashNotFound".
Variants with additional data appear as an object, for example:
// !hover(1:8) transactionError.object
{
// !hover(1:6) transactionError.object.InstructionError
"InstructionError": [
// !hover transactionError.object.InstructionError.instructionIndex
0,
// !hover(1:3) transactionError.object.InstructionError.instructionError
{
"Custom": 1
}
]
}!type string | object
Serialized transaction error value.
!type object
Tuple and struct variants serialize as an object keyed by the variant name.
!type [u8, string | object]
Instruction error tuple containing:
!type u8
Zero-based index of the outer instruction in transaction.message.instructions.
!type string | object
Serialized instruction error value. This may be a string such as
"InvalidArgument" or an object such as {"Custom": 1}.
When an instruction in a transaction makes a
cross-program invocation (CPI), the invoked instructions are
detailed under innerInstructions.
| Reference | Details |
|---|---|
| Included in | Transaction Status Metadata; Simulation Results |
| Response path | innerInstructions |
| Type Definitions | UiCompiledInstruction, UiInstruction, UiParsedInstruction, UiPartiallyDecodedInstruction, UiInnerInstructions |
index: u8– Index of the instruction attransaction.message.instructions[index]that made the CPI.instructions: array[object]– List of CPI instructions invoked by the instruction atindex, encoded as Json or JsonParsed objects.
Transaction responses use the form matching the requested transaction encoding:
json returns compiled instructions with account indexes, while jsonParsed
returns parsed or partially decoded instructions with base-58 encoded addresses.
Simulation Results always use the JSON Parsed form.
// !hover(1:56) innerInstructions
"innerInstructions": [
{
// !hover innerInstructions.index
"index": 5,
// !hover(1:51) innerInstructions.instructions
"instructions": [
{
"accounts": [
"5PHirr8joyTMp9JMm6nW7hNDVyEYdkzDqazxPD7RaTjx",
"pAMMBay6oceH9fJKBRHGP5D4bD4sWpmSwMn52FMfXEA"
],
"data": "2BfZXS1GQrCLZ1vzWVcaYz6Kpzd9QSStQWUgg9fK2UEsEo",
"programId": "pfeeUxB6jkeY1Hxd7CsFCAjcbHA9rWtchMGdZ6VojVZ",
"stackHeight": 2
},
{
// !hover(1:15) innerInstructions.instructions.parsed
"parsed": {
// !hover(1:12) innerInstructions.instructions.parsed.info
"info": {
"authority": "44ZsKstjBY52Zz1iB9Q9HqVPbpK4d6BqAJgqshz1bXPs",
"destination": "mKLWCKDeHeym4egVLMTLNV661E1FsHarXvYr6pwAFPz",
"mint": "HTi6JahmSzq2s1B2zg7GG6Ev6cQEpoGRDRxKWATYpump",
"source": "DocSpnPnyffShXENq9xKSuL68GeScV7HsQnZw5X65LSb",
"tokenAmount": {
"amount": "175173728464",
"decimals": 6,
"uiAmount": 175173.728464,
"uiAmountString": "175173.728464"
}
},
// !hover innerInstructions.instructions.parsed.type
"type": "transferChecked"
},
// !hover innerInstructions.instructions.program
"program": "spl-token",
// !hover innerInstructions.instructions.programId
"programId": "TokenzQdBNbLqP5VEhdkAS6EPFLC1PHnBqCXEpPxuEb",
// !hover innerInstructions.instructions.stackHeight
"stackHeight": 2
},
{
// !hover(1:15) innerInstructions.instructions.parsed
"parsed": {
// !hover(1:12) innerInstructions.instructions.parsed.info
"info": {
"authority": "8YFbpsQqUkzmcLHrSDR44LN9DeGrV47rtwETN4sM6V4i",
"destination": "5eHy2DQ7cQjEw2PoEfxvUd5rttzr2NydmGhKpQHk2TdM",
"mint": "So11111111111111111111111111111111111111112",
"source": "2vu4YeTiCp5qfqDLAfAS5fPUGp7o24borXCGctbzR5Uc",
"tokenAmount": {
"amount": "106318851",
"decimals": 9,
"uiAmount": 0.106318851,
"uiAmountString": "0.106318851"
}
},
// !hover innerInstructions.instructions.parsed.type
"type": "transferChecked"
},
// !hover innerInstructions.instructions.program
"program": "spl-token",
// !hover innerInstructions.instructions.programId
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
// !hover innerInstructions.instructions.stackHeight
"stackHeight": 2
}
]
}
]!type array[object]
!type u8
Index of the instruction at transaction.message.instructions[index] that made
the CPI.
!type array[object]
List of CPI instructions invoked by the instruction at index. Each instruction
is either fully parsed or partially decoded.
!type object | undefined
Parser output when the program is recognized. Present when the instruction was fully parsed:
!type object
Program specific data returned by the parser.
!type string
Instruction name identified by the parser.
!type string | undefined
Name of the program the CPI is being made to. Present when the instruction was fully parsed.
!type string
Program ID of the program the CPI is being made to.
!type u32 | null
CPI depth. Inner instructions start at 2 and can reach 5, or 9 once
SIMD-0268 activates.
!type array[string] | undefined
Account addresses referenced by the instruction, in order. Present when the instruction was partially decoded because the RPC node did not have a parser for the program.
!type string | undefined
Instruction data, base-58 encoded. Present when the instruction was partially decoded because the RPC node did not have a parser for the program.
// !hover(1:31) innerInstructions
"innerInstructions": [
{
// !hover innerInstructions.index
"index": 5,
// !hover(1:26) innerInstructions.instructions
"instructions": [
{
// !hover innerInstructions.instructions.accounts
"accounts": [28, 16],
// !hover innerInstructions.instructions.data
"data": "2BfZXS1GQrCLZ1vzWVcaYz6Kpzd9QSStQWUgg9fK2UEsEo",
// !hover innerInstructions.instructions.programIdIndex
"programIdIndex": 29,
// !hover innerInstructions.instructions.stackHeight
"stackHeight": 2
},
{
// !hover innerInstructions.instructions.accounts
"accounts": [6, 5, 7, 0],
// !hover innerInstructions.instructions.data
"data": "imDtMm9P2f2U5",
// !hover innerInstructions.instructions.programIdIndex
"programIdIndex": 25,
// !hover innerInstructions.instructions.stackHeight
"stackHeight": 2
},
{
// !hover innerInstructions.instructions.accounts
"accounts": [8, 19, 3, 4],
// !hover innerInstructions.instructions.data
"data": "g9PBeEKHUSc7i",
// !hover innerInstructions.instructions.programIdIndex
"programIdIndex": 14,
// !hover innerInstructions.instructions.stackHeight
"stackHeight": 2
},
{
// !hover innerInstructions.instructions.accounts
"accounts": [8, 19, 9, 4],
// !hover innerInstructions.instructions.data
"data": "ghWmjs5Cndrfz",
// !hover innerInstructions.instructions.programIdIndex
"programIdIndex": 14,
// !hover innerInstructions.instructions.stackHeight
"stackHeight": 2
}
]
}
]!type array[object]
!type u8
Index of the instruction at transaction.message.instructions[index] that made
the CPI.
!type array[object]
List of CPI instructions invoked by the instruction at index, encoded as Json
or JsonParsed objects.
!type array[u8]
Indexes into the transaction's account key space for the accounts passed to the program the CPI is being made to. For versioned transactions, lookup-loaded addresses are appended after the static message keys.
!type string
Base58 encoded instruction data passed to the program the CPI is being made to.
!type u8
Index into the transaction's account key space of the Program ID for the program the CPI is being made to. For versioned transactions, lookup-loaded addresses are appended after the static message keys.
!type u32 | null
Depth of the CPI call. Inner instructions start at 2 and can reach 5, or 9
once SIMD-0268 activates.
The JSON structure of token balances is defined as a list of objects in the following structure:
| Reference | Details |
|---|---|
| Included in | Transaction Status Metadata; Simulation Results |
| Response path | preTokenBalances[], postTokenBalances[] |
| Type Definitions | UiTransactionTokenBalance, UiTokenAmount |
// !hover(1:26) postTokenBalances
"postTokenBalances": [
{
// !hover postTokenBalances.accountIndex
"accountIndex": 1,
// !hover postTokenBalances.mint
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
// !hover postTokenBalances.owner
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
// !hover postTokenBalances.programId
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
// !hover(1:6) postTokenBalances.uiTokenAmount
"uiTokenAmount": {
// !hover postTokenBalances.uiTokenAmount.amount
"amount": "0",
// !hover postTokenBalances.uiTokenAmount.decimals
"decimals": 6,
// !hover postTokenBalances.uiTokenAmount.uiAmount
"uiAmount": null,
// !hover postTokenBalances.uiTokenAmount.uiAmountString
"uiAmountString": "0"
}
},
{
// !hover postTokenBalances.accountIndex
"accountIndex": 2,
// !hover postTokenBalances.mint
"mint": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
// !hover postTokenBalances.owner
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
// !hover postTokenBalances.programId
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
// !hover(1:6) postTokenBalances.uiTokenAmount
"uiTokenAmount": {
// !hover postTokenBalances.uiTokenAmount.amount
"amount": "466231747",
// !hover postTokenBalances.uiTokenAmount.decimals
"decimals": 6,
// !hover postTokenBalances.uiTokenAmount.uiAmount
"uiAmount": 466.231747,
// !hover postTokenBalances.uiTokenAmount.uiAmountString
"uiAmountString": "466.231747"
}
}
],
// !hover(1:26) preTokenBalances
"preTokenBalances": [
{
// !hover preTokenBalances.accountIndex
"accountIndex": 1,
// !hover preTokenBalances.mint
"mint": "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
// !hover preTokenBalances.owner
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
// !hover preTokenBalances.programId
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
// !hover(1:6) preTokenBalances.uiTokenAmount
"uiTokenAmount": {
// !hover preTokenBalances.uiTokenAmount.amount
"amount": "466190218",
// !hover preTokenBalances.uiTokenAmount.decimals
"decimals": 6,
// !hover preTokenBalances.uiTokenAmount.uiAmount
"uiAmount": 466.190218,
// !hover preTokenBalances.uiTokenAmount.uiAmountString
"uiAmountString": "466.190218"
}
},
{
// !hover preTokenBalances.accountIndex
"accountIndex": 2,
// !hover preTokenBalances.mint
"mint": "Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB",
// !hover preTokenBalances.owner
"owner": "a1Xnxu7n1Rmeph9KP4Q1Cx7o8EPUN16fwPZHQ8ncVLa",
// !hover preTokenBalances.programId
"programId": "TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
// !hover(1:6) preTokenBalances.uiTokenAmount
"uiTokenAmount": {
// !hover preTokenBalances.uiTokenAmount.amount
"amount": "0",
// !hover preTokenBalances.uiTokenAmount.decimals
"decimals": 6,
// !hover preTokenBalances.uiTokenAmount.uiAmount
"uiAmount": null,
// !hover preTokenBalances.uiTokenAmount.uiAmountString
"uiAmountString": "0"
}
}
]!type array[object]
!type u8
Index of the account in which the token balance is provided for.
!type string
Pubkey of the token's mint.
!type string | undefined
Pubkey of token balance's owner. Omitted if the validator did not record it.
!type string | undefined
Pubkey of the Token program that owns the account. Omitted if the validator did not record it.
!type object
!type string
Raw amount of tokens as a string, ignoring decimals.
!type u8
Number of decimals configured for token's mint.
!type number | null
Token amount as a float, accounting for decimals. DEPRECATED
!type string
Token amount as a string, accounting for decimals.
!type array[object]
!type u8
Index of the account in which the token balance is provided for.
!type string
Pubkey of the token's mint.
!type string | undefined
Pubkey of token balance's owner. Omitted if the validator did not record it.
!type string | undefined
Pubkey of the Token program that owns the account. Omitted if the validator did not record it.
!type object
!type string
Raw amount of tokens as a string, ignoring decimals.
!type u8
Number of decimals configured for token's mint.
!type number | null
Token amount as a float, accounting for decimals. DEPRECATED
!type string
Token amount as a string, accounting for decimals.
Transaction and block metadata may include rewards:
| Reference | Details |
|---|---|
| Included in | Confirmed Blocks; Transaction Status Metadata |
| Response path | rewards[] |
| Type Definition | Reward |
// !hover(1:9) rewards
"rewards": [
{
// !hover rewards.pubkey
"pubkey": "7PmWxxiTneGteGxEYvzj5pGDVMQ4nuN9DfUypEXmaA8o",
// !hover rewards.lamports
"lamports": 0,
// !hover rewards.postBalance
"postBalance": 637848765,
// !hover rewards.rewardType
"rewardType": "Voting",
// !hover rewards.commission
"commission": 0
}
]!type array[object]
Rewards applied while processing a transaction or block.
!type string
Rewarded account pubkey, as a base-58 encoded string.
!type i64
Lamports credited or debited by this reward entry.
!type u64
Account balance after the reward was applied.
!type string | null
Reward category. When present, the value is Fee, Rent, Voting, or
Staking.
!type u8 | null
Vote-account commission at the time of the reward. Present only for voting and
staking rewards; otherwise null.
Transaction metadata may include loaded addresses resolved from lookup tables:
| Reference | Details |
|---|---|
| Included in | Transaction Status Metadata; Simulation Results |
| Response path | loadedAddresses |
| Type Definition | UiLoadedAddresses |
// !hover(1:13) loadedAddresses
"loadedAddresses": {
// !hover(1:5) loadedAddresses.writable
"writable": [
"8sjV1AqBFvFuADBCQHhotaRq5DFFYSjjg1jMyVWMqXvZ",
"9x85APtURYxxxosTmJhvZWBmPSoTMqhYHz4tBnJ7N4T8",
"CNRQ2Q5YURFcQrATzYeKUWgKUoBDfqzkDrRWf21UXCVo"
],
// !hover(1:6) loadedAddresses.readonly
"readonly": [
"MNFSTqtC93rEfYHB6hF82sKdZpUDFWkViLByLd1k1Ms",
"TokenkegQfeZyiNwAJbNbGKPFXCWuBvf9Ss623VQ5DA",
"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v",
"Es9vMFrzaCERmJfrF4H2FYD4KCoNkY11McCe8BenwNYB"
]
}!type object
Loaded account addresses resolved from lookup tables.
!type array[string]
Ordered list of writable loaded-account addresses, as base-58 encoded strings.
!type array[string]
Ordered list of readonly loaded-account addresses, as base-58 encoded strings.
Transaction metadata may include return data from the most recent instruction that generated it:
| Reference | Details |
|---|---|
| Included in | Transaction Status Metadata; Simulation Results |
| Response path | returnData |
| Type Definitions | UiTransactionReturnData, UiReturnDataEncoding |
// !hover(1:4) returnData
"returnData": {
// !hover returnData.programId
"programId": "JUP6LkbZbjS1jKKwapdHNy74zcZ3tLUZoi5QNyVTaV4",
// !hover returnData.data
"data": ["wyHKGwAAAAA=", "base64"]
}!type object
Most recent return data generated by an instruction in the transaction.
!type string
Program that generated the return data, as a base-58 encoded pubkey.
!type [string, "base64"]
Return data payload and encoding. This field uses base-64 data with "base64"
encoding.
{ // !hover previousBlockhash "previousBlockhash": "9gAzd1Mv43CptYG8cjy5bE7uNq6P9SFNZFTKToHcQHGD", // !hover blockhash "blockhash": "J8mfvgG5xJ1hfGVxcrJ9f3BwdYPuXNfY3cJzKMwHyFTe", // !hover parentSlot "parentSlot": 408671999, // !hover(1:54) transactions "transactions": [ { // !hover(1:26) transactions.transaction "transaction": { "signatures": [ "2sZrnsqbiPqTznPsnU33CBb1LVeqaMCxE1vsn4YGVnvFzkS684YAMFYFVZAQuQqhiEQNoNSpdMe54v1ppsBG7HCj" ], "message": { "accountKeys": [ "9GHvMeJ4ZWuAX6sDGscFL1TBMszx2EehnrcTVUy4MZJQ", "GVYt3tbokX7mH4i86AA6Nh5hPiHEekercNZyNevviotL", "Vote111111111111111111111111111111111111111" ], "header": { "numReadonlySignedAccounts": 0, "numReadonlyUnsignedAccounts": 1, "numRequiredSignatures": 1 }, "instructions": [ { "accounts": [1, 0], "data": "67MGnCUMzh8M6jYY5veq8MTkdaEKoxtaNUYE5m2uWtdMh4r9TSV22JarEohoXJtLZUCLR2bsuWxZcPstBTaf5fc72ceL3RAhWXLmMJeGgqdkUosgbpKw6yRWipuMWmsW34dm8vm868Fz3R3LXnQVJoVkUGxjQ5JsFSyRQQsK2woykd5dHoeCd38cniefmTjWgbhgt88UBm", "programIdIndex": 2, "stackHeight": 1 } ], "recentBlockhash": "B7YsL7tnAhMLCZsThdgK2iVEH6gajo6fueSrwtGTGd9K" } }, // !hover(1:23) transactions.meta "meta": { "err": null, "fee": 5000, "innerInstructions": [], "logMessages": [ "Program Vote111111111111111111111111111111111111111 invoke [1]", "Program Vote111111111111111111111111111111111111111 success" ], "postBalances": [83925018422, 321677325, 1], "postTokenBalances": [], "preBalances": [83925023422, 321677325, 1], "preTokenBalances": [], "rewards": [], "loadedAddresses": { "readonly": [], "writable": [] }, "computeUnitsConsumed": 2100, "costUnits": 3428, "status": { "Ok": null } }, // !hover transactions.version "version": "legacy" } ], // !hover(1:9) rewards "rewards": [ { "commission": 0, "lamports": 0, "postBalance": 637848765, "pubkey": "7PmWxxiTneGteGxEYvzj5pGDVMQ4nuN9DfUypEXmaA8o", "rewardType": "Voting" } ], // !hover numRewardPartitions "numRewardPartitions": 312, // !hover blockTime "blockTime": 1774404960, // !hover blockHeight "blockHeight": 386774297 }