signed_tx_base64 payload. Status methods accept either the same payload or a tx_hash + sender_account_id pair.
Quick Reference
Prefer
send_tx and tx for new integrations, and tx_status on nodes that run nearcore 2.14.0 or later. On older nodes, use EXPERIMENTAL_tx_status, which also works on 2.14.0 and later. The broadcast_tx_async and broadcast_tx_commit methods are kept for backward compatibility but offer less control over when the call returns.The wait_until Field
send_tx, tx, and tx_status accept an optional wait_until field that controls how long the RPC waits before returning a response. Each value waits for a stricter execution milestone than the previous one — pick the lowest level that satisfies your use case so you don’t pay extra latency.
If the field is omitted, the RPC behaves as if
EXECUTED_OPTIMISTIC was passed.
Send Transaction
Broadcasts a signed transaction and waits for the requested execution milestone before returning.- method:
send_tx - params:
signed_tx_base64, optionalwait_until
- JSON
- JavaScript
- HTTPie
status.SuccessValue. See the decoded result reference to read them.
Transaction Status
Returns the status of a previously submitted transaction.- method:
tx - params: either
signed_tx_base64, ortx_hash+sender_account_id. Optionalwait_until.
- JSON (by hash)
- JavaScript
Transaction Status with Receipts
tx_status returns the same payload as tx, plus a receipts list with the receipts that the transaction produced. It is useful when debugging cross-contract calls.
- method:
tx_status - params: same as
tx
receipts list can be incomplete:
- Receipts that have not run yet when the node answers are not in the list. With the default
wait_until(EXECUTED_OPTIMISTIC), refund receipts are often still missing.wait_until: "FINAL"waits until all receipts, including refunds, have run. - When the signer and the receiver are the same account, the list leaves out the first receipt. This is the receipt converted from the transaction.
- A node that does not track the signer’s shard can return the result without the
receiptslist.
tx_status is available from nearcore 2.14.0. The 2.14.0 release candidates (versions that start with 2.14.0-rc) also have it. Earlier versions call this method EXPERIMENTAL_tx_status. Nodes that run them return a “Method not found” error for tx_status. EXPERIMENTAL_tx_status still works in 2.14.0, as a deprecated alias with identical request and response types. Use EXPERIMENTAL_tx_status until every node you call runs one of these versions or later. To see which version a node runs, call the status method and read version.version.Receipt by Id
Fetches a single receipt by its id.- method:
EXPERIMENTAL_receipt - params:
receipt_id
Broadcast Async
Broadcasts a signed transaction and returns immediately with the transaction hash. It submits the transaction the same way assend_tx with wait_until: "NONE". The difference is the response: broadcast_tx_async returns the transaction hash as a string, while send_tx returns only {"final_execution_status": "NONE"}.
- method:
broadcast_tx_async - params: a single positional string — the base64-encoded signed transaction.
Broadcast Commit
Broadcasts a signed transaction and waits for it to be included in a block. Equivalent tosend_tx with wait_until: "EXECUTED_OPTIMISTIC".
- method:
broadcast_tx_commit - params: a single positional string — the base64-encoded signed transaction.
Error Handling
INTERNAL_ERROR is returned as the error name. The other errors are returned with name set to HANDLER_ERROR and the error code below in cause.name.
Invalid transactions
The reason for anINVALID_TRANSACTION error is in data.TxExecutionError.InvalidTxError. For example, this is the error for a transaction whose reference block hash is too old:
"Expired", or an object, such as {"InvalidNonce": {"tx_nonce": 5, "ak_nonce": 7}}. What to do depends on the reason:
Expired: the reference block hash is too old. Refreshblock_hashand sign again.InvalidSignature: the signature does not match the signer’s key. Sign again with the matching access key.ShardCongestedorShardStuck: the receiver’s shard is congested. The node checks congestion before the signature, key, nonce and balance, so the transaction may still be valid. Wait, and then send the same signed transaction again while its block hash is still valid.- Any other reason: fix the reported nonce, key or balance, and sign again.
Timeouts
ATIMEOUT_ERROR means that the transaction did not reach the chosen wait_until level before the RPC’s deadline. The nearcore default deadline is 10 seconds. Node operators can change it, so some providers wait longer.
From nearcore 2.14.0, cause.info.cause says how far the transaction got. Older nodes send no cause.info.
NOT_OBSERVED: the node has not seen the transaction in a block. Aftersend_tx, polltxwith the transaction hash, and send the same signed transaction again if it does not appear. Aftertx, check the hash andsender_account_id.PENDING: the node has seen the transaction, but it has not reached the chosen level yet. The last known status is incause.info.status. Polltxagain.DOES_NOT_TRACK_SHARD: the node does not track the shard of the transaction, and it got no answer from a node that does. Send the request to a node that tracks that shard.ERROR: the node could not get a usable status before the deadline. Try again later.
wait_until and poll tx, or use an archival or dedicated provider.