Returns the status of a call batch that was sent via
wallet_sendCalls. This method allows applications to track the execution status and retrieve transaction receipts for batch operations.Parameters
string
required
The call bundle identifier returned by a previous
wallet_sendCalls request.Returns
object
Status information for the call batch.
Show CallsStatus properties
Show CallsStatus properties
string
The version of the API being used. Currently “1.0”.
string
The chain ID in hexadecimal format.
string
The call bundle identifier.
number
Status code indicating the current state of the batch:
- 1xx (Pending): 100 = Batch received but not completed onchain
- 2xx (Confirmed): 200 = Batch included onchain without reverts
- 4xx (Offchain failures): 400 = Batch failed and wallet will not retry
- 5xx (Chain failures): 500 = Batch reverted completely
- 6xx (Partial failures): 600 = Batch reverted partially
boolean
Indicates whether the wallet executed calls atomically. If
true, all calls were executed in a single transaction. If false, calls were executed in multiple transactions.Receipt[]
Transaction receipts for the call batch. Structure depends on the
atomic field:- If
atomicistrue: Single receipt or array of receipts for the batch transaction - If
atomicisfalse: Array of receipts for all transactions containing batch calls
Show Receipt properties
Show Receipt properties
Log[]
The logs generated by the calls. For smart contract wallets, only includes logs relevant to the specific calls.
'0x1' | '0x0'
Transaction status:
0x1 for success, 0x0 for failure.string
Hash of the block containing these calls.
string
Block number containing these calls (hex format).
string
The amount of gas used by these calls (hex format).
string
Hash of the transaction containing these calls.
object
Optional capability-specific metadata.
Example Usage
{
"id": 1,
"jsonrpc": "2.0",
"method": "wallet_getCallsStatus",
"params": ["0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331"]
}
import { createBaseAccountSDK } from '@base-org/account';
const provider = createBaseAccountSDK().getProvider();
// Get status of a batch sent via wallet_sendCalls
const callsId = "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331";
const status = await provider.request({
method: 'wallet_getCallsStatus',
params: [callsId]
});
console.log('Batch status:', status.status);
console.log('Atomic execution:', status.atomic);
console.log('Receipts:', status.receipts);
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"version": "1.0",
"chainId": "0x2105",
"id": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
"status": 200,
"atomic": true,
"receipts": [
{
"logs": [
{
"address": "0xa922b54716264130634d6ff183747a8ead91a40b",
"topics": ["0x5a2a90727cc9d000dd060b1132a5c977c9702bb3a52afe360c9c22f0e9451a68"],
"data": "0xabcd"
}
],
"status": "0x1",
"blockHash": "0xf19bbafd9fd0124ec110b848e8de4ab4f62bf60c189524e54213285e7f540d4a",
"blockNumber": "0xabcd",
"gasUsed": "0xdef",
"transactionHash": "0x9b7bb827c2e5e3c1a0a44dc53e573aa0b3af3bd1f9f5ed03071b100bb039eaff"
}
]
}
}
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"version": "1.0",
"chainId": "0x2105",
"id": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
"status": 100,
"atomic": true,
"receipts": []
}
}
{
"id": 1,
"jsonrpc": "2.0",
"result": {
"version": "1.0",
"chainId": "0x2105",
"id": "0xe670ec64341771606e55d6b4ca35a1a6b75ee3d5145a99d05921026d1527331",
"status": 500,
"atomic": true,
"receipts": [
{
"logs": [],
"status": "0x0",
"blockHash": "0xf19bbafd9fd0124ec110b848e8de4ab4f62bf60c189524e54213285e7f540d4a",
"blockNumber": "0xabcd",
"gasUsed": "0xabc",
"transactionHash": "0x9b7bb827c2e5e3c1a0a44dc53e573aa0b3af3bd1f9f5ed03071b100bb039eaff"
}
]
}
}
Status Code Reference
| Code | Category | Meaning |
|---|---|---|
| 100 | Pending | Batch received but not completed onchain |
| 200 | Success | Batch included onchain without reverts |
| 400 | Offchain Error | Batch failed, wallet will not retry |
| 500 | Chain Error | Batch reverted completely |
| 600 | Partial Error | Batch reverted partially, some changes may be onchain |
Error Handling
| Code | Message | Description |
|---|---|---|
| -32602 | Invalid params | Invalid call bundle identifier |
| 4100 | Method not supported | Wallet doesn’t support wallet_getCallsStatus |
| 4200 | Calls not found | No batch found with the specified identifier |
Usage with wallet_sendCalls
This method is designed to work with batches sent viawallet_sendCalls:
// Send a batch of calls
const callsId = await provider.request({
method: 'wallet_sendCalls',
params: [{
version: '1.0',
chainId: '0x2105',
from: userAddress,
calls: [
{ to: '0x...', value: '0x0', data: '0x...' },
{ to: '0x...', value: '0x0', data: '0x...' }
]
}]
});
// Poll for status updates
const checkStatus = async () => {
const status = await provider.request({
method: 'wallet_getCallsStatus',
params: [callsId]
});
if (status.status === 200) {
console.log('Batch completed successfully!');
console.log('Transaction receipts:', status.receipts);
} else if (status.status === 100) {
console.log('Batch still pending...');
setTimeout(checkStatus, 2000); // Check again in 2 seconds
} else {
console.error('Batch failed with status:', status.status);
}
};
checkStatus();
The receipts structure varies based on whether the batch was executed atomically. Always check the
atomic field to properly interpret the receipts array.This method follows the EIP-5792 standard for wallet batch operations. Not all wallets may support this method - check wallet capabilities first.