Skip to content

Latest commit

 

History

History
2876 lines (2192 loc) · 96 KB

json-structures.mdx

File metadata and controls

2876 lines (2192 loc) · 96 KB
title JSON Reference
h1 Solana RPC JSON Structures

Overview

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.

Top-Level Response Objects

Confirmed Blocks

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
{
  // !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
}

!reference

!! previousBlockhash

!type string

The previous block's blockhash, as a base-58 encoded string.

!! blockhash

!type string

This block's blockhash, as a base-58 encoded string.

!! parentSlot

!type u64

Slot index of this block's parent.

!! transactions

!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".

!! transaction

!type object | string | [string, "base58" | "base64"]

Encoded transaction payload. Uses the structure documented in Encoded Transaction Responses.

!! meta

!type object | null

Transaction metadata using the same structure documented in Transaction Status Metadata, or null if metadata is unavailable.

!! version

!type "legacy" | number | undefined

Transaction version for this entry. Omitted when version information is not available, including legacy transactions without maxSupportedTransactionVersion.

!! rewards

!type array[object] | undefined

Rewards recorded for the block. Present when block rewards are requested; omitted otherwise. Uses the structure documented in Rewards.

!! numRewardPartitions

!type u64 | undefined

Number of reward partitions in the block, when available.

!! blockTime

!type i64 | null

Estimated production time of the block as a Unix timestamp.

!! blockHeight

!type u64 | null

Block height of this block, if available.

!! signatures

!type array[string] | undefined

Transaction signatures only. Present when transactionDetails is "signatures".

Confirmed Transaction Responses

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
}

!reference

!! slot

!type u64

Slot that contains this transaction.

!! transaction

!type object | string | [string, "base58" | "base64"]

Encoded transaction payload. Uses the structure documented in Encoded Transaction Responses.

!! meta

!type object | null

Transaction metadata, or null if metadata is unavailable. Uses the structure documented in Transaction Status Metadata.

!! version

!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.

!! blockTime

!type i64 | null

Estimated production time of the block that contains this transaction, as a Unix timestamp.

Simulation Results

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": []
  }
}

!reference

!! accounts

!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.

!! err

!type string | object | null

Simulation error. Uses the structure documented in Transaction Errors. null indicates success.

!! innerInstructions

!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.

!! loadedAccountsDataSize

!type u32

Total number of account-data bytes loaded while simulating the transaction.

!! logs

!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.

!! replacementBlockhash

!type object | null

Replacement blockhash the RPC node used when replaceRecentBlockhash was enabled.

!! blockhash

!type string

Replacement recent blockhash, as a base-58 encoded string.

!! lastValidBlockHeight

!type u64

Last block height at which the replacement blockhash remains valid.

!! returnData

!type object | null

Most recent instruction return data captured during simulation. Uses the structure documented in Return Data.

!! unitsConsumed

!type u64

Compute units consumed during simulation.

!! fee

!type u64 | null

Fee charged for the simulated transaction. null if simulation failed before fee calculation completed.

!! preBalances

!type array[u64] | null

Lamport balances before simulation, indexed to the transaction account list.

!! postBalances

!type array[u64] | null

Lamport balances after simulation, indexed to the transaction account list.

!! postTokenBalances

!type array[object] | null

Token balances after simulation. Uses the structure documented in Token Balances.

!! preTokenBalances

!type array[object] | null

Token balances before simulation. Uses the structure documented in Token Balances.

!! loadedAddresses

!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.

Shared Structures

Encoded Transaction Responses

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
}

!reference

!! transaction

!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.

!! meta

!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.

!! version

!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

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
  }
}
  • transactionConfig is present only for v1 messages — it is absent entirely (never null) for legacy and v0.
  • Unset inner fields are explicit null, not omitted.
  • priorityFee is a total in lamports, not micro-lamports per compute unit.
  • addressTableLookups is omitted for v1 messages, which do not support address lookup tables.

JSON

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"
  ]
}

!reference

!! message

!type object

Defines the content of the transaction.

!! accountKeys

!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.

!! addressTableLookups

!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.

!! header

!type object

Details the account types and signatures required by the transaction.

!! numReadonlySignedAccounts

!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.

!! numReadonlyUnsignedAccounts

!type u8

The last numReadonlyUnsignedAccounts of the unsigned keys are read-only accounts.

!! numRequiredSignatures

!type u8

The total number of signatures required to make the transaction valid. The signatures must match the first numRequiredSignatures of message.accountKeys.

!! instructions

!type array[object]

List of program instructions that will be executed in sequence and committed in one atomic transaction if all succeed.

!! accounts

!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.

!! data

!type string

The program input data encoded in a base-58 string.

!! programIdIndex

!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.

!! stackHeight

!type u32

Transaction-level instruction stack height. This is currently 1 for top-level instructions.

!! recentBlockhash

!type string

A base-58 encoded hash of a recent block in the ledger used to prevent transaction duplication and to give transactions lifetimes.

!! transactionConfig

!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.

!! computeUnitLimit

!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.

!! heapSize

!type u32 | null

The heap frame size in bytes requested for execution. When null, the runtime allocated the default 32,768 bytes.

