Skip to main content

Accounts / Contracts

The RPC API enables you to view details about accounts and contracts as well as perform contract calls.

Quick Reference

MethodEndpointPurpose
view_accountQuery account infoGet basic account information
view_account_changesTrack account changesMonitor account state changes
view_codeQuery contract codeGet deployed contract WASM code
view_stateQuery contract stateGet contract storage data
data_changesTrack state changesMonitor contract state changes
contract_code_changesTrack code changesMonitor contract deployments
call_functionCall view functionsExecute read-only contract methods

View account

Description

Returns basic account information.

  • method: query
  • params:

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_account",
"finality": "final",
"account_id": "account.rpc-examples.testnet"
}
}
Example response:
{
"jsonrpc": "2.0",
"result": {
"amount": "999788200694421800000000",
"block_hash": "56xEo2LorUFVNbkFhCncFSWNiobdp1kzm14nZ47b5JVW",
"block_height": 187440904,
"code_hash": "11111111111111111111111111111111",
"locked": "0",
"storage_paid_at": 0,
"storage_usage": 410
},
"id": "dontcare"
}
Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


View account changes

Description

Returns account changes from transactions in a given account.

  • method: changes
  • params:
    • changes_type: account_changes
    • account_ids: ["example.testnet"]
    • finality OR block_id

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "changes",
"params": {
"changes_type": "account_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"block_id": 187310139
}
}
Example response:
{
"jsonrpc": "2.0",
"result": {
"block_hash": "8woqfx6kyjgfgU1S2L6Kur27h5jpBtDTmG8vQ8vpAUut",
"changes": [
{
"cause": {
"receipt_hash": "FseKd4rmjPSAuEz9zh9b5PfUS4jJV4rB6XkeHwVkyXkk",
"type": "receipt_processing"
},
"change": {
"account_id": "contract.rpc-examples.testnet",
"amount": "4999184472524996100000000",
"code_hash": "GVvBFWDPNmomMwXH4LvQW2cRaZJ8N6gxsdBhbJ8ReVJf",
"locked": "0",
"storage_paid_at": 0,
"storage_usage": 81621
},
"type": "account_update"
},
{
"cause": {
"receipt_hash": "FseKd4rmjPSAuEz9zh9b5PfUS4jJV4rB6XkeHwVkyXkk",
"type": "action_receipt_gas_reward"
},
"change": {
"account_id": "contract.rpc-examples.testnet",
"amount": "4999212038891301300000000",
"code_hash": "GVvBFWDPNmomMwXH4LvQW2cRaZJ8N6gxsdBhbJ8ReVJf",
"locked": "0",
"storage_paid_at": 0,
"storage_usage": 81621
},
"type": "account_update"
}
]
},
"id": "dontcare"
}
Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


View contract code

Description

Returns the contract code (Wasm binary) deployed to the account. Please note that the returned code will be encoded in base64.

  • method: query
  • params:

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_code",
"finality": "final",
"account_id": "contract.rpc-examples.testnet"
}
}
Example response:
{
"jsonrpc": "2.0",
"result": {
"block_hash": "bxucHpnP8VsiB3pLvA7DpBwri9x1DCZxVfBNkrdWbqn",
"block_height": 187441984,
"code_base64": "AGFzbQEAAAABugEbYAJ/fwF/YAN/f38Bf2ACf38AYAN/...",
"hash": "GVvBFWDPNmomMwXH4LvQW2cRaZJ8N6gxsdBhbJ8ReVJf"
},
"id": "dontcare"
}
Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


View contract state

Description

Returns the state (key value pairs) of a contract based on the key prefix (base64 encoded). Pass an empty string for prefix_base64 if you would like to return the entire state. Please note that the returned state will be base64 encoded as well.

  • method: query
  • params:
    • request_type: view_state
    • finality OR block_id
    • account_id: "example.testnet",
    • prefix_base64: ""

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_state",
"finality": "final",
"account_id": "contract.rpc-examples.testnet",
"prefix_base64": ""
}
}
Example response:
{
"jsonrpc": "2.0",
"result": {
"block_hash": "GN5R7S8mMTEkUT1njWu9jARV29G7izVDjdSNs976BJVw",
"block_height": 187442491,
"values": [
{
"key": "U1RBVEU=",
"value": "HQAAAEdyZWV0aW5ncyBmcm9tIE5FQVIgUHJvdG9jb2whAQAAAHI="
},
{
"key": "cgEAAAAAAAAA",
"value": "FQAAAEhlbGxvLCBOZWFyIFByb3RvY29sIQ=="
}
]
},
"id": "dontcare"
}

Note: Currently, the response includes a proof field directly in the result, and a proof fields on each element of the values list. In the future, the result.proof will be included only if the result is not empty, and the proof field will be removed from all values. When parsing the result, you should accept objects with or without these fields set.

Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


View contract state changes

Description

