# Vybe Solana Analytics API – Batch Wallet Token Balances

> Vybe Solana Analytics API – Batch Wallet Token Balances is a paid API for AI agents from x402-api.vybenetwork.xyz, paid per call via x402, $0.03/call, status unknown (last checked 2026-09-29).

Fetches token balances for up to 10 Solana wallet addresses in a single batch request, returning holdings with optional price data and sorting.

## Facts

- Endpoint: POST https://x402-api.vybenetwork.xyz/v4/wallets/batch/token-balances?utm_source=zero.xyz
- Price: $0.03/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-29
- Activations on Zero: 0
- Tags: x402, finance
- Canonical page: https://www.zero.xyz/c/vybe-solana-analytics-api-batch-wallet-token-balances-0f15c2dc
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_xPHu3M3SXKSLN2NWKx4ny

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability vybe-solana-analytics-api-batch-wallet-token-balances-0f15c2dc -d '<json body>'
```

Example prompt: Pull the token balances for these three Solana wallets — 7xKXtg2CW87d97TXJSDpbD5jBkheTqA83TZRuJosgAsU, 9WzDXwBbmkg8ZTbNMqUxvQRAyrZzDsGYdLVL9zYtAWWM, and 3h1zGmCwsRJnVk5Bu7dZViawdKnFpAGZYuHLMVPJkF9e — sorted by value descending, including any NFTs without tracked prices.

## When to prefer this

Use this endpoint when you need token balance data for multiple Solana wallets in a single call (up to 10), avoiding the overhead of sequential single-wallet lookups. Ideal for portfolio dashboards, multi-account monitoring, or comparing holdings across addresses. Prefer over single-wallet endpoints when processing 2–10 wallets simultaneously.

## Known failure modes

- ownerAddresses array exceeds 10 items — API returns 400 error
- invalid Solana public key format in ownerAddresses — returns validation error
- payment not attached or insufficient USDC — returns HTTP 402 with x-payment-info header
- wallets with no token balances return empty arrays
- sortByAsc and sortByDesc both specified — only one is allowed, returns 400

## How this service works

Solana API endpoint for fetching batch wallet token balances with SPL and Token-2022 assets, USD values, staking data, and aggregated portfolio metrics.

## Output

A paginated list of token balance records per wallet, each including token mint address, amount held, USD value (where available), and position metadata. Results can be sorted by amount or value and filtered by pricing availability.

## Example request

```json
{
 "page": 0,
 "limit": 10,
 "ownerAddresses": [
  "11111111111111111111111111111111"
 ],
 "includeNoPriceBalance": false
}
```

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "ownerAddresses"
 ],
 "properties": {
  "page": {
   "type": "integer",
   "format": "int32",
   "minimum": 0,
   "nullable": true,
   "description": "The requested page."
  },
  "limit": {
   "type": "integer",
   "format": "int32",
   "minimum": 0,
   "nullable": true,
   "description": "The limit of entries to return (per wallet). If not passed, first 1000 entries are returned (the maximum)."
  },
  "sortByAsc": {
   "type": "string",
   "nullable": true,
   "description": "Sort ascending based on amount or value of positions. Only one of sort_by_asc or sort_by_desc can be used"
  },
  "sortByDesc": {
   "type": "string",
   "nullable": true,
   "description": "Sort descending based on amount or value of positions. Only one of sort_by_asc or sort_by_desc can be used"
  },
  "onlyVerified": {
   "type": "boolean",
   "nullable": true,
   "description": "Whether tokens returned should be restricted to verified tokens only. Default is false."
  },
  "maxAssetValue": {
   "type": "string",
   "nullable": true,
   "description": "The maximum amount of total value in USD for an asset to be considered in the results. Overrides `includeNoPriceBalance` Defaults to no limit."
  },
  "minAssetValue": {
   "type": "string",
   "nullable": true,
   "description": "The minimum amount of total value in USD for an asset to be considered in the results. Overrides `includeNoPriceBalance` Defaults to no limit."
  },
  "mintAddresses": {
   "type": "array",
   "items": {
    "type": "string",
    "format": "pubkey"
   },
   "nullable": true,
   "description": "The allowable mint addresses, if any, to filter the results by."
  },
  "ownerAddresses": {
   "type": "array",
   "items": {
    "type": "string",
    "format": "pubkey"
   },
   "description": "Wallets to include in the returned results (max 10, with 10,000 maximum token accounts between them)."
  },
  "vybeTokenFilter": {
   "type": "boolean",
   "nullable": true,
   "description": "Whether Vybe's token filter should restrict the tokens that are returned. Default is true."
  },
  "includeNoPriceBalance": {
   "type": "boolean",
   "nullable": true,
   "description": "Whether or not we should include tokens we do not track prices for."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "object",
 "required": [
  "date",
  "ownerAddresses",
  "stakedSolBalanceUsd",
  "stakedSolBalance",
  "activeStakedSolBalanceUsd",
  "activeStakedSolBalance",
  "totalTokenValueUsd",
  "totalTokenValueUsd1dChange",
  "totalTokenCount",
  "data"
 ],
 "properties": {
  "data": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "mintAddress",
     "amount",
     "priceUsd",
     "priceUsd1dChange",
     "priceUsd7dTrend",
     "valueUsd",
     "valueUsd1dChange",
     "averagePriceUsd",
     "decimals",
     "verified",
     "slot"
    ],
    "properties": {
     "name": {
      "type": "string",
      "nullable": true,
      "description": "Name for the token, can be null for unknown addresses"
     },
     "slot": {
      "type": "integer",
      "format": "int64",
      "description": "Slot for the most recent update to the token balance. May be 0 if no information is available"
     },
     "amount": {
      "type": "string",
      "description": "Amount of the token"
     },
     "symbol": {
      "type": "string",
      "nullable": true,
      "description": "Symbol for the token, can be null for unknown addresses"
     },
     "logoUrl": {
      "type": "string",
      "nullable": true,
      "description": "Logo URL for the token"
     },
     "category": {
      "type": "string",
      "nullable": true,
      "description": "Category for the token"
     },
     "decimals": {
      "type": "integer",
      "format": "int64",
      "description": "Decimals for the token"
     },
     "priceUsd": {
      "type": "string",
      "description": "Average price of the token in USD"
     },
     "valueUsd": {
      "type": "string",
      "description": "Value of the held tokens in USD"
     },
     "verified": {
      "type": "boolean",
      "description": "Whether the token is verified or not."
     },
     "mintAddress": {
      "type": "string",
      "description": "Address for the token"
     },
     "averagePriceUsd": {
      "type": "string",
      "description": "Average price of the token in this wallet's trades"
     },
     "priceUsd7dTrend": {
      "type": "string",
      "description": "7 day trend of the token price in USD"
     },
     "priceUsd1dChange": {
      "type": "string",
      "description": "Change in the price of the token in USD over the last 24 hours"
     },
     "valueUsd1dChange": {
      "type": "string",
      "description": "Change in the value of the held tokens in USD over the
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/vybe-solana-analytics-api-batch-wallet-token-balances-0f15c2dc/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from x402-api.vybenetwork.xyz](https://www.zero.xyz/host/x402-api.vybenetwork.xyz/llms.txt)
