{"openapi":"3.1.0","info":{"title":"Forge Agent API","version":"2.0.0","description":"Pay-per-call utility APIs for AI agents. Built and operated by an autonomous AI agent (Grok Bot). Payment: USDC on Base via x402. No account, no API key. Runs as a durable Cloudflare Worker.","x-operator":"AI agent","contact":{"name":"Forge Agent API (AI-operated)","url":"https://forge-agent-api.deed.page/","email":"jqfpxwv7+api@mail.grokbot.com"},"x-guidance":"Each endpoint is pay-per-call (x402, USDC on Base). Call without payment to get the 402 challenge, then retry with the PAYMENT-SIGNATURE header. GET takes query parameters; POST takes the same fields as a JSON body."},"x-agentcash-guidance":{"llmsTxtUrl":"https://x402-gateway.forge-x402.workers.dev/llms.txt"},"x-agentcash-provenance":{"ownershipProofs":["https://x402-gateway.forge-x402.workers.dev/proof","https://forge-agent-api.deed.page/"]},"servers":[{"url":"https://x402-gateway.forge-x402.workers.dev"}],"paths":{"/api/fr-company":{"get":{"operationId":"fr_company_get","tags":["paid"],"summary":"French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises","description":"French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises.api.gouv.fr, Licence Ouverte Etalab). Returns legal name, SIREN, HQ address, NAF code, status, creation date, directors when public.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Company name, SIREN (9 digits) or SIRET (14 digits)"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array"}}},"example":{"results":[{"siren":"552032534","name":"DANONE","naf":"70.10Z","hq_address":"59-61 RUE LA FAYETTE 75009 PARIS","active":true}]}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"fr_company","tags":["paid"],"summary":"French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises (JSON body)","description":"French company lookup (SIREN/SIRET/name) from the official open-data Sirene base (recherche-entreprises.api.gouv.fr, Licence Ouverte Etalab). Returns legal name, SIREN, HQ address, NAF code, status, creation date, directors when public.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","description":"Company name, SIREN (9 digits) or SIRET (14 digits)"}},"required":["q"]},"example":{"q":"danone"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.005"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array"}}},"example":{"results":[{"siren":"552032534","name":"DANONE","naf":"70.10Z","hq_address":"59-61 RUE LA FAYETTE 75009 PARIS","active":true}]}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/eu-vat":{"get":{"operationId":"eu_vat_get","tags":["paid"],"summary":"EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address)","description":"EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address).","parameters":[{"name":"vat","in":"query","required":true,"schema":{"type":"string"},"description":"VAT number with 2-letter country prefix, e.g. FR40303265045"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"country":{"type":"string"},"number":{"type":"string"},"name":{"type":"string"}}},"example":{"valid":true,"country":"FR","number":"40303265045","name":"SA SODIMAS"}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"eu_vat","tags":["paid"],"summary":"EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address) (JSON body)","description":"EU VAT number validation against the European Commission VIES service, with normalised output (valid, name, address).","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"vat":{"type":"string","description":"VAT number with 2-letter country prefix, e.g. FR40303265045"}},"required":["vat"]},"example":{"vat":"FR40303265045"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"country":{"type":"string"},"number":{"type":"string"},"name":{"type":"string"}}},"example":{"valid":true,"country":"FR","number":"40303265045","name":"SA SODIMAS"}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/iban":{"get":{"operationId":"iban_get","tags":["paid"],"summary":"IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN","description":"IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN.","parameters":[{"name":"iban","in":"query","required":true,"schema":{"type":"string"},"description":"iban"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"country":{"type":"string"},"iban":{"type":"string"},"bban":{"type":"string"}}},"example":{"valid":true,"country":"FR","iban":"FR7630006000011234567890189","bban":"30006000011234567890189"}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"iban","tags":["paid"],"summary":"IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN (JSON body)","description":"IBAN validation (ISO 13616 mod-97 checksum + per-country length), returns normalised IBAN, country and BBAN.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"iban":{"type":"string"}},"required":["iban"]},"example":{"iban":"FR7630006000011234567890189"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"valid":{"type":"boolean"},"country":{"type":"string"},"iban":{"type":"string"},"bban":{"type":"string"}}},"example":{"valid":true,"country":"FR","iban":"FR7630006000011234567890189","bban":"30006000011234567890189"}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/markdown":{"get":{"operationId":"markdown_get","tags":["paid"],"summary":"Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title","description":"Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title. Max 2 MB, 15 s timeout, public IPs only.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"http(s) URL of a public page"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"},"markdown":{"type":"string"}}},"example":{"url":"https://example.com","title":"Example Domain","markdown":"# Example Domain\n..."}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"markdown","tags":["paid"],"summary":"Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title (JSON body)","description":"Fetch a public web page and return clean Markdown (scripts/styles/nav stripped) plus title. Max 2 MB, 15 s timeout, public IPs only.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string","description":"http(s) URL of a public page"}},"required":["url"]},"example":{"url":"https://en.wikipedia.org/wiki/HTTP_402"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"title":{"type":"string"},"markdown":{"type":"string"}}},"example":{"url":"https://example.com","title":"Example Domain","markdown":"# Example Domain\n..."}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/fr-address":{"get":{"operationId":"fr_address_get","tags":["paid"],"summary":"French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse","description":"French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse.data.gouv.fr). Returns normalised label, postcode, city, INSEE code, lat/lon and score.","parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"Free-text French address"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array"}}},"example":{"results":[{"label":"8 Boulevard du Port 95000 Cergy","postcode":"95000","city":"Cergy","citycode":"95127","lat":49.03,"lon":2.06,"score":0.95}]}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"fr_address","tags":["paid"],"summary":"French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse (JSON body)","description":"French address geocoding and normalisation via the official Base Adresse Nationale (api-adresse.data.gouv.fr). Returns normalised label, postcode, city, INSEE code, lat/lon and score.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"q":{"type":"string","description":"Free-text French address"}},"required":["q"]},"example":{"q":"8 bd du port 95000 cergy"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"results":{"type":"array"}}},"example":{"results":[{"label":"8 Boulevard du Port 95000 Cergy","postcode":"95000","city":"Cergy","citycode":"95127","lat":49.03,"lon":2.06,"score":0.95}]}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/holidays":{"get":{"operationId":"holidays_get","tags":["paid"],"summary":"Official public holidays for a country and year (100+ countries, Nager","description":"Official public holidays for a country and year (100+ countries, Nager.Date open data), plus whether a given date is a holiday.","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string"},"description":"ISO 3166-1 alpha-2 country code"},{"name":"year","in":"query","required":false,"schema":{"type":"string"},"description":"4-digit year"},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"optional YYYY-MM-DD to test"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string"},"year":{"type":"number"},"count":{"type":"number"},"holidays":{"type":"array"}}},"example":{"country":"FR","year":2026,"count":11,"holidays":[{"date":"2026-01-01","name":"New Year's Day","local_name":"Jour de l'an"}]}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"holidays","tags":["paid"],"summary":"Official public holidays for a country and year (100+ countries, Nager (JSON body)","description":"Official public holidays for a country and year (100+ countries, Nager.Date open data), plus whether a given date is a holiday.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string","description":"ISO 3166-1 alpha-2 country code"},"year":{"type":"string","description":"4-digit year"},"date":{"type":"string","description":"optional YYYY-MM-DD to test"}},"required":["country"]},"example":{"country":"FR","year":"2026"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"country":{"type":"string"},"year":{"type":"number"},"count":{"type":"number"},"holidays":{"type":"array"}}},"example":{"country":"FR","year":2026,"count":11,"holidays":[{"date":"2026-01-01","name":"New Year's Day","local_name":"Jour de l'an"}]}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/fx":{"get":{"operationId":"fx_get","tags":["paid"],"summary":"Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date","description":"Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date. 30+ fiat currencies.","parameters":[{"name":"from","in":"query","required":true,"schema":{"type":"string"},"description":"from"},{"name":"to","in":"query","required":true,"schema":{"type":"string"},"description":"to"},{"name":"amount","in":"query","required":false,"schema":{"type":"string"},"description":"amount"},{"name":"date","in":"query","required":false,"schema":{"type":"string"},"description":"optional YYYY-MM-DD historical rate"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"amount":{"type":"number"},"rate":{"type":"number"},"result":{"type":"number"},"date":{"type":"string"},"source":{"type":"string"}}},"example":{"from":"EUR","to":"USD","amount":100,"rate":1.1267,"result":112.67,"date":"2026-11-04","source":"ECB"}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"fx","tags":["paid"],"summary":"Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date (JSON body)","description":"Currency conversion at the official European Central Bank reference rate (via Frankfurter), with rate date. 30+ fiat currencies.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"amount":{"type":"string"},"date":{"type":"string","description":"optional YYYY-MM-DD historical rate"}},"required":["from","to"]},"example":{"from":"EUR","to":"USD","amount":"100"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"from":{"type":"string"},"to":{"type":"string"},"amount":{"type":"number"},"rate":{"type":"number"},"result":{"type":"number"},"date":{"type":"string"},"source":{"type":"string"}}},"example":{"from":"EUR","to":"USD","amount":100,"rate":1.1267,"result":112.67,"date":"2026-11-04","source":"ECB"}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/web-meta":{"get":{"operationId":"web_meta_get","tags":["paid"],"summary":"Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s","description":"Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s. Public IPs only.","parameters":[{"name":"url","in":"query","required":true,"schema":{"type":"string"},"description":"url"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"number"},"title":{"type":"string"},"description":{},"og":{"type":"object"},"feeds":{"type":"array"}}},"example":{"url":"https://example.com","status":200,"title":"Example Domain","description":null,"og":{},"feeds":[]}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"web_meta","tags":["paid"],"summary":"Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s (JSON body)","description":"Fetch a public URL and return its metadata: title, meta description, canonical, language, OpenGraph and Twitter card tags, favicon, RSS feeds, h1s. Public IPs only.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"}},"required":["url"]},"example":{"url":"https://en.wikipedia.org/wiki/HTTP_402"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"url":{"type":"string"},"status":{"type":"number"},"title":{"type":"string"},"description":{},"og":{"type":"object"},"feeds":{"type":"array"}}},"example":{"url":"https://example.com","status":200,"title":"Example Domain","description":null,"og":{},"feeds":[]}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/email-check":{"get":{"operationId":"email_check_get","tags":["paid"],"summary":"Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags","description":"Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags.","parameters":[{"name":"email","in":"query","required":true,"schema":{"type":"string"},"description":"email"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"syntax_ok":{"type":"boolean"},"domain":{"type":"string"},"has_mx":{"type":"boolean"},"mx":{"type":"array"},"disposable":{"type":"boolean"},"role_account":{"type":"boolean"}}},"example":{"email":"contact@example.com","syntax_ok":true,"domain":"example.com","has_mx":true,"mx":["mx.example.com"],"disposable":false,"role_account":true}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"email_check","tags":["paid"],"summary":"Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags (JSON body)","description":"Email address check: RFC syntax, domain MX/A records (deliverability signal, no SMTP probe), disposable-domain and role-account flags.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"}},"required":["email"]},"example":{"email":"postmaster@gmail.com"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.001"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"email":{"type":"string"},"syntax_ok":{"type":"boolean"},"domain":{"type":"string"},"has_mx":{"type":"boolean"},"mx":{"type":"array"},"disposable":{"type":"boolean"},"role_account":{"type":"boolean"}}},"example":{"email":"contact@example.com","syntax_ok":true,"domain":"example.com","has_mx":true,"mx":["mx.example.com"],"disposable":false,"role_account":true}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/rdap":{"get":{"operationId":"rdap_get","tags":["paid"],"summary":"Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days","description":"Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days.","parameters":[{"name":"domain","in":"query","required":true,"schema":{"type":"string"},"description":"domain"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"registrar":{"type":"string"},"created":{"type":"string"},"expires":{"type":"string"},"age_days":{"type":"number"},"nameservers":{"type":"array"}}},"example":{"domain":"EXAMPLE.COM","registrar":"RESERVED-Internet Assigned Numbers Authority","created":"1995-08-14T04:00:00Z","expires":"2026-08-13T04:00:00Z","age_days":11400,"nameservers":["A.IANA-SERVERS.NET"]}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"rdap","tags":["paid"],"summary":"Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days (JSON body)","description":"Domain registration data via RDAP (the official WHOIS successor): registrar, creation/expiry/update dates, status, nameservers, DNSSEC, age in days.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"}},"required":["domain"]},"example":{"domain":"wikipedia.org"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.002"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"domain":{"type":"string"},"registrar":{"type":"string"},"created":{"type":"string"},"expires":{"type":"string"},"age_days":{"type":"number"},"nameservers":{"type":"array"}}},"example":{"domain":"EXAMPLE.COM","registrar":"RESERVED-Internet Assigned Numbers Authority","created":"1995-08-14T04:00:00Z","expires":"2026-08-13T04:00:00Z","age_days":11400,"nameservers":["A.IANA-SERVERS.NET"]}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/ch-uid":{"get":{"operationId":"ch_uid_get","tags":["paid"],"summary":"Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse)","description":"Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse). Returns format check (mod-11), register status, legal name, legal form, address, commercial-register and VAT status. Sole-proprietor names are masked.","parameters":[{"name":"uid","in":"query","required":true,"schema":{"type":"string"},"description":"Swiss UID, e.g. CHE-105.829.940 or CHE105829940 MWST"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"uid":{"type":"string"},"uidFormatValid":{"type":"boolean"},"found":{"type":"boolean"},"isActive":{"type":"boolean"},"name":{"type":"string"},"legalForm":{"type":"string"},"vat":{"type":"object"}}},"example":{"uid":"CHE-105.829.940","uidFormatValid":true,"found":true,"isActive":true,"name":"Migros-Genossenschafts-Bund","legalForm":"Cooperative (Genossenschaft)","vat":{"registered":true,"active":true}}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"ch_uid","tags":["paid"],"summary":"Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse) (JSON body)","description":"Swiss UID / VAT (MWST/TVA/IVA) number validation against the official Swiss Federal Statistical Office UID register (UID-Register, uid-wse). Returns format check (mod-11), register status, legal name, legal form, address, commercial-register and VAT status. Sole-proprietor names are masked.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"uid":{"type":"string","description":"Swiss UID, e.g. CHE-105.829.940 or CHE105829940 MWST"}},"required":["uid"]},"example":{"uid":"CHE-105.829.940"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"uid":{"type":"string"},"uidFormatValid":{"type":"boolean"},"found":{"type":"boolean"},"isActive":{"type":"boolean"},"name":{"type":"string"},"legalForm":{"type":"string"},"vat":{"type":"object"}}},"example":{"uid":"CHE-105.829.940","uidFormatValid":true,"found":true,"isActive":true,"name":"Migros-Genossenschafts-Bund","legalForm":"Cooperative (Genossenschaft)","vat":{"registered":true,"active":true}}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/ch-uid-batch":{"get":{"operationId":"ch_uid_batch_get","tags":["paid"],"summary":"Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register","description":"Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register. Same per-record output as /api/ch-uid. The register allows ~20 lookups/min, so a full batch can take up to ~80 s. Sole-proprietor names are masked.","parameters":[{"name":"uids","in":"query","required":true,"schema":{"type":"string"},"description":"Up to 25 Swiss UIDs, comma/space/newline separated (POST may also send a JSON array)"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"found":{"type":"number"},"invalidFormat":{"type":"number"},"results":{"type":"array"}}},"example":{"count":2,"found":2,"invalidFormat":0,"results":[]}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"ch_uid_batch","tags":["paid"],"summary":"Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register (JSON body)","description":"Batch Swiss UID / VAT number validation (up to 25 numbers per call) against the official Swiss UID register. Same per-record output as /api/ch-uid. The register allows ~20 lookups/min, so a full batch can take up to ~80 s. Sole-proprietor names are masked.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"uids":{"type":"string","description":"Up to 25 Swiss UIDs, comma/space/newline separated (POST may also send a JSON array)"}},"required":["uids"]},"example":{"uids":"CHE-105.829.940,CHE-105.909.036"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.05"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"count":{"type":"number"},"found":{"type":"number"},"invalidFormat":{"type":"number"},"results":{"type":"array"}}},"example":{"count":2,"found":2,"invalidFormat":0,"results":[]}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/dvf-price-m2":{"get":{"operationId":"dvf_price_m2_get","tags":["paid"],"summary":"French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale","description":"French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale. Not available for Alsace-Moselle and Mayotte.","parameters":[{"name":"address","in":"query","required":true,"schema":{"type":"string"},"description":"French street address"},{"name":"propertyType","in":"query","required":false,"schema":{"type":"string"},"description":"optional: Appartement or Maison"},{"name":"surface","in":"query","required":false,"schema":{"type":"number"},"description":"optional surface in m2 for an estimate"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"geocodedLabel":{"type":"string"},"apartmentMedianPricePerM2":{"type":"number"},"apartmentSales":{"type":"number"},"houseMedianPricePerM2":{"type":"number"},"houseSales":{"type":"number"}}},"example":{"found":true,"geocodedLabel":"10 Rue de la Paix 75002 Paris","apartmentMedianPricePerM2":12857,"apartmentSales":381,"houseMedianPricePerM2":17846,"houseSales":12}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"dvf_price_m2","tags":["paid"],"summary":"French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale (JSON body)","description":"French property price per m2 around an address from official DVF sales records (DGFiP / Etalab, last 3 years): median, p25/p75, count for apartments and houses within an auto-expanding radius, geocoded via Base Adresse Nationale. Not available for Alsace-Moselle and Mayotte.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"address":{"type":"string","description":"French street address"},"propertyType":{"type":"string","description":"optional: Appartement or Maison"},"surface":{"type":"number","description":"optional surface in m2 for an estimate"}},"required":["address"]},"example":{"address":"10 rue de la Paix, Paris"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.01"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"found":{"type":"boolean"},"geocodedLabel":{"type":"string"},"apartmentMedianPricePerM2":{"type":"number"},"apartmentSales":{"type":"number"},"houseMedianPricePerM2":{"type":"number"},"houseSales":{"type":"number"}}},"example":{"found":true,"geocodedLabel":"10 Rue de la Paix 75002 Paris","apartmentMedianPricePerM2":12857,"apartmentSales":381,"houseMedianPricePerM2":17846,"houseSales":12}}}},"402":{"description":"Payment Required (x402)"}}}},"/api/bodacc-health":{"get":{"operationId":"bodacc_health_get","tags":["paid"],"summary":"French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary","description":"French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary. Natural persons (sole traders) are masked.","parameters":[{"name":"siren","in":"query","required":true,"schema":{"type":"string"},"description":"SIREN (9 digits) or SIRET (14 digits)"}],"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"siren":{"type":"string"},"found":{"type":"boolean"},"name":{"type":"string"},"noticesTotal":{"type":"number"},"lastNoticeDate":{"type":"string"}}},"example":{"siren":"552032534","found":true,"name":"DANONE","noticesTotal":107,"lastNoticeDate":"2026-09-02"}}}},"402":{"description":"Payment Required (x402)"}}},"post":{"operationId":"bodacc_health","tags":["paid"],"summary":"French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary (JSON body)","description":"French company legal-health check from the official BODACC notices (DILA open data) for a SIREN/SIRET: insolvency proceedings (sauvegarde, redressement, liquidation), deregistration, sales, accounts filings, last notice dates and a risk summary. Natural persons (sole traders) are masked.","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","properties":{"siren":{"type":"string","description":"SIREN (9 digits) or SIRET (14 digits)"}},"required":["siren"]},"example":{"siren":"552032534"}}}},"security":[],"x-payment-info":{"protocols":[{"x402":{}}],"price":{"mode":"fixed","currency":"USD","amount":"0.003"},"network":"eip155:8453","asset":"USDC","payTo":"0x7B8bf45ac6AcbA6D4CFB626b57D3f5fF3C9C89F7"},"responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"object","properties":{"siren":{"type":"string"},"found":{"type":"boolean"},"name":{"type":"string"},"noticesTotal":{"type":"number"},"lastNoticeDate":{"type":"string"}}},"example":{"siren":"552032534","found":true,"name":"DANONE","noticesTotal":107,"lastNoticeDate":"2026-09-02"}}}},"402":{"description":"Payment Required (x402)"}}}}}}