!! loadedAccountsDataSizeLimit

!type u32 | null

The maximum size in bytes of account data the transaction may load. When null, the transaction was budgeted zero bytes.

!! priorityFee

!type u64 | null

The total priority fee in lamports paid for prioritization, for the whole transaction rather than a price per compute unit.

!! signatures

!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.

JSON Parsed

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"
  ]
}

!reference

!! message

!type object

Defines the content of the transaction.

!! accountKeys

!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.

!! pubkey

!type string

The base-58 encoded public key of the account.

!! signer

!type boolean

Indicates if the account is a required transaction signer.

!! source

!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.

!! writable

!type boolean

Indicates if the account is writable.

!! addressTableLookups

!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.

!! instructions

!type array[object]

List of parsed or partially decoded program instructions.

!! parsed

!type object | undefined

Program-specific parsed data. Present when the instruction was fully parsed.

!! info

!type object

Parsed instruction information specific to the program and instruction type.

!! type

!type string

The type of instruction (e.g., "transfer").

!! program

!type string | undefined

The name of the program being called. Present when the instruction was fully parsed.

!! programId

!type string

The base-58 encoded public key of the program.

!! stackHeight

!type u32

Transaction-level instruction stack height. This is currently 1 for top-level instructions.

!! accounts

!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.

!! data

!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.

!! recentBlockhash

!type string

A base-58 encoded hash of a recent block in the ledger used to prevent transaction duplication and to give transactions lifetimes.

!! transactionConfig

!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.

!! computeUnitLimit

!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.

!! heapSize

!type u32 | null

The heap frame size in bytes requested for execution. When null, the runtime allocated the default 32,768 bytes.

!! loadedAccountsDataSizeLimit

!type u32 | null

The maximum size in bytes of account data the transaction may load. When null, the transaction was budgeted zero bytes.

!! priorityFee

!type u64 | null

The total priority fee in lamports paid for prioritization, for the whole transaction rather than a price per compute unit.

!! signatures

!type array[string]

A list of base-58 encoded signatures applied to the transaction.

Accounts Only Transaction Responses

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
    }
  ]
}

!reference

!! signatures

!type array[string]

Transaction signatures in wire order.

!! accountKeys

!type array[object]

Parsed account metadata for each transaction account. Uses the structure documented in Parsed Accounts.

Account Data

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

JSON

{
  // !hover data
  "data": ["", "base64"],
  // !hover executable
  "executable": false,
  // !hover lamports
  "lamports": 88867121550052,
  // !hover owner
  "owner": "11111111111111111111111111111111",
  // !hover rentEpoch
  "rentEpoch": 18446744073709551615,
  // !hover space
  "space": 0
}

!reference

!! data

!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].

!! executable

!type boolean

Whether the account contains a program and is therefore read-only.

!! lamports

!type u64

Lamports assigned to this account.

!! owner

!type string

Program owner pubkey, as a base-58 encoded string.

!! rentEpoch

!type u64

Epoch at which this account next owes rent.

!! space

!type u64 | null

Account data size in bytes. Current Solana RPC responses populate this field for encoded account responses.

JSON Parsed

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
}

!reference

!! data

!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"].

!! parsed

!type object

Parser-specific JSON payload. Its structure depends on the owning program and account type.

!! program

!type string

Name of the parser that produced the decoded account data.

!! space

!type u64

Account data size in bytes inside the parsed data object.

!! executable

!type boolean

Whether the account contains a program and is therefore read-only.

!! lamports

!type u64

Lamports assigned to this account.

!! owner

!type string

Program owner pubkey, as a base-58 encoded string.

!! rentEpoch

!type u64

Epoch at which this account next owes rent.

!! space

!type u64 | null

Account data size in bytes. Current Solana RPC responses populate this field for encoded account responses.

Parsed Accounts

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
}

!reference

!! pubkey

!type string

Account address, as a base-58 encoded string.

!! signer

!type boolean

Whether this account signed the transaction.

!! source

!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.

!! writable

!type boolean

Whether the transaction marks this account writable.

Address Table Lookups

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]
  }
]

!reference

!! addressTableLookups

!type array[object]

List of address table lookups used by a versioned transaction to dynamically load account addresses.

!! accountKey

!type string

Address lookup table account pubkey, as a base-58 encoded string.

!! writableIndexes

!type array[u8]

Lookup-table indexes loaded as writable accounts.

!! readonlyIndexes

!type array[u8]

Lookup-table indexes loaded as readonly accounts.

Transaction Status Metadata

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
    }
  }
}

!reference

!! meta

!type object

!! err

!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.

!! fee

!type u64

Fee charged for the transaction, in lamports.

!! innerInstructions

!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.

!! logMessages

!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.

!! postBalances

!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.

!! postTokenBalances

!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.

!! preBalances

!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.

!! preTokenBalances

!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.

!! rewards

!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.

!! loadedAddresses

!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.

!! returnData

!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.

!! computeUnitsConsumed

!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.

!! costUnits

!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.

!! status

!type object

DEPRECATED: Transaction status that mirrors err.

!! Ok

!type null

