{
  "x402Version": 2,
  "id": 7515,
  "slug": "7515",
  "resource": "https://animica.dev/x402/chain/balances",
  "description": "Balances for up to 500 Animica accounts in ONE batched call, head-pinned, amounts in nANM as exact decimal strings. Single-address balance lookups stay free on the public API — this sells the batch.",
  "type": "http",
  "accepts": [
    {
      "scheme": "exact",
      "network": "eip155:8453",
      "payTo": "0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD",
      "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
      "amount": "5810",
      "maxTimeoutSeconds": 60
    },
    {
      "scheme": "exact",
      "network": "animica:1",
      "payTo": "anim1zqpsmegc0qcvzjfukm89xs0zeu3eqyyyel7kelehuszvwfarqypky2gr946ga",
      "asset": "ANM",
      "amount": "69005384859",
      "maxTimeoutSeconds": 60
    }
  ],
  "outputSchema": {
    "animica": {
      "catalog": "https://animica.dev/.well-known/x402",
      "content_type": "application/json",
      "currency": "USDC",
      "description": "Balances for up to 500 Animica accounts in ONE batched call, head-pinned, amounts in nANM as exact decimal strings. Single-address balance lookups stay free on the public API — this sells the batch.",
      "documentation": "https://animica.dev/x402#product-chain_batch_balances",
      "free_trial": {
        "endpoint": "POST /x402/chain/balances/trial",
        "limit_per_day": 5,
        "note": "Same code and same response shape as the paid endpoint. No payment, no payment headers. Quota is per client per UTC day; when it is spent this endpoint says so and points back here.",
        "price": "0",
        "url": "https://animica.dev/x402/chain/balances/trial"
      },
      "name": "Bulk account balances",
      "openapi": "https://animica.dev/x402/openapi.json",
      "price": "0.005810",
      "product": "chain_batch_balances",
      "provider": "Animica",
      "terms": {
        "amount_atomic": "5810",
        "asset": "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913",
        "chain_id": 8453,
        "network": "eip155:8453",
        "pay_to": "0x5D17c40FD6b119dc6006C4Ab3C20a917FCaB2aCD",
        "scheme": "exact"
      },
      "x402_version": 2
    },
    "bazaar": {
      "discoverable": true,
      "info": {
        "input": {
          "body": {
            "addresses": [
              "anim1zqpye0muk7etljd2fh7wxsh9y9027cq7dykj3de8u80s2mcnfp6qxecpunkth"
            ]
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "example": {
            "as_of": {
              "consistent": true,
              "entry_head_max": 73635,
              "entry_head_min": 73635,
              "head_hash": "0x00000000015b1e1021c5354baeac63e24fa52aff9aee92bd467653654256cdd4",
              "head_height": 73635
            },
            "balances": [
              {
                "account_digest": "0x4cbf7cb7b2bfc9aa4dfce342e5215eaf601e692d28b727e1df056f1348740367",
                "address": "anim1zqpye0muk7etljd2fh7wxsh9y9027cq7dykj3de8u80s2mcnfp6qxecpunkth",
                "balance": "150863000",
                "exists": true,
                "spendable_balance": "150863000"
              }
            ],
            "count": 1,
            "decimals": 9,
            "derivation": {
              "account_digest": "bech32m anim1… payload = alg_id (2 bytes) || sha3_256(pubkey) (32 bytes); the lookup key is payload[2:34] (the 32-byte digest), which is what is sent to the node.",
              "amounts": "balances are nANM (1e-9 ANM) as exact decimal strings, normalised through BigInt from the node's confirmed_balance. Divide by 1e9 for ANM — with a decimal library, never a float.",
              "duplicates": "duplicate addresses are resolved once and answered in place; total_balance sums UNIQUE accounts only.",
              "fields": "balance = the node's confirmed_balance. spendable_balance and exists are passed through only when the node returns them; nothing here is synthesised.",
              "source": "state.getAddressBalance on the local Animica node, one batched JSON-RPC request. Note the node has an upstream read-through fallback when it believes it is behind, so a balance may come from a trusted upstream rather than local state."
            },
            "failed_lookups": 0,
            "product": "chain_batch_balances",
            "total_balance": "150863000",
            "unique_addresses": 1,
            "unit": "nANM"
          },
          "type": "json"
        }
      },
      "schema": {
        "$schema": "https://json-schema.org/draft/2020-12/schema",
        "properties": {
          "input": {
            "properties": {
              "body": {
                "properties": {
                  "addresses": {
                    "description": "1..500 anim1… bech32m addresses (32-byte hex account digests also accepted); duplicates are collapsed to one lookup but still answered in place",
                    "type": "array"
                  }
                },
                "type": "object"
              },
              "bodyType": {
                "enum": [
                  "json"
                ],
                "type": "string"
              },
              "method": {
                "enum": [
                  "POST"
                ],
                "type": "string"
              },
              "type": {
                "const": "http",
                "type": "string"
              }
            },
            "required": [
              "type",
              "method"
            ],
            "type": "object"
          },
          "output": {
            "properties": {
              "example": {},
              "type": {
                "type": "string"
              }
            },
            "required": [
              "type"
            ],
            "type": "object"
          }
        },
        "required": [
          "input"
        ],
        "type": "object"
      }
    },
    "discovery": {
      "discoverable": true,
      "info": {
        "input": {
          "bodyFields": {
            "addresses": {
              "description": "1..500 anim1… bech32m addresses (32-byte hex account digests also accepted); duplicates are collapsed to one lookup but still answered in place",
              "type": "array"
            }
          },
          "bodyType": "json",
          "method": "POST",
          "type": "http"
        },
        "output": {
          "description": "balances[] {address, account_digest, balance (nANM decimal string), spendable_balance?, exists?, error?} in request order, plus unique_addresses, total_balance, as_of {head_height, head_hash, entry_head_min/max, consistent} and payment metadata",
          "type": "json"
        }
      }
    }
  },
  "tags": [
    "animica",
    "bazaar",
    "discovery"
  ],
  "sourceHost": "animica.dev",
  "lastUpdated": "2026-08-22T08:36:45.631Z",
  "quality": {
    "calls30d": 4,
    "uniquePayers30d": 1,
    "lastCalledAt": "2026-08-22T08:36:45.447Z"
  },
  "liveness": {},
  "verified": false,
  "featured": false,
  "provider": {
    "host": "animica.dev",
    "manifest_name": "animica.dev",
    "source": "cdp-mirror",
    "source_manifest_url": "https://api.cdp.coinbase.com/platform/v2/x402/discovery/resources",
    "submitted_at": "2026-09-18T22:00:31.484Z"
  }
}