RPC API Reference
JSON-RPC API reference for interacting with Arch Network validator nodes
The Arch validator exposes an HTTP JSON-RPC 2.0 API for account queries, transaction submission, block lookups, node status, faucet helpers, and pre-anchor conflict checks.
::::note This page tracks the methods registered by the validator and local validator RPC modules. Method names are snake_case and must be sent exactly as shown. ::::
API Endpoints
Default Configuration
- Validator RPC port:
9001 - Local validator RPC port:
9002 - Local URL:
http://localhost:9002 - Protocol: HTTP POST with JSON-RPC 2.0
Request Format
{
"jsonrpc": "2.0",
"id": 1,
"method": "method_name",
"params": []
}Response Format
{
"jsonrpc": "2.0",
"id": 1,
"result": {}
}Available Methods
Account Operations
read_account_info- Get account state for one public key.get_multiple_accounts- Get account state for multiple public keys, preserving input order and returningnullfor missing accounts.get_program_accounts- Query accounts owned by a program, with optional account filters.get_all_accounts- List all accounts in the local validator database. Local validator only.get_account_address- Derive the Bitcoin address associated with an Arch account public key.
Transaction Operations
send_transaction- Submit one runtime transaction.send_transactions- Submit a batch of runtime transactions.get_processed_transaction- Fetch a processed transaction by transaction ID.get_arch_txid_from_btc_txid- Resolve an Arch transaction ID from a Bitcoin transaction ID. Local validator only.get_transaction_report- Fetch a local validator transaction report by Arch transaction ID.get_latest_tx_using_account- Fetch the latest local validator transaction that used an account.recent_transactions- List recent processed transactions with optional pagination and account filtering.get_transactions_by_block- List transactions in a block with optional pagination and account filtering.get_transactions_by_ids- Fetch processed transactions by ID.request_airdrop- Request faucet funding for an account.create_account_with_faucet- Build a faucet-funded account creation transaction.check_pre_anchor_conflict- Check whether accounts conflict with an unconfirmed pre-anchor.
Block Operations
get_block- Get a block by hash.get_block_by_height- Get a block by height.get_full_block_with_txids- Get a block and its processed transactions by block hash.get_block_count- Get the current block count.get_block_hash- Get the block hash at a height.get_best_block_hash- Get the current best block hash.get_best_finalized_block_hash- Get the current best finalized block hash.get_block_execution_report- Get the raw serialized execution report bytes for a block hash.
Network and System Operations
is_node_ready- Check whether the validator is ready to process requests.get_current_state- Get the validator state and last state transition.get_peers- Get connected peer information.get_network_pubkey- Get the validator network verifying key.get_version- Get the validator package version.
Account Operations
read_account_info
Parameters: one account public key.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "read_account_info",
"params": ["<account_pubkey>"]
}'Returns: account information with lamports, owner, data, utxo, and is_executable.
get_multiple_accounts
Parameters: an array of account public keys.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_multiple_accounts",
"params": [["<pubkey1>", "<pubkey2>"]]
}'get_program_accounts
Parameters: [program_id, filters], where filters is optional.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_program_accounts",
"params": ["<program_id>", null]
}'get_account_address
Parameters: one account public key.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_account_address",
"params": ["<account_pubkey>"]
}'Transaction Operations
send_transaction
Parameters: one serialized RuntimeTransaction object.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "send_transaction",
"params": [{ "version": 0, "signatures": [], "message": {} }]
}'Returns: the transaction ID.
send_transactions
Parameters: an array of serialized RuntimeTransaction objects.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "send_transactions",
"params": [[{ "version": 0, "signatures": [], "message": {} }]]
}'Returns: an array of transaction IDs.
get_processed_transaction
Parameters: one transaction ID.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_processed_transaction",
"params": ["<txid>"]
}'recent_transactions
Parameters: object with optional limit, offset, and account. limit defaults to 10 and is capped at 100.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "recent_transactions",
"params": [{ "limit": 10, "offset": 0 }]
}'get_transactions_by_block
Parameters: object with required block_hash and optional limit, offset, and account.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_transactions_by_block",
"params": [{ "block_hash": "<block_hash>", "limit": 25 }]
}'get_transactions_by_ids
Parameters: object with required txids.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_transactions_by_ids",
"params": [{ "txids": ["<txid1>", "<txid2>"] }]
}'request_airdrop
Parameters: one recipient public key.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "request_airdrop",
"params": ["<recipient_pubkey>"]
}'create_account_with_faucet
Builds a signed RuntimeTransaction from the faucet to create an account for the provided public key. Submit the returned transaction with send_transaction.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "create_account_with_faucet",
"params": ["<new_account_pubkey>"]
}'check_pre_anchor_conflict
Parameters: an array of account public keys.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "check_pre_anchor_conflict",
"params": [["<pubkey1>", "<pubkey2>"]]
}'Block Operations
get_block
Parameters: block hash, optionally followed by a transaction filter.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_block",
"params": ["<block_hash>"]
}'get_block_by_height
Parameters: block height, optionally followed by a transaction filter.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_block_by_height",
"params": [12345]
}'get_full_block_with_txids
Parameters: block hash.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_full_block_with_txids",
"params": ["<block_hash>"]
}'get_block_count
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_block_count",
"params": []
}'get_block_hash
Parameters: block height.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_block_hash",
"params": [12345]
}'get_best_block_hash
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_best_block_hash",
"params": []
}'get_best_finalized_block_hash
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_best_finalized_block_hash",
"params": []
}'get_block_execution_report
Parameters: block hash.
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_block_execution_report",
"params": ["<block_hash>"]
}'Network and System Operations
is_node_ready
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "is_node_ready",
"params": []
}'get_current_state
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_current_state",
"params": []
}'get_peers
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_peers",
"params": []
}'get_network_pubkey
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_network_pubkey",
"params": []
}'get_version
curl -X POST http://localhost:9002 \
-H "Content-Type: application/json" \
-d '{
"jsonrpc": "2.0",
"id": 1,
"method": "get_version",
"params": []
}'Returns: an object containing version and reserved feature_set.
Error Handling
JSON-RPC errors follow the standard error object shape:
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32602,
"message": "Invalid params",
"data": "Additional error details"
}
}Common codes include:
-32600: Invalid request-32601: Method not found-32602: Invalid params-32603: Internal error-32000: Server error
Validator vs. Local Validator Methods
The local validator additionally registers get_all_accounts, get_transaction_report, get_latest_tx_using_account, and get_arch_txid_from_btc_txid for development workflows. These helpers are not registered by the standalone validator RPC module.
Neither RPC module currently registers reset_network or start_dkg.