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_function
finality
ORblock_id
account_id
:"example.testnet"
method_name
:get_method_name
(exampleview
methods)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