# ERC-20 Balance Allowance Bundle

> ERC-20 Balance Allowance Bundle is a paid API for AI agents from ari001.tailb4ac3a.ts.net, paid per call via x402, $0.006/call, status unknown (last checked 2026-10-01).

Returns both the ERC-20 token balance and spender allowance for a given token, owner, and spender in a single bundled call.

## Facts

- Endpoint: GET https://ari001.tailb4ac3a.ts.net/v1/ventures/ethereum_contract_abi_service/erc20_balance_allowance_bundle?utm_source=zero.xyz
- Price: $0.006/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-01
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/erc-20-balance-allowance-bundle-e54b4eeb
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_CNI3kJuCMHKS8aXnnMN2F

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 erc-20-balance-allowance-bundle-e54b4eeb
```

Example prompt: What's the USDC balance and how much is approved for Uniswap's router to spend, for wallet 0xAbCd...1234 with token 0xA0b8...eB48 and spender 0x68b3...1C68? Give me both in one call.

## When to prefer this

Choose this endpoint when you need both the ERC-20 balance and allowance for the same token and addresses in a single network round trip, saving latency and cost compared to making two separate calls. Ideal for DeFi bots, pre-trade checks, or any workflow that must evaluate both holding amount and spending approval before acting. If you only need one of the two values, prefer the individual balanceOf or allowance endpoints instead.

## Known failure modes

- Invalid Ethereum address format (not matching 0x + 40 hex) returns a validation error
- Either sub-call (balanceOf or allowance) failing causes the entire bundle to fail with ok=false
- Non-existent or non-ERC-20 contract address may return zero or an RPC error
- Network/RPC downtime causes the call to fail
- Missing required query parameters (token, address, owner, or spender) returns an error

## How this service works

Returns both the ERC-20 balanceOf and allowance for a given token, owner, and spender in one paid call. Returns: each named part service's own result, in one paid call, keyed by the part's name -- exactly what each part returns when bought alone; the call succeeds only when every part answers. It takes the union of the parts' query parameters. Query: address, owner, spender, token.

## Output

A JSON object with an 'ok' boolean and a 'parts' object containing two sub-results: 'erc20_balanceof' (with the token balance as a uint256 decimal string, chain, method, and ok/error) and 'erc20_allowance' (with the approved allowance as a uint256 decimal string, chain, method, and ok/error). The entire call fails if either part fails.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "token",
      "address",
      "owner",
      "spender"
     ],
     "properties": {
      "owner": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "0x + 40 hex"
      },
      "token": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "ERC-20 contract, 0x + 40 hex"
      },
      "address": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "holder, 0x + 40 hex"
      },
      "spender": {
       "type": "string",
       "pattern": "^0x[a-fA-F0-9]{40}$",
       "description": "0x + 40 hex"
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "service"
     ],
     "properties": {
      "ok": {
       "type": "boolean"
      },
      "error": {
       "type": "string",
       "description": "present when ok is false"
      },
      "parts": {
       "type": "object",
       "properties": {
        "erc20_allowance": {
         "type": "object",
         "required": [
          "ok",
          "service"
         ],
         "properties": {
          "ok": {
           "type": "boolean"
          },
          "chain": {
           "type": "string"
          },
          "error": {
           "type": "string",
           "description": "present when ok is false"
          },
          "method": {
           "type": "string"
          },
          "result": {
           "type": "string",
           "description": "the uint256 as a decimal string"
          },
          "service": {
           "type": "string"
          }
         }
        },
        "erc20_balanceof": {
         "type": "object",
         "required": [
          "ok",
          "service"
         ],
         "properties": {
          "ok": {
           "type": "boolean"
          },
          "
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/erc-20-balance-allowance-bundle-e54b4eeb/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from ari001.tailb4ac3a.ts.net](https://www.zero.xyz/host/ari001.tailb4ac3a.ts.net/llms.txt)
