{"openapi":"3.1.0","info":{"title":"Base Wallet Lens API","version":"1.2.0","description":"Three small public-data endpoints: Base balance snapshots, webpage-to-Markdown extraction, and Base USDC receipt verification. No account or API key.","x-guidance":"POST /v1/snapshot with one public Base address, POST /v1/reader with one public HTTPS webpage URL, or POST /v1/receipt/verify with a Base transaction hash, recipient address, and minimum USDC amount. Each call costs $0.01 in USDC on Base via x402. Reader requests are forwarded to Jina Reader; do not submit private URLs or credentials. Balance and transaction data are indexed and may lag."},"servers":[{"url":"https://base-wallet-lens.bakongi.chatgpt.site"}],"paths":{"/v1/snapshot":{"post":{"operationId":"snapshotBaseUsdcAndEthBalance","summary":"Get a Base wallet balance snapshot","description":"x402 payment: exactly 0.01 USDC on Base per successful call. Address is queried against public Blockscout data; request bodies are not intentionally retained.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["address"],"additionalProperties":false,"properties":{"address":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$","description":"Public EVM address on Base."}}},"example":{"address":"0x0000000000000000000000000000000000000000"}}}},"responses":{"200":{"description":"Indexed balance snapshot","content":{"application/json":{"schema":{"type":"object","properties":{"chain":{"type":"string"},"address":{"type":"string"},"native":{"type":"object"},"usdc":{"type":"object"},"retrieved_at":{"type":"string","format":"date-time"},"source":{"type":"object"}},"required":["chain","address","native","usdc","retrieved_at","source"]}}}},"400":{"description":"Invalid JSON or address"},"402":{"description":"Payment Required; exact amount and recipient are in PAYMENT-REQUIRED"},"503":{"description":"Public indexer temporarily unavailable; retry later"}}}},"/v1/reader":{"post":{"operationId":"extractPublicPageAsMarkdown","summary":"Extract a public webpage to Markdown","description":"x402 payment: 0.01 USDC on Base per call. The submitted HTTPS URL is sent to Jina Reader, which fetches and converts the page. Requests ask Jina to check robots.txt for a wildcard and disable its caching/tracking. Do not submit private URLs, credentials, or pages whose terms prohibit automated fetching.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["url"],"additionalProperties":false,"properties":{"url":{"type":"string","format":"uri","maxLength":2048,"description":"Public HTTPS webpage URL. Credentials, private/local hosts, secret-like query parameters, and URL fragments are rejected."}}},"example":{"url":"https://example.com"}}}},"responses":{"200":{"description":"Extracted page","content":{"application/json":{"schema":{"type":"object","required":["title","url","content","fetched_at","provider"],"properties":{"title":{"type":"string"},"url":{"type":"string","format":"uri"},"content":{"type":"string","description":"Markdown, limited to 150,000 characters."},"fetched_at":{"type":"string","format":"date-time"},"provider":{"type":"string","const":"Jina Reader"},"warning":{"type":"string"}}}}}},"400":{"description":"Invalid or disallowed URL"},"402":{"description":"Payment Required; exact amount and recipient are in PAYMENT-REQUIRED"},"413":{"description":"Request body exceeds 4 KiB"},"429":{"description":"Reader request was rate limited; wait before retrying"},"502":{"description":"Reader returned invalid data"},"503":{"description":"Reader temporarily unavailable"}}}},"/v1/receipt/verify":{"post":{"operationId":"verifyBaseUsdcReceipt","summary":"Verify a Base USDC payment receipt","description":"Check public Blockscout transaction and token-transfer data for a successful transfer of canonical Circle USDC on Base to the requested recipient. An optional expected sender must also match. Returns the individual matching transfers, sum, confirmation count, and explicit boolean checks. This reports indexed chain facts only; it does not prove the payer's identity, intent, or business relationship.","x-payment-info":{"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"protocols":[{"x402":{}}]},"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","required":["transaction_hash","recipient","minimum_amount"],"additionalProperties":false,"properties":{"transaction_hash":{"type":"string","pattern":"^0x[a-fA-F0-9]{64}$"},"recipient":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"},"minimum_amount":{"type":"string","pattern":"^[0-9]+(\\.[0-9]{1,6})?$","description":"Positive USDC amount, up to 6 decimal places."},"expected_sender":{"type":"string","pattern":"^0x[a-fA-F0-9]{40}$"}}},"example":{"transaction_hash":"0x0000000000000000000000000000000000000000000000000000000000000000","recipient":"0x0000000000000000000000000000000000000000","minimum_amount":"1.25"}}}},"responses":{"200":{"description":"Indexed receipt facts and match checks","content":{"application/json":{"schema":{"type":"object","required":["verified","network","transaction_hash","checks","source","checked_at"],"properties":{"verified":{"type":"boolean"},"network":{"type":"string"},"transaction_hash":{"type":"string"},"transaction_status":{"type":"string"},"confirmations":{"type":"integer"},"timestamp":{"type":"string"},"recipient":{"type":"string"},"expected_sender":{"type":"string"},"minimum_amount":{"type":"string"},"matching_amount":{"type":"string"},"transfer_search_complete":{"type":"boolean"},"transfers":{"type":"array","items":{"type":"object"}},"checks":{"type":"object"},"reason":{"type":"string"},"source":{"type":"object"},"checked_at":{"type":"string","format":"date-time"}}}}}},"400":{"description":"Invalid JSON, transaction hash, address, or USDC amount"},"402":{"description":"Payment Required; exact amount and recipient are in PAYMENT-REQUIRED"},"503":{"description":"Public indexer temporarily unavailable; retry later"}}}}}}