# Duo Data Utilities – Blockchain Address Chain Identification & Validation

> Duo Data Utilities – Blockchain Address Chain Identification & Validation is a paid API for AI agents from api.duoleads.com, paid per call via x402, $0.05/call, status unknown (last checked 2026-10-02).

Identifies which blockchain network(s) a given crypto address belongs to, validates encoding correctness (checksum, format), and returns the checksummed form with detailed failure reasons.

## Facts

- Endpoint: GET https://api.duoleads.com/v1/chain/address?utm_source=zero.xyz
- Price: $0.05/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-02
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/duo-data-utilities-blockchain-address-chain-identification-validation-8d1bcf5f
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_fX-ZYFypurOSBnuMVAjmV

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 duo-data-utilities-blockchain-address-chain-identification-validation-8d1bcf5f
```

Example prompt: Can you tell me which blockchain the address 0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045 belongs to and whether its checksum is valid?

## When to prefer this

Use this endpoint when you need deterministic, multi-chain address identification and encoding validation without running a full node — especially useful when an address could belong to multiple chains (EVM vs Tron, Bitcoin vs Litecoin), when you need the canonical EIP-55 checksummed form of an Ethereum address, or when you want the exact reason an address encoding failed. Prefer this over generic regex checks for chains requiring on-curve validation (Solana) or bech32 HRP verification (Cosmos, Bitcoin).

## Known failure modes

- Invalid or malformed address string returns valid=false with a specific reason field explaining the encoding error
- Unsupported address format returns no matches in the matches array
- Providing an expect hint for the wrong chain type results in a failed validation against that specific chain
- EVM chain_id mismatch causes EIP-1191 checksum validation to fail with explanation
- Addresses exceeding 128 characters are rejected by schema validation
- Network or payment errors return HTTP 402 or 5xx responses

## How this service works

Identify which blockchain an address belongs to and validate its encoding: EVM EIP-55 checksum, Bitcoin base58check and bech32/bech32m with witness version, Solana base58 and on-curve check, Cosmos bech32 with its HRP, Tron, XRP, Litecoin, Dogecoin, Cardano, Polkadot SS58 and Algorand. Returns every chain the address is valid for (ambiguous when several match), the checksummed form for EVM addresses, and the reason a check failed, including unrecognised_format.

## Output

Returns a JSON object with: a boolean 'valid' flag, an array of matched chains each with format, validity, and detail, a checksum object showing the checksummed EVM form and whether EIP-55/EIP-1191 was applied, an ambiguous flag if multiple chains match, and metadata including request ID, timestamp, price, and determinism flag. On failure, includes the exact reason the address encoding is invalid.

## 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"
     ],
     "type": "string"
    },
    "queryParams": {
     "type": "object",
     "required": [
      "address"
     ],
     "properties": {
      "expect": {
       "enum": [
        "evm",
        "bitcoin",
        "solana",
        "cosmos",
        "tron",
        "xrp",
        "cardano",
        "polkadot",
        "algorand",
        "litecoin",
        "dogecoin"
       ],
       "type": "string",
       "maxLength": 64,
       "description": "Restrict the check to one chain id."
      },
      "address": {
       "type": "string",
       "maxLength": 128,
       "description": "Address to identify and validate."
      },
      "chain_id": {
       "type": "string",
       "pattern": "^[+-]?\\d+$",
       "maxLength": 64,
       "description": "EVM chain id; enables EIP-1191 chain-salted checksum validation."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object",
     "required": [
      "ok",
      "route",
      "version",
      "data",
      "meta"
     ],
     "properties": {
      "ok": {
       "const": true
      },
      "data": {
       "type": "object",
       "required": [
        "valid",
        "matches",
        "checksum",
        "ambiguous"
       ],
       "properties": {
        "valid": {
         "type": "boolean"
        },
        "reason": {
         "type": "string"
        },
        "matches": {
         "type": "array",
         "items": {
          "type": "object",
          "required": [
           "chain",
           "format",
           "valid",
           "reason",
           "detail"
          ],
          "properties": {
           "chain": {
            "type": "string"
           },
           "valid": {
            "type": "boolean"
           },
           "detail": {
            "type": "object",
            "properties": {
             "hrp": {
              "type": "string"
             },
             "bytes": {
              "type": "integer"
             },
             "network": {
       
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "ok": true,
  "data": {
   "valid": true,
   "matches": [
    {
     "chain": "evm",
     "valid": true,
     "detail": {},
     "format": "hex20",
     "reason": "no_checksum"
    }
   ],
   "checksum": {
    "input_form": "lowercase",
    "checksummed": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
    "checksum_valid": true,
    "eip1191_applied": false
   },
   "ambiguous": false
  },
  "meta": {
   "price_usd": "0.05",
   "disclaimer": "Factual output of a deterministic computation over public data. Provided as is, with no warranty of accuracy, completeness or availability. Not investment, financial, legal, tax, medical or any other professional advice, and not a recommendation. Verify before relying on it. Terms: https://api.duoleads.com/terms",
   "request_id": "01K6B7Q4ZC8H3F2M9WXR5TYN0D",
   "computed_at": "2026-09-28T12:00:00.000Z",
   "deterministic": true
  },
  "route": "/v1/chain/address",
  "version": "1.0.0"
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/duo-data-utilities-blockchain-address-chain-identification-validation-8d1bcf5f/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.duoleads.com](https://www.zero.xyz/host/api.duoleads.com/llms.txt)
