Value a wallet's native and token holdings in USD. $0.02 per request.
Send a wallet address, an optional chain, and an optional list of ERC-20 token contract addresses to check. Get back the native balance plus each requested token's balance, live USD price, and USD value, with a running total.
| Method | POST |
|---|---|
| Path | /valuate |
| Content-Type | application/json |
| field | required | description |
|---|---|---|
address | yes | The wallet address to value |
chain | no | One of ethereum (default), base, polygon, arbitrum, optimism, bnb |
tokens | no | Array of ERC-20 contract addresses to include, max 10 |
curl -X POST https://crypto-portfolio-valuator.pdfextractapi.workers.dev/valuate \
-H "Content-Type: application/json" \
-d '{"address": "0x...", "tokens": ["0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48"]}'
{
"address": "0x...",
"chain": "ethereum",
"holdings": [
{ "type": "native", "symbol": "ETH", "token_address": null, "balance": "1.5", "usd_price": 3200, "usd_value": 4800 },
{ "type": "token", "symbol": "USDC", "token_address": "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48", "balance": "500", "usd_price": 1, "usd_value": 500 }
],
"total_usd_value": 5300,
"unpriced_holdings": 0
}
Errors return a non-200 status with { "error": { "code": "...", "message": "..." } }. Common codes: invalid_address, unknown_chain, invalid_tokens, too_many_tokens. A holding with no available live price returns usd_price: null and is excluded from the total, reflected in unpriced_holdings.
This endpoint is paid per-request via the x402 protocol (HTTP 402 + USDC). Unpaid requests receive a 402 response with payment instructions.