# Base ERC-20 Transfer Logs

> Base ERC-20 Transfer Logs is a paid API for AI agents from agentshelf.syntexa.ch, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-26).

Retrieves ERC-20 Transfer event logs on Base mainnet filtered by token contract and/or wallet address over a bounded block range, returning both raw and human-readable amounts.

## Facts

- Endpoint: POST https://agentshelf.syntexa.ch/v1/base-erc20-transfers?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-26
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/base-erc-20-transfer-logs-67e77031
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_RGE8Ker7gSLB7lrvUflIX

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 base-erc-20-transfer-logs-67e77031 -d '<json body>'
```

Example prompt: Can you pull all USDC transfers involving wallet 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 on Base over the latest 2000 blocks, and show me both the raw and human-readable amounts?

## When to prefer this

Use this endpoint when you need on-chain ERC-20 Transfer event history on Base for a specific wallet or token, especially when you need human-readable decoded amounts alongside raw values. Prefer it over generic blockchain explorers when programmatic JSON output is needed in an agent workflow. It is read-only and cheap ($0.005 USDC), making it suitable for frequent polling or audit tasks. Use the free sandbox endpoint (/v1/sandbox/base-erc20-transfers) for testing before spending.

## Known failure modes

- Block range exceeds 10000 blocks — returns error asking you to narrow from_block/to_block
- Invalid Ethereum address format — returns validation error; ensure EIP-55 or all-lowercase
- Combining wallet with from or to fields — returns error since wallet is mutually exclusive
- decimals() not readable on token contract — human amount will be null or omitted
- More than 50 results in range — returns first 50 with a truncation indicator
- Payment not provided or insufficient — returns 402 Payment Required; try sandbox endpoint first

## How this service works

Call when an agent needs ERC-20 Transfer logs on Base filtered by token and/or wallet over a bounded block range (default the latest 2000 blocks, max 10000, at most 50). Amounts are raw and human when decimals() is readable. Read-only. No spend. Send JSON {"token":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","wallet":"0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"}. Exact $0.005 USDC on Base. Try unpaid POST /v1/sandbox/base-erc20-transfers first.

## Output

Returns up to 50 ERC-20 Transfer log entries for the specified token and/or wallet within the block window. Each entry includes the transaction hash, block number, token contract address, sender (from), recipient (to), raw amount (uint256 string), and human-readable amount (decimal string if decimals() was readable). Response is read-only with no side effects.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "to": {
   "type": "string",
   "description": "Transfer recipient. Indexed topic. Do not combine with wallet. EIP-55 or all one case."
  },
  "from": {
   "type": "string",
   "description": "Transfer sender. Indexed topic. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045. Do not combine with wallet."
  },
  "token": {
   "type": "string",
   "examples": [
    "0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913"
   ],
   "description": "ERC-20 contract on Base. Example: 0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913 (Circle USDC). Omit it to include every token in the window. EIP-55 or all one case."
  },
  "wallet": {
   "type": "string",
   "examples": [
    "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
   ],
   "description": "Address that must be the sender or the recipient. Do not also send from or to. Example: 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045."
  },
  "to_block": {
   "type": "string",
   "description": "Last block, inclusive, or latest. With from_block, the span must be at most 10000. Omit it to anchor a 2000-block window."
  },
  "from_block": {
   "type": "string",
   "pattern": "^(0|[1-9]\\d*)$",
   "description": "First block, inclusive. With to_block, the span must be at most 10000. Omit both for the latest 2000 blocks."
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/base-erc-20-transfer-logs-67e77031/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from agentshelf.syntexa.ch](https://www.zero.xyz/host/agentshelf.syntexa.ch/llms.txt)