Deprecated success marker.

!! Err

!type string | object

Deprecated failure payload. Uses the same structure documented in Transaction Errors.

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"

!reference

!! transactionError

!type string | object

Serialized transaction error value.

!! string

!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
    }
  ]
}

!reference

!! transactionError

!type string | object

Serialized transaction error value.

!! object

!type object

Tuple and struct variants serialize as an object keyed by the variant name.

!! InstructionError

!type [u8, string | object]

Instruction error tuple containing:

!! instructionIndex

!type u8

Zero-based index of the outer instruction in transaction.message.instructions.

!! instructionError

!type string | object

Serialized instruction error value. This may be a string such as "InvalidArgument" or an object such as {"Custom": 1}.

Inner Instructions

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 at transaction.message.instructions[index] that made the CPI.
  • instructions: array[object] – List of CPI instructions invoked by the instruction at index, 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.

JSON Parsed

// !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
      }
    ]
  }
]

!reference

!! innerInstructions

!type array[object]

!! index

!type u8

Index of the instruction at transaction.message.instructions[index] that made the CPI.

!! instructions

!type array[object]

List of CPI instructions invoked by the instruction at index. Each instruction is either fully parsed or partially decoded.

!! parsed

!type object | undefined

Parser output when the program is recognized. Present when the instruction was fully parsed:

!! info

!type object

Program specific data returned by the parser.

!! type

!type string

Instruction name identified by the parser.

!! program

!type string | undefined

Name of the program the CPI is being made to. Present when the instruction was fully parsed.

!! programId

!type string

Program ID of the program the CPI is being made to.

!! stackHeight

!type u32 | null

CPI depth. Inner instructions start at 2 and can reach 5, or 9 once SIMD-0268 activates.

!! accounts

!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.

!! data

!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.

JSON

// !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
      }
    ]
  }
]

!reference

!! innerInstructions

!type array[object]

!! index

!type u8

Index of the instruction at transaction.message.instructions[index] that made the CPI.

!! instructions

!type array[object]

List of CPI instructions invoked by the instruction at index, encoded as Json or JsonParsed objects.

!! accounts

!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.

!! data

!type string

Base58 encoded instruction data passed to the program the CPI is being made to.

!! programIdIndex

!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.

!! stackHeight

!type u32 | null

Depth of the CPI call. Inner instructions start at 2 and can reach 5, or 9 once SIMD-0268 activates.

Token Balances

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"
    }
  }
]

!reference

!! postTokenBalances

!type array[object]

!! accountIndex

!type u8

Index of the account in which the token balance is provided for.

!! mint

!type string

Pubkey of the token's mint.

!! owner

!type string | undefined

Pubkey of token balance's owner. Omitted if the validator did not record it.

!! programId

!type string | undefined

Pubkey of the Token program that owns the account. Omitted if the validator did not record it.

!! uiTokenAmount

!type object

!! amount

!type string

Raw amount of tokens as a string, ignoring decimals.

!! decimals

!type u8

Number of decimals configured for token's mint.

!! uiAmount

!type number | null

Token amount as a float, accounting for decimals. DEPRECATED

!! uiAmountString

!type string

Token amount as a string, accounting for decimals.

!! preTokenBalances

!type array[object]

!! accountIndex

!type u8

Index of the account in which the token balance is provided for.

!! mint

!type string

Pubkey of the token's mint.

!! owner

!type string | undefined

Pubkey of token balance's owner. Omitted if the validator did not record it.

!! programId

!type string | undefined

Pubkey of the Token program that owns the account. Omitted if the validator did not record it.

!! uiTokenAmount

!type object

!! amount

!type string

Raw amount of tokens as a string, ignoring decimals.

!! decimals

!type u8

Number of decimals configured for token's mint.

!! uiAmount

!type number | null

Token amount as a float, accounting for decimals. DEPRECATED

!! uiAmountString

!type string

Token amount as a string, accounting for decimals.

Rewards

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
  }
]

!reference

!! rewards

!type array[object]

Rewards applied while processing a transaction or block.

!! pubkey

!type string

Rewarded account pubkey, as a base-58 encoded string.

!! lamports

!type i64

Lamports credited or debited by this reward entry.

!! postBalance

!type u64

Account balance after the reward was applied.

!! rewardType

!type string | null

Reward category. When present, the value is Fee, Rent, Voting, or Staking.

!! commission

!type u8 | null

Vote-account commission at the time of the reward. Present only for voting and staking rewards; otherwise null.

Loaded Addresses

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"
  ]
}

!reference

!! loadedAddresses

!type object

Loaded account addresses resolved from lookup tables.

!! writable

!type array[string]

Ordered list of writable loaded-account addresses, as base-58 encoded strings.

!! readonly

!type array[string]

Ordered list of readonly loaded-account addresses, as base-58 encoded strings.

Return Data

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"]
}

!reference

!! returnData

!type object

Most recent return data generated by an instruction in the transaction.

!! programId

!type string

Program that generated the return data, as a base-58 encoded pubkey.

!! data

!type [string, "base64"]

Return data payload and encoding. This field uses base-64 data with "base64" encoding.