{"openapi":"3.1.0","info":{"title":"Crypto wallet addresses","version":"0.1.0","description":"Blockchain address validation and normalisation — validate Ethereum and Bitcoin addresses, detect a chain from an address, apply the EIP-55 checksum, and normalise addresses to canonical form.","x-guidance":"Blockchain address validation and normalisation — validate Ethereum and Bitcoin addresses, detect a chain from an address, apply the EIP-55 checksum, and normalise addresses to canonical form. Each operation is an HTTP POST to its /v1/<operation> path with a JSON request body (see each operation's requestBody schema) and returns a JSON response. Endpoints are paid per successful call via x402 or MPP (USDC on Base); an unpaid request returns 402 with payment metadata in the WWW-Authenticate header.","contact":{"email":"hello@openverbs.com"}},"x-discovery":{"ownershipProofs":["0xb1401a71756f51464a9962db12f1eb3e9522490cd20010b06d00cf7b7770acfd5f79721f9dfdf2643f8cecd29af3bde9ec133941a386042b32d9886053a70de61b","0xc1c1f11793e18a00fcb7072421f26e89fb75b6aa517fa84370564991f4b10efa024f6f57e4e67eefd20cf46cc01fc5a62d793fa8fbcda04f26c946a3433d73f91b","0x676b474af0ef9ed4809b5d12d2e789b36e52d56215b21f601d71f76620e36ec630347116a7b2b349a3c3681e5db0fbfa76c4169a676b6d6f27864d0e5017284a1c","0xc2ab96522515ed9e9bc4f1a241b774bd48df42e951ddbf7f6aa8fc76f5a96a20421703e1ec402ce7eb1e4eabea3b6e4e4129cf39d56ea91cf4fcf38561fc94fc1c"]},"servers":[{"url":"https://wallet.openverbs.com"}],"paths":{"/health":{"get":{"summary":"Health check","security":[],"responses":{"200":{"description":"Healthy","content":{"application/json":{"schema":{"type":"object","properties":{"ok":{"type":"boolean"},"service":{"type":"string"},"version":{"type":"string"}}}}}}}}},"/v1/validate":{"post":{"summary":"Address validation","description":"Validate a blockchain address. Supply `chain` to check against a specific chain, or omit it to auto-detect. Ethereum addresses report their EIP-55 checksum state; Bitcoin covers base58check (P2PKH/P2SH) and bech32/bech32m segwit (P2WPKH/P2WSH/P2TR). A well-formed but invalid address returns `valid:false` — not an error. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["validate wallet address","ethereum address validation","bitcoin address validation","crypto address checker","blockchain address validation","check eip55 checksum"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":120,"description":"The address to validate."},"chain":{"type":"string","enum":["ethereum","bitcoin"],"description":"Optional chain to validate against."}},"required":["address"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ valid, chain, format?, type?, network?, checksum?, reason? }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ valid, chain, format?, type?, network?, checksum?, reason? }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a blockchain address. Supply `chain` to check against a specific chain, or omit it to auto-detect. Ethereum addresses report their EIP-55 checksum state; Bitcoin covers base58check (P2PKH/P2SH) and bech32/bech32m segwit (P2WPKH/P2WSH/P2TR). A well-formed but invalid address returns `valid:false` — not an error.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Validate a blockchain address. Supply `chain` to check against a specific chain, or omit it to auto-detect. Ethereum addresses report their EIP-55 checksum state; Bitcoin covers base58check (P2PKH/P2SH) and bech32/bech32m segwit (P2WPKH/P2WSH/P2TR). A well-formed but invalid address returns `valid:false` — not an error.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Validate a blockchain address. Supply `chain` to check against a specific chain, or omit it to auto-detect. Ethereum addresses report their EIP-55 checksum state; Bitcoin covers base58check (P2PKH/P2SH) and bech32/bech32m segwit (P2WPKH/P2WSH/P2TR). A well-formed but invalid address returns `valid:false` — not an error.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/detect":{"post":{"summary":"Chain detection","description":"Guess which chain an address belongs to from its shape and encoding, without requiring the caller to know it up front. Returns the chain, format and address type, or nulls when nothing matches. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["detect blockchain address","wallet chain detection","identify crypto address","bitcoin ethereum detector","address format lookup","guess address chain"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":120,"description":"The address to classify."}},"required":["address"],"additionalProperties":false}}}},"responses":{"200":{"description":"`{ chain, format, type, network? }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ chain, format, type, network? }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Guess which chain an address belongs to from its shape and encoding, without requiring the caller to know it up front. Returns the chain, format and address type, or nulls when nothing matches.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Guess which chain an address belongs to from its shape and encoding, without requiring the caller to know it up front. Returns the chain, format and address type, or nulls when nothing matches.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Guess which chain an address belongs to from its shape and encoding, without requiring the caller to know it up front. Returns the chain, format and address type, or nulls when nothing matches.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/eip55":{"post":{"summary":"EIP-55 checksum","description":"Apply the EIP-55 mixed-case checksum to an Ethereum address, regardless of its input casing. Returns the checksummed address and whether it differed from the input. Non-hex input is rejected before payment. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["eip55 checksum api","checksum ethereum address","convert eth address checksum","ethereum mixed case checksum","apply eip55","eth address normalizer"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":120,"description":"A 0x-prefixed 40-hex-digit Ethereum address."}},"required":["address"],"additionalProperties":false},"example":{"address":"0x52908400098527886E0F7030069857D2E4169EE7"}}}},"responses":{"200":{"description":"`{ address, changed }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ address, changed }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Apply the EIP-55 mixed-case checksum to an Ethereum address, regardless of its input casing. Returns the checksummed address and whether it differed from the input. Non-hex input is rejected before payment.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Apply the EIP-55 mixed-case checksum to an Ethereum address, regardless of its input casing. Returns the checksummed address and whether it differed from the input. Non-hex input is rejected before payment.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Apply the EIP-55 mixed-case checksum to an Ethereum address, regardless of its input casing. Returns the checksummed address and whether it differed from the input. Non-hex input is rejected before payment.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}},"/v1/normalize":{"post":{"summary":"Address normalisation","description":"Normalise an address to its canonical form — Ethereum to its EIP-55 checksummed form, bech32 Bitcoin to lowercase (base58check is left untouched as it is case-sensitive). An address that is not a valid address of a known chain is rejected before payment. Paid endpoint (x402 + MPP). Price: $0.004000 USDC per successful payment.","tags":["normalize wallet address","canonical crypto address","normalize ethereum address","lowercase bech32 address","wallet address canonicalization","format blockchain address"],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","minLength":1,"maxLength":120,"description":"The address to normalise."},"chain":{"type":"string","enum":["ethereum","bitcoin"],"description":"Optional chain hint."}},"required":["address"],"additionalProperties":false},"example":{"address":"0x52908400098527886E0F7030069857D2E4169EE7","chain":"ethereum"}}}},"responses":{"200":{"description":"`{ address, chain, changed }`.","content":{"application/json":{"schema":{"type":"object","description":"`{ address, chain, changed }`."}}}},"400":{"description":"Invalid request; no payment is attempted"},"402":{"description":"Payment required; x402/MPP metadata returned in headers"},"502":{"description":"Upstream provider error after payment verification"}},"x-payment-info":{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Normalise an address to its canonical form — Ethereum to its EIP-55 checksummed form, bech32 Bitcoin to lowercase (base58check is left untouched as it is case-sensitive). An address that is not a valid address of a known chain is rejected before payment.","method":"tempo","preferredOffer":"mpp-tempo","price":{"mode":"fixed","currency":"USD","amount":"0.004000"},"protocols":[{"x402":{"scheme":"exact","network":"eip155:8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"evm","intent":"charge","network":"8453","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}},{"mpp":{"method":"tempo","intent":"charge","network":"4217","currency":"0x20c000000000000000000000b9537d11c60e8b50","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}}],"network":"4217","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A","offers":[{"amount":"4000","currency":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","description":"Normalise an address to its canonical form — Ethereum to its EIP-55 checksummed form, bech32 Bitcoin to lowercase (base58check is left untouched as it is case-sensitive). An address that is not a valid address of a known chain is rejected before payment.","intent":"charge","method":"evm","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"},{"amount":"4000","currency":"0x20c000000000000000000000b9537d11c60e8b50","description":"Normalise an address to its canonical form — Ethereum to its EIP-55 checksummed form, bech32 Bitcoin to lowercase (base58check is left untouched as it is case-sensitive). An address that is not a valid address of a known chain is rejected before payment.","intent":"charge","method":"tempo","recipient":"0xb3f4de103F34b99f0Da19B4F16D6B53a14C2194A"}]}}}},"x-service-info":{"categories":["crypto"],"docs":{"homepage":"https://wallet.openverbs.com","apiReference":"https://wallet.openverbs.com/openapi.json"}}}