personal_listWallets
https://api.triport.io/v1/ethReturns the wallets managed by the backing Ethereum node, each with its backend URL, unlock status, and derived accounts.
personal_listWallets returns an array describing every wallet the backing
Ethereum node knows about. Each entry carries the wallet's backend url (for
example a keystore directory or a hardware-wallet path), the current status
of that backend, and the list of accounts that have been derived from or
unlocked within it.
This method belongs to the eth_peergraph category and is restricted to the
Business tier. It is an operational / introspection call — it reflects the
key-management state of the specific node serving your request, so the wallet
set and its statuses vary between calls and between nodes. Use it to inspect
node-side account state alongside
personal_listAccounts, not to manage end-user
keys.
It takes no parameters.
Parameters
This method takes no parameters. Send an empty params array.
——optionalResponse
Response fields
| Field | Type | Description |
|---|---|---|
jsonrpc | string | JSON-RPC protocol version, always "2.0". |
id | number | string | Echoes the request id. |
result | array | List of wallets known to the node. Empty array if the node manages no wallets. |
result[].url | string | The wallet backend URL (e.g. a keystore:// path or a hardware-wallet ledger:// / trezor:// URL). |
result[].status | string | Backend status, e.g. "Locked", "Unlocked", or a hardware-specific state. |
result[].accounts | array | Accounts currently exposed by this wallet. Empty when none are derived/unlocked. |
result[].accounts[].address | string | The 20-byte account address, hex-encoded. |
result[].accounts[].url | string | The backend URL identifying the individual account. |
Errors
| Code | Meaning | When it happens |
|---|---|---|
-32002 | tier_insufficient | Your plan is below the Business tier required for personal_listWallets. The error data includes current_tier, required_tier, and an upgrade_url. |
-32003 | rate_limited | You exceeded the 20 RPS limit for this method. The error data includes limit_rps, burst_capacity, and retry_after_sec. |
-32005 | unauthorized | The API key is missing, malformed, or invalid. |
Example error envelope (tier too low):
{
"jsonrpc": "2.0",
"id": 1,
"error": {
"code": -32002,
"message": "tier insufficient for method personal_listWallets",
"data": {
"method": "personal_listWallets",
"category": "eth_peergraph",
"chain": "eth",
"current_tier": "pro",
"required_tier": "business",
"upgrade_url": "https://api.triport.io/upgrade"
}
}
}See errors.md for the full error envelope and the shared error-code reference.
Examples
JavaScript (fetch)
const res = await fetch("https://api.triport.io/v1/eth", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.TRIPORT_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
jsonrpc: "2.0",
id: 1,
method: "personal_listWallets",
params: [],
}),
});
const { result } = await res.json();
for (const wallet of result) {
console.log(wallet.url, wallet.status, wallet.accounts.length);
}TypeScript SDK (@triport/sdk)
import { Triport } from "@triport/sdk";
const client = new Triport({ apiKey: process.env.TRIPORT_API_KEY });
const wallets = await client.eth.request<unknown[]>("personal_listWallets", []);
console.log(`wallets: ${wallets.length}`);Python (triport-sdk)
import os
from triport import Triport
client = Triport(api_key=os.environ["TRIPORT_API_KEY"])
wallets = client.eth.request("personal_listWallets", [])
for wallet in wallets:
print(wallet["url"], wallet["status"], len(wallet["accounts"]))Notes
- No parameters and no pagination — the response is the full wallet list as a
single array. The set and each wallet's
statusvary over time and between nodes. - Requires the Business tier; a lower tier returns
-32002(tier_insufficient). - For just the flat list of unlocked account addresses, see the related
Business-tier method personal_listAccounts in
the same
eth_peergraphcategory. - Rate limiting is RPS-per-tier with burst; there is no daily quota.