Returns the state change details of a contract based on the key prefix (encoded to base64). Pass an empty string for this param if you would like to return all state changes.

  • method: changes
  • params:
    • changes_type: data_changes
    • account_ids: ["example.testnet"],
    • key_prefix_base64: "base64 encoded key value",
    • finality OR block_id

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "changes",
"params": {
"changes_type": "data_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"key_prefix_base64": "",
"block_id": 187310139
}
}
Example response:
{
"jsonrpc": "2.0",
"result": {
"block_hash": "8woqfx6kyjgfgU1S2L6Kur27h5jpBtDTmG8vQ8vpAUut",
"changes": [
{
"cause": {
"receipt_hash": "FseKd4rmjPSAuEz9zh9b5PfUS4jJV4rB6XkeHwVkyXkk",
"type": "receipt_processing"
},
"change": {
"account_id": "contract.rpc-examples.testnet",
"key_base64": "U1RBVEU=",
"value_base64": "HQAAAEdyZWV0aW5ncyBmcm9tIE5FQVIgUHJvdG9jb2whAQAAAHI="
},
"type": "data_update"
},
{
"cause": {
"receipt_hash": "FseKd4rmjPSAuEz9zh9b5PfUS4jJV4rB6XkeHwVkyXkk",
"type": "receipt_processing"
},
"change": {
"account_id": "contract.rpc-examples.testnet",
"key_base64": "cgEAAAAAAAAA",
"value_base64": "FQAAAEhlbGxvLCBOZWFyIFByb3RvY29sIQ=="
},
"type": "data_update"
}
]
},
"id": "dontcare"
}
Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


View contract code changes

Description

Returns code changes made when deploying a contract. Change is returned is a base64 encoded WASM file.

  • method: changes
  • params:
    • changes_type: contract_code_changes
    • account_ids: ["example.testnet"],
    • finality OR block_id

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "changes",
"params": {
"changes_type": "contract_code_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"block_id": 187309439
}
}
Example response:
{
"jsonrpc": "2.0",
"result": {
"block_hash": "D1ZY3y51Z2v5tXq2nZPmXHgA3zZsPBzbtwHXjCvAEuLV",
"changes": [
{
"cause": {
"receipt_hash": "AR4cxtxc52WfnZcGEZHmPfQ1Dk3vQNb7vjSyicykfJWZ",
"type": "receipt_processing"
},
"change": {
"account_id": "contract.rpc-examples.testnet",
"code_base64": "AGFzbQEAAAABugEbYAJ/fwF/YAN/f38Bf2ACf38AYAN/..."
},
"type": "contract_code_update"
}
]
},
"id": "dontcare"
}
Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


Call a contract function

Description

Allows you to call a contract method as a view function.

  • method: query
  • params:
    • request_type: call_function
    • finality OR block_id
    • account_id: "example.testnet"
    • method_name: get_method_name (example view methods)
    • args_base64: method_arguments_base_64_encoded

get_greeting example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "call_function",
"finality": "final",
"account_id": "contract.rpc-examples.testnet",
"method_name": "get_greeting",
"args_base64": ""
}
}
Example response:

{
"jsonrpc": "2.0",
"result": {
"block_hash": "GTZdXfNmnL6TkJFdBeVMHCadgLuKChVfRNCSVsEQoJ7L",
"block_height": 187444191,
"logs": [],
"result": [
34, 71, 114, 101, 101, 116, 105, 110, 103, 115, 32, 102, 114, 111, 109, 32, 78, 69, 65, 82,
32, 80, 114, 111, 116, 111, 99, 111, 108, 33, 34
]
},
"id": "dontcare"
}

Note: [34, 71, ..., 33, 34] is an array of bytes, to be specific it is an ASCII code of "Greetings from NEAR Protocol!". near-sdk-rs and near-sdk-js return JSON-serialized results.

Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


get_record example

The args_base64 in this example can be decoded as

{
"record_id": 1
}

Example

{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "call_function",
"finality": "final",
"account_id": "contract.rpc-examples.testnet",
"method_name": "get_record",
"args_base64": "ewogICJyZWNvcmRfaWQiOiAxCn0="
}
}
Example response:

{
"jsonrpc": "2.0",
"result": {
"block_hash": "8Gp8x1ZcanL3C2ris9rgk1nY8v6MuickLWeM6Gj2jGKs",
"block_height": 187445443,
"logs": [],
"result": [
34, 72, 101, 108, 108, 111, 44, 32, 78, 101, 97, 114, 32, 80, 114, 111, 116, 111, 99, 111,
108, 33, 34
]
},
"id": "dontcare"
}

Note: [34, 72, ..., 108, 33, 34] is an array of bytes, to be specific it is an ASCII code of "Hello, Near Protocol!". near-sdk-rs and near-sdk-js return JSON-serialized results.

Error handling:

When making RPC API requests, you may encounter various errors related to network configuration, rate limiting, or request formatting. For comprehensive information about error types, causes, and solutions, see the RPC Errors documentation.


Error Handling

Common Error Types

Error CodeDescriptionSolution
UnknownAccountAccount does not existCheck account ID spelling and existence
InvalidAccountInvalid account formatUse valid account ID format (e.g., account.near)
UnknownBlockBlock not foundUse a valid block hash or height
GarbageCollectedBlockBlock too oldUse archival node or more recent block
TooManyInputsToo many accounts in requestReduce number of accounts per request
NoContractCodeAccount has no contract deployedVerify the account has a deployed contract
MethodNotFoundContract method does not existCheck method name and contract ABI
InvalidArgsInvalid method argumentsVerify args format and encoding

Best Practices

  • Use specific queries: Query only the data you need instead of broad state queries
  • Validate inputs: Always validate method arguments before contract calls