TriportRPC

personal_listWallets

POSThttps://api.triport.io/v1/eth

Returns the wallets managed by the backing Ethereum node, each with its backend URL, unlock status, and derived accounts.

EthereumBusiness — 20 RPS (with burst)

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.

optional
No parameters.

Response

Response fields

FieldTypeDescription
jsonrpcstringJSON-RPC protocol version, always "2.0".
idnumber | stringEchoes the request id.
resultarrayList of wallets known to the node. Empty array if the node manages no wallets.
result[].urlstringThe wallet backend URL (e.g. a keystore:// path or a hardware-wallet ledger:// / trezor:// URL).
result[].statusstringBackend status, e.g. "Locked", "Unlocked", or a hardware-specific state.
result[].accountsarrayAccounts currently exposed by this wallet. Empty when none are derived/unlocked.
result[].accounts[].addressstringThe 20-byte account address, hex-encoded.
result[].accounts[].urlstringThe backend URL identifying the individual account.

Errors

CodeMeaningWhen it happens
-32002tier_insufficientYour plan is below the Business tier required for personal_listWallets. The error data includes current_tier, required_tier, and an upgrade_url.
-32003rate_limitedYou exceeded the 20 RPS limit for this method. The error data includes limit_rps, burst_capacity, and retry_after_sec.
-32005unauthorizedThe 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 status vary 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_peergraph category.
  • Rate limiting is RPS-per-tier with burst; there is no daily quota.