Accounts / Contracts
The RPC API enables you to view details about accounts and contracts as well as perform contract calls.
Quick Reference​
| Method | Endpoint | Purpose |
|---|---|---|
view_account | Query account info | Get basic account information |
view_account_changes | Track account changes | Monitor account state changes |
view_code | Query contract code | Get deployed contract WASM code |
view_state | Query contract state | Get contract storage data |
data_changes | Track state changes | Monitor contract state changes |
contract_code_changes | Track code changes | Monitor contract deployments |
call_function | Call view functions | Execute read-only contract methods |
View account​
Description
Returns basic account information.
Example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_account",
"finality": "final",
"account_id": "account.rpc-examples.testnet"
}
}
const response = await near.connection.provider.query({
request_type: 'view_account',
finality: 'final',
account_id: 'account.rpc-examples.testnet',
});
http POST https://rpc.testnet.near.org \
jsonrpc=2.0 \
id=dontcare \
method=query \
params:='{
"request_type": "view_account",
"finality": "final",
"account_id": "account.rpc-examples.testnet"
}'
Try it out on Lantstool
Loading...
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.
Example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "changes",
"params": {
"changes_type": "account_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"block_id": 187310139
}
}
const response = await near.connection.provider.accountChanges(['contract.rpc-examples.testnet'], {
blockId: 187310139,
});
http POST https://archival-rpc.testnet.near.org \
jsonrpc=2.0 \
id=dontcare \
method=changes \
params:='{
"changes_type": "account_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"block_id": 187310139
}'
Try it out on Lantstool
Loading...
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.
Example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_code",
"finality": "final",
"account_id": "contract.rpc-examples.testnet"
}
}
const response = await near.connection.provider.query({
request_type: 'view_code',
finality: 'final',
account_id: 'contract.rpc-examples.testnet',
});
http POST https://rpc.testnet.near.org \
jsonrpc=2.0 \
id=dontcare \
method=query \
params:='{
"request_type": "view_code",
"finality": "final",
"account_id": "contract.rpc-examples.testnet"
}'
Try it out on Lantstool
Loading...
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.
Example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "query",
"params": {
"request_type": "view_state",
"finality": "final",
"account_id": "contract.rpc-examples.testnet",
"prefix_base64": ""
}
}
const response = await near.connection.provider.query({
request_type: 'view_state',
finality: 'final',
account_id: 'contract.rpc-examples.testnet',
prefix_base64: '',
});
http POST https://rpc.testnet.near.org \
jsonrpc=2.0 \
id=dontcare \
method=query \
params:='{
"request_type": "view_state",
"finality": "final",
"account_id": "contract.rpc-examples.testnet",
"prefix_base64": ""
}'
Try it out on Lantstool
Loading...
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.
Example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "changes",
"params": {
"changes_type": "data_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"key_prefix_base64": "",
"block_id": 187310139
}
}
const response = await near.connection.provider.contractStateChanges(
['contract.rpc-examples.testnet'],
{ blockId: 187310139 },
''
);
http POST https://archival-rpc.testnet.near.org \
jsonrpc=2.0 \
id=dontcare \
method=changes \
params:='{
"changes_type": "data_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"key_prefix_base64": "",
"block_id": 187310139
}'
Try it out on Lantstool
Loading...
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.
Example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"jsonrpc": "2.0",
"id": "dontcare",
"method": "changes",
"params": {
"changes_type": "contract_code_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"block_id": 187309439
}
}
const response = await near.connection.provider.contractCodeChanges(
['contract.rpc-examples.testnet'],
{ blockId: 187309439 }
);
http POST https://archival-rpc.testnet.near.org \
jsonrpc=2.0 \
id=dontcare \
method=changes \
params:='{
"changes_type": "contract_code_changes",
"account_ids": ["contract.rpc-examples.testnet"],
"block_id": 187309439
}'
Try it out on Lantstool
Loading...
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_functionfinalityORblock_idaccount_id:"example.testnet"method_name:get_method_name(exampleviewmethods)args_base64:method_arguments_base_64_encoded
get_greeting example
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"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": ""
}
}
const response = await near.connection.provider.query({
request_type: 'call_function',
finality: 'final',
account_id: 'contract.rpc-examples.testnet',
method_name: 'get_greeting',
args_base64: '',
});
http POST https://rpc.testnet.near.org \
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": ""
}'
Try it out on Lantstool
Loading...
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
- JSON
- JavaScript
- HTTPie
- Lantstool
{
"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="
}
}
const response = await near.connection.provider.query({
request_type: 'call_function',
finality: 'final',
account_id: 'contract.rpc-examples.testnet',
method_name: 'get_record',
args_base64: 'ewogICJyZWNvcmRfaWQiOiAxCn0=',
});
http POST https://rpc.testnet.near.org \
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="
}'
Try it out on Lantstool
Loading...
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 Code | Description | Solution |
|---|---|---|
UnknownAccount | Account does not exist | Check account ID spelling and existence |
InvalidAccount | Invalid account format | Use valid account ID format (e.g., account.near) |
UnknownBlock | Block not found | Use a valid block hash or height |
GarbageCollectedBlock | Block too old | Use archival node or more recent block |
TooManyInputs | Too many accounts in request | Reduce number of accounts per request |
NoContractCode | Account has no contract deployed | Verify the account has a deployed contract |
MethodNotFound | Contract method does not exist | Check method name and contract ABI |
InvalidArgs | Invalid method arguments | Verify 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