{"x402Version":2,"items":[{"resource":{"url":"https://api.invoket.com/iban/resolve","description":"Verify a bank account before paying: validate an IBAN (all countries), resolve its bank and BIC, and check SEPA reachability per scheme (SCT, SCT Inst, SDD Core/B2B)","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"iban":"DE89370400440532013000"},"schema":{"properties":{"iban":{"description":"IBAN to verify, any SEPA or non-SEPA country; spaces are tolerated","type":"string"}},"required":["iban"],"type":"object"},"type":"http"},"output":{"example":{"data":{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"sepa_reachability":{"schemes":["SCT","SCT_INST","SDD_B2B","SDD_CORE"],"sct":true,"sct_inst":true,"sdd_b2b":true,"sdd_core":true},"valid":true},"provenance":{"fetched_at":"2026-06-12T09:30:00Z","freshness":{"as_of":"2026-06-11T00:00:00Z","kind":"snapshot"},"source":"national-bank-registries"}},"schema":{"properties":{"data":{"properties":{"bank":{"properties":{"bic":{"description":"ISO 9362 Business Identifier Code (BIC/SWIFT) of the account's bank","type":"string"},"name":{"type":"string"}},"required":["bic","name"],"type":"object"},"bank_code":{"type":"string"},"country":{"type":"string"},"coverage":{"description":"Data completeness: 'full' (bank resolved from a national registry) or 'structure_only' (bank not in the registry)","type":"string"},"iban":{"type":"string"},"reachable":{"description":"Whether the bank is reachable for at least one SEPA scheme (see sepa_reachability)","type":"boolean"},"sepa_reachability":{"properties":{"schemes":{"items":{"type":"string"},"type":"array"},"sct":{"description":"Reachable for SEPA Credit Transfer (SCT); null when the BIC is unknown to the EPC registry","type":"boolean"},"sct_inst":{"description":"Reachable for SEPA Instant Credit Transfer (SCT Inst); null when unknown","type":"boolean"},"sdd_b2b":{"description":"Reachable for SEPA Direct Debit B2B (SDD B2B); null when unknown","type":"boolean"},"sdd_core":{"description":"Reachable for SEPA Direct Debit Core (SDD Core); null when unknown","type":"boolean"}},"required":["schemes","sct","sct_inst","sdd_b2b","sdd_core"],"type":"object"},"valid":{"description":"Whether the IBAN passed structural and checksum (ISO 7064 mod-97) validation","type":"boolean"}},"required":["bank","bank_code","country","coverage","iban","reachable","sepa_reachability","valid"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/iban-resolve","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["iban"],"title":"Verify an IBAN and resolve its bank"}},{"resource":{"url":"https://api.invoket.com/iban/resolve/batch","description":"Verify a list of bank accounts before a payment run: validate IBANs, resolve bank and BIC, and check SEPA reachability per scheme (SCT, SCT Inst, SDD Core/B2B) for up to 500 IBANs in one call (one x402 settlement)","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"ibans":["DE89370400440532013000","FR1420041010050500013M02606"]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"ibans":{"items":{"type":"string"},"type":"array"}},"required":["ibans"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"sepa_reachability":{"schemes":["SCT","SCT_INST","SDD_B2B","SDD_CORE"],"sct":true,"sct_inst":true,"sdd_b2b":true,"sdd_core":true},"valid":true},{"iban":"FR7630006000011234567890189","issue":"BAD_CHECKSUM","valid":false}]},"provenance":{"fetched_at":"2026-06-12T09:30:00Z","freshness":{"as_of":"2026-06-11T00:00:00Z","kind":"snapshot"},"source":"national-bank-registries"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"bank":{"properties":{"bic":{"type":"string"},"name":{"type":"string"}},"required":["bic","name"],"type":"object"},"bank_code":{"type":"string"},"country":{"type":"string"},"coverage":{"type":"string"},"iban":{"type":"string"},"reachable":{"type":"boolean"},"sepa_reachability":{"properties":{"schemes":{"items":{"type":"string"},"type":"array"},"sct":{"type":"boolean"},"sct_inst":{"type":"boolean"},"sdd_b2b":{"type":"boolean"},"sdd_core":{"type":"boolean"}},"required":["schemes","sct","sct_inst","sdd_b2b","sdd_core"],"type":"object"},"valid":{"type":"boolean"}},"required":["bank","bank_code","country","coverage","iban","reachable","sepa_reachability","valid"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/iban-resolve-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":500,"minUsd":"0.01","mode":"per_unit","unitField":"ibans","unitUsd":"0.005"},"tags":["iban"],"title":"Verify a list of IBANs"}},{"resource":{"url":"https://api.invoket.com/iban/screen","description":"Screen a counterparty bank account for sanctions before onboarding or payment: flags sanctioned banks (BIC) and high-risk jurisdictions against OFAC, EU, UN and FATF lists for KYB/AML compliance","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"iban":"DE89370400440532013000"},"schema":{"properties":{"iban":{"type":"string"}},"required":["iban"],"type":"object"},"type":"http"},"output":{"example":{"data":{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","screening":{"bank_sanctioned":false,"hits":[],"jurisdiction":{"level":"clear","lists":[]},"risk":"clear"},"valid":true},"provenance":{"fetched_at":"2026-06-20T09:30:00Z","freshness":{"as_of":"2026-06-20T00:00:00Z","kind":"snapshot"},"source":"ofac-eu-un-sanctions"}},"schema":{"properties":{"data":{"properties":{"bank":{"properties":{"bic":{"type":"string"},"name":{"type":"string"}},"required":["bic","name"],"type":"object"},"bank_code":{"type":"string"},"country":{"type":"string"},"coverage":{"type":"string"},"iban":{"type":"string"},"screening":{"properties":{"bank_sanctioned":{"type":"boolean"},"hits":{"type":"array"},"jurisdiction":{"properties":{"level":{"type":"string"},"lists":{"type":"array"}},"required":["level","lists"],"type":"object"},"risk":{"type":"string"}},"required":["bank_sanctioned","hits","jurisdiction","risk"],"type":"object"},"valid":{"type":"boolean"}},"required":["bank","bank_code","country","coverage","iban","screening","valid"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/iban-screen","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["iban","sanctions"],"title":"Screen an IBAN for sanctions"}},{"resource":{"url":"https://api.invoket.com/iban/screen/batch","description":"Screen a list of counterparty bank accounts for sanctions before onboarding: sanctioned-bank (BIC) and jurisdiction risk against OFAC, EU, UN and FATF lists for up to 500 IBANs in one call (one x402 settlement)","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"ibans":["DE89370400440532013000","FR1420041010050500013M02606"]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"ibans":{"items":{"type":"string"},"type":"array"}},"required":["ibans"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","screening":{"bank_sanctioned":false,"hits":[],"jurisdiction":{"level":"clear","lists":[]},"risk":"clear"},"valid":true},{"bank_code":"033","country":"AE","coverage":"structure_only","iban":"AE070331234567890123456","screening":{"bank_sanctioned":false,"hits":[{"detail":"EU-AML","source":"EU","type":"jurisdiction"}],"jurisdiction":{"level":"high_risk","lists":["EU-AML"]},"risk":"high"},"valid":true}]},"provenance":{"fetched_at":"2026-06-20T09:30:00Z","freshness":{"as_of":"2026-06-20T00:00:00Z","kind":"snapshot"},"source":"ofac-eu-un-sanctions"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"bank":{"properties":{"bic":{"type":"string"},"name":{"type":"string"}},"required":["bic","name"],"type":"object"},"bank_code":{"type":"string"},"country":{"type":"string"},"coverage":{"type":"string"},"iban":{"type":"string"},"screening":{"properties":{"bank_sanctioned":{"type":"boolean"},"hits":{"type":"array"},"jurisdiction":{"properties":{"level":{"type":"string"},"lists":{"type":"array"}},"required":["level","lists"],"type":"object"},"risk":{"type":"string"}},"required":["bank_sanctioned","hits","jurisdiction","risk"],"type":"object"},"valid":{"type":"boolean"}},"required":["bank","bank_code","country","coverage","iban","screening","valid"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/iban-screen-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":500,"minUsd":"0.01","mode":"per_unit","unitField":"ibans","unitUsd":"0.005"},"tags":["iban","sanctions"],"title":"Screen a list of IBANs for sanctions"}},{"resource":{"url":"https://api.invoket.com/iban/repair","description":"Fix a broken or garbled IBAN before payment: recompute check digits and recover unreadable characters (?) of a degraded IBAN, ranked by known bank — for OCR and invoice ingestion","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"iban":"DE89370400440532013?00"},"schema":{"properties":{"iban":{"type":"string"}},"required":["iban"],"type":"object"},"type":"http"},"output":{"example":{"data":{"already_valid":false,"ambiguous":false,"candidates":[{"bank_known":true,"iban":"DE89370400440532013000","resolution":{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"valid":true}}],"input":"DE89370400440532013?00","repaired":true},"provenance":{"fetched_at":"2026-06-21T09:30:00Z","freshness":{"as_of":"2026-06-11T00:00:00Z","kind":"snapshot"},"source":"national-bank-registries"}},"schema":{"properties":{"data":{"properties":{"already_valid":{"type":"boolean"},"ambiguous":{"type":"boolean"},"candidates":{"items":{"properties":{"bank_known":{"type":"boolean"},"iban":{"type":"string"},"resolution":{"properties":{"bank":{"properties":{"bic":{"type":"string"},"name":{"type":"string"}},"required":["bic","name"],"type":"object"},"bank_code":{"type":"string"},"country":{"type":"string"},"coverage":{"type":"string"},"iban":{"type":"string"},"reachable":{"type":"boolean"},"valid":{"type":"boolean"}},"required":["bank","bank_code","country","coverage","iban","reachable","valid"],"type":"object"}},"required":["bank_known","iban","resolution"],"type":"object"},"type":"array"},"input":{"type":"string"},"repaired":{"type":"boolean"}},"required":["already_valid","ambiguous","candidates","input","repaired"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/iban-repair","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["iban"],"title":"Fix a broken or garbled IBAN"}},{"resource":{"url":"https://api.invoket.com/iban/repair/batch","description":"Fix a list of broken or garbled IBANs from OCR/invoice ingestion: recompute check digits and recover unreadable characters of up to 500 degraded IBANs in one call (one x402 settlement)","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"ibans":["DE89370400440532013?00","FR1420041010050500013M02606"]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"ibans":{"items":{"type":"string"},"type":"array"}},"required":["ibans"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"already_valid":false,"ambiguous":false,"candidates":[{"bank_known":true,"iban":"DE89370400440532013000","resolution":{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"valid":true}}],"input":"DE89370400440532013?00","repaired":true},{"already_valid":true,"ambiguous":false,"candidates":[{"bank_known":false,"iban":"FR1420041010050500013M02606","resolution":{"bank_code":"20041","country":"FR","coverage":"structure_only","iban":"FR1420041010050500013M02606","valid":true}}],"input":"FR1420041010050500013M02606","repaired":false}]},"provenance":{"fetched_at":"2026-06-21T09:30:00Z","freshness":{"as_of":"2026-06-11T00:00:00Z","kind":"snapshot"},"source":"national-bank-registries"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"already_valid":{"type":"boolean"},"ambiguous":{"type":"boolean"},"candidates":{"items":{"properties":{"bank_known":{"type":"boolean"},"iban":{"type":"string"},"resolution":{"properties":{"bank":{"properties":{"bic":{"type":"string"},"name":{"type":"string"}},"required":["bic","name"],"type":"object"},"bank_code":{"type":"string"},"country":{"type":"string"},"coverage":{"type":"string"},"iban":{"type":"string"},"reachable":{"type":"boolean"},"valid":{"type":"boolean"}},"required":["bank","bank_code","country","coverage","iban","reachable","valid"],"type":"object"}},"required":["bank_known","iban","resolution"],"type":"object"},"type":"array"},"input":{"type":"string"},"repaired":{"type":"boolean"}},"required":["already_valid","ambiguous","candidates","input","repaired"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/iban-repair-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":500,"minUsd":"0.01","mode":"per_unit","unitField":"ibans","unitUsd":"0.005"},"tags":["iban"],"title":"Fix a list of broken IBANs"}},{"resource":{"url":"https://api.invoket.com/phone/validate","description":"Validate and normalize a phone number offline before storing or messaging: E.164 formatting, region, national format and line type — no network call","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"country":"FR","number":"+33612345678"},"schema":{"properties":{"country":{"type":"string"},"number":{"type":"string"}},"required":["country","number"],"type":"object"},"type":"http"},"output":{"example":{"data":{"country":"FR","e164":"+33612345678","input":"+33612345678","national_format":"06 12 34 56 78","number_type":"mobile","valid":true},"provenance":{"fetched_at":"2026-06-12T09:30:00Z","freshness":{"as_of":"2025-06-01T00:00:00Z","kind":"snapshot"},"source":"libphonenumber"}},"schema":{"properties":{"data":{"properties":{"country":{"type":"string"},"e164":{"type":"string"},"input":{"type":"string"},"national_format":{"type":"string"},"number_type":{"type":"string"},"valid":{"type":"boolean"}},"required":["country","e164","input","national_format","number_type","valid"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/phone-validate","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["phone"],"title":"Validate a phone number offline"}},{"resource":{"url":"https://api.invoket.com/phone/resolve","description":"Check a phone number is active and reachable before sending an OTP or SMS, and assess fraud risk: SIM-swap and port-out (MNP) signals, SMS deliverability, non-fixed VoIP and disposable-number flags from a live HLR lookup (active line, current carrier, roaming). Live depth depends on provider coverage; a fallback may return a partial result flagged via `coverage`","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"24000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"24000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"country":"FR","number":"+33612345678"},"schema":{"properties":{"country":{"type":"string"},"number":{"type":"string"}},"required":["country","number"],"type":"object"},"type":"http"},"output":{"example":{"data":{"active":true,"carrier":{"country":"FR","mcc":"208","mnc":"01","operator":"Orange"},"country":"FR","coverage":{"complete":true},"e164":"+33612345678","input":"+33612345678","line_type":"mobile","mnp":{"ported":false},"number_type":"mobile","risk":{"absent_subscriber":false,"level":"low","non_fixed_voip":false,"recently_ported":false},"roaming":{"roaming":false},"valid":true},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"kind":"live"},"source":"hlr"}},"schema":{"properties":{"data":{"properties":{"active":{"type":"boolean"},"carrier":{"properties":{"country":{"type":"string"},"mcc":{"type":"string"},"mnc":{"type":"string"},"operator":{"type":"string"}},"required":["country","mcc","mnc","operator"],"type":"object"},"country":{"type":"string"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"e164":{"type":"string"},"input":{"type":"string"},"line_type":{"type":"string"},"mnp":{"properties":{"ported":{"type":"boolean"}},"required":["ported"],"type":"object"},"number_type":{"type":"string"},"risk":{"properties":{"absent_subscriber":{"type":"boolean"},"level":{"type":"string"},"non_fixed_voip":{"type":"boolean"},"recently_ported":{"type":"boolean"}},"required":["absent_subscriber","level","non_fixed_voip","recently_ported"],"type":"object"},"roaming":{"properties":{"roaming":{"type":"boolean"}},"required":["roaming"],"type":"object"},"valid":{"type":"boolean"}},"required":["active","carrier","country","coverage","e164","input","line_type","mnp","number_type","risk","roaming","valid"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"kind":{"type":"string"}},"required":["kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/phone-resolve","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.024","tags":["phone","fraud"],"title":"Check phone reachability and fraud risk"}},{"resource":{"url":"https://api.invoket.com/phone/resolve/batch","description":"Clean and risk-check a list of phone numbers before an SMS/OTP campaign (batch HLR): SIM-swap/port-out fraud risk, SMS reachability, carrier and line status for up to 50 numbers in one call (one x402 settlement). Per-number coverage flags partial results. Priced per number.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"25000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"25000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"numbers":[{"number":"+33612345678"},{"country":"FR","number":"0612345678"}]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"numbers":{"items":{"properties":{"number":{"type":"string"}},"required":["number"],"type":"object"},"type":"array"}},"required":["numbers"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"active":true,"carrier":{"country":"FR","mcc":"208","mnc":"01","operator":"Orange"},"country":"FR","coverage":{"complete":true},"e164":"+33612345678","input":"+33612345678","line_type":"mobile","mnp":{"ported":false},"number_type":"mobile","risk":{"absent_subscriber":false,"level":"low","non_fixed_voip":false,"recently_ported":false},"roaming":{"roaming":false},"valid":true},{"country":"FR","coverage":{"complete":false,"reason":"LOOKUP_FAILED"},"e164":"+33712345678","input":"+33712345678","number_type":"mobile","valid":true}]},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"kind":"live"},"source":"hlr"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"active":{"type":"boolean"},"carrier":{"properties":{"country":{"type":"string"},"mcc":{"type":"string"},"mnc":{"type":"string"},"operator":{"type":"string"}},"required":["country","mcc","mnc","operator"],"type":"object"},"country":{"type":"string"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"e164":{"type":"string"},"input":{"type":"string"},"line_type":{"type":"string"},"mnp":{"properties":{"ported":{"type":"boolean"}},"required":["ported"],"type":"object"},"number_type":{"type":"string"},"risk":{"properties":{"absent_subscriber":{"type":"boolean"},"level":{"type":"string"},"non_fixed_voip":{"type":"boolean"},"recently_ported":{"type":"boolean"}},"required":["absent_subscriber","level","non_fixed_voip","recently_ported"],"type":"object"},"roaming":{"properties":{"roaming":{"type":"boolean"}},"required":["roaming"],"type":"object"},"valid":{"type":"boolean"}},"required":["active","carrier","country","coverage","e164","input","line_type","mnp","number_type","risk","roaming","valid"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"kind":{"type":"string"}},"required":["kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/phone-resolve-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":50,"minUsd":"0.025","mode":"per_unit","unitField":"numbers","unitUsd":"0.02"},"tags":["phone","fraud"],"title":"Clean a phone list before a campaign"}},{"resource":{"url":"https://api.invoket.com/legal/article","description":"Check whether a French law is in force at a given date: consolidated text, status (in force / repealed / deferred) and validity dates of a code or statute article, from the official LEGI dataset — selected French codes and statutes currently ingested, expanding. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"article":"1240","code":"code-civil","date":"2024-01-01"},"schema":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"date":{"type":"string"}},"required":["article","code","date"],"type":"object"},"type":"http"},"output":{"example":{"data":{"article":"1240","code":"code-civil","coverage":{"complete":true},"date":"2024-01-01","etat":"vigueur","label":"Code civil, art. 1240","text":"Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer.","version":{"date_debut":"2016-10-01","version_id":"LEGIARTI000032041571"}},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"DILA — base LEGI (législation et réglementation consolidées)"}},"schema":{"properties":{"data":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"date":{"type":"string"},"etat":{"type":"string"},"label":{"type":"string"},"text":{"type":"string"},"version":{"properties":{"date_debut":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","version_id"],"type":"object"}},"required":["article","code","coverage","date","etat","label","text","version"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-article","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["legal"],"title":"Check if a French law is in force"}},{"resource":{"url":"https://api.invoket.com/legal/eu-act","description":"Check whether an EU law is in force at a given date: consolidated text, status and validity dates of an EU act or article by CELEX/ELI identifier, from EUR-Lex — selected EU acts currently ingested, expanding. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"article":"17","celex":"32016R0679","date":"2024-01-01"},"schema":{"properties":{"article":{"type":"string"},"celex":{"type":"string"},"date":{"type":"string"}},"required":["article","celex","date"],"type":"object"},"type":"http"},"output":{"example":{"data":{"article":"17","celex":"32016R0679","coverage":{"complete":true},"date":"2024-01-01","etat":"vigueur","label":"Règlement (UE) 2016/679 (RGPD), art. 17 — Droit à l'effacement","text":"La personne concernée a le droit d'obtenir du responsable du traitement l'effacement, dans les meilleurs délais, de données à caractère personnel la concernant et le responsable du traitement a l'obligation d'effacer ces données dans les meilleurs délais, lorsque l'un des motifs énumérés à l'article 17 s'applique.","version":{"date_debut":"2018-05-25","version_id":"32016R0679-art-17-v1"}},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"EUR-Lex / Cellar — droit de l'Union consolidé"}},"schema":{"properties":{"data":{"properties":{"article":{"type":"string"},"celex":{"type":"string"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"date":{"type":"string"},"etat":{"type":"string"},"label":{"type":"string"},"text":{"type":"string"},"version":{"properties":{"date_debut":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","version_id"],"type":"object"}},"required":["article","celex","coverage","date","etat","label","text","version"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-eu-act","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["legal"],"title":"Check if an EU law is in force"}},{"resource":{"url":"https://api.invoket.com/legal/article/batch","description":"Check whether a list of legal citations is still in force (contract review, due diligence): up to 50 article references (French LEGI codes/statutes or EU CELEX acts) at a given date in a single x402 settlement. Consolidated text, status and validity dates per item, from the currently ingested corpus — selected French codes and EU acts, expanding. No account, no key.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"refs":[{"article":"1240","code":"code-civil","date":"2024-01-01"},{"article":"17","celex":"32016R0679"}]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"refs":{"items":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"date":{"type":"string"}},"required":["article","code","date"],"type":"object"},"type":"array"}},"required":["refs"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"article":"1240","code":"code-civil","coverage":{"complete":true},"date":"2024-01-01","etat":"vigueur","label":"Code civil, art. 1240","text":"Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer.","version":{"date_debut":"2016-10-01","version_id":"LEGIARTI000032041571"}},{"article":"17","celex":"32016R0679","coverage":{"complete":true},"date":"2026-06-20","etat":"vigueur","label":"Règlement (UE) 2016/679 (RGPD), art. 17 — Droit à l'effacement","text":"La personne concernée a le droit d'obtenir du responsable du traitement l'effacement, dans les meilleurs délais, de données à caractère personnel la concernant.","version":{"date_debut":"2018-05-25","version_id":"32016R0679-art-17-v1"}}]},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"DILA — base LEGI ; EUR-Lex / Cellar — droit consolidé"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"date":{"type":"string"},"etat":{"type":"string"},"label":{"type":"string"},"text":{"type":"string"},"version":{"properties":{"date_debut":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","version_id"],"type":"object"}},"required":["article","code","coverage","date","etat","label","text","version"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-article-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":50,"minUsd":"0.01","mode":"per_unit","unitField":"refs","unitUsd":"0.005"},"tags":["legal"],"title":"Check if a list of laws is in force"}},{"resource":{"url":"https://api.invoket.com/legal/history","description":"Track how a French or EU law changed over time: get the version timeline of an article (French LEGI code/statute or EU CELEX/ELI act, from the currently ingested corpus — selected codes and acts, expanding) with each version's status (in force, repealed, superseded or deferred) and validity dates, to detect exactly when it changed. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"article":"1240","code":"code-civil"},"schema":{"properties":{"article":{"type":"string"},"code":{"type":"string"}},"required":["article","code"],"type":"object"},"type":"http"},"output":{"example":{"data":{"article":"1240","code":"code-civil","count":2,"label":"Code civil, art. 1240","versions":[{"date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006419278"},{"date_debut":"2016-10-01","etat":"vigueur","version_id":"LEGIARTI000032041571"}]},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"DILA — base LEGI (législation et réglementation consolidées)"}},"schema":{"properties":{"data":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"count":{"type":"integer"},"label":{"type":"string"},"versions":{"items":{"properties":{"date_debut":{"type":"string"},"date_fin":{"description":"End of this version's validity (exclusive); omitted when the version is still open (currently in force)","type":"string"},"etat":{"description":"LEGI status of this version, carried verbatim: 'vigueur' (in force), 'abroge' (repealed), 'modifie' (superseded by a later version), 'abroge_diff'/'vigueur_diff' (deferred)","type":"string"},"version_id":{"type":"string"}},"required":["date_debut","date_fin","etat","version_id"],"type":"object"},"type":"array"}},"required":["article","code","count","label","versions"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-history","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["legal"],"title":"List the version history of a law"}},{"resource":{"url":"https://api.invoket.com/legal/diff","description":"See exactly what changed in a French or EU law between two dates: resolves the version in force at each date and returns a structured diff of the consolidated text — word-level segments plus a git-style unified patch — with the version metadata of both endpoints. Covers the currently ingested corpus (selected French codes and EU acts, expanding). No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"article":"1240","code":"code-civil","from":"2000-01-01","to":"2026-06-20"},"schema":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["article","code","from","to"],"type":"object"},"type":"http"},"output":{"example":{"data":{"article":"1240","changed":true,"code":"code-civil","diff":{"added":0,"changed":true,"removed":3,"segments":[{"op":"equal","text":"Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer."},{"op":"delete","text":" (ancien article 1382)"}],"unified":"@@ -1 +1 @@\n-Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer. (ancien article 1382)\n\\ No newline at end of file\n+Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer.\n\\ No newline at end of file\n"},"from":"2000-01-01","from_version":{"date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006419278"},"label":"Code civil, art. 1240","to":"2026-06-20","to_version":{"date_debut":"2016-10-01","etat":"vigueur","version_id":"LEGIARTI000032041571"}},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"DILA — base LEGI (législation et réglementation consolidées)"}},"schema":{"properties":{"data":{"properties":{"article":{"type":"string"},"changed":{"description":"Whether the consolidated text differs between the two dates (false when the same version is in force at both)","type":"boolean"},"code":{"type":"string"},"diff":{"properties":{"added":{"type":"integer"},"changed":{"type":"boolean"},"removed":{"type":"integer"},"segments":{"items":{"properties":{"op":{"description":"Word-level diff operation for this segment: 'equal', 'insert' (present only at 'to') or 'delete' (present only at 'from')","type":"string"},"text":{"type":"string"}},"required":["op","text"],"type":"object"},"type":"array"},"unified":{"type":"string"}},"required":["added","changed","removed","segments","unified"],"type":"object"},"from":{"type":"string"},"from_version":{"description":"Version in force at the 'from' date, or null if none (e.g. before the first version) — the diff then shows a full insertion","properties":{"date_debut":{"type":"string"},"date_fin":{"type":"string"},"etat":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","date_fin","etat","version_id"],"type":"object"},"label":{"type":"string"},"to":{"type":"string"},"to_version":{"description":"Version in force at the 'to' date, or null if none (e.g. after full repeal) — the diff then shows a full deletion","properties":{"date_debut":{"type":"string"},"etat":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","etat","version_id"],"type":"object"}},"required":["article","changed","code","diff","from","from_version","label","to","to_version"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-diff","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["legal"],"title":"See what changed in a law between dates"}},{"resource":{"url":"https://api.invoket.com/legal/history/batch","description":"Monitor a portfolio of legal citations over time: get the version timeline (status and validity dates) of up to 100 French (LEGI) or EU (CELEX/ELI) article references in a single x402 settlement, to detect when any of them last changed. Covers the currently ingested corpus (selected French codes and EU acts, expanding). No account, no key.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"refs":[{"article":"1240","code":"code-civil"},{"article":"17","celex":"32016R0679"}]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"refs":{"items":{"properties":{"article":{"type":"string"},"code":{"type":"string"}},"required":["article","code"],"type":"object"},"type":"array"}},"required":["refs"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"article":"1240","code":"code-civil","count":2,"coverage":{"complete":true},"label":"Code civil, art. 1240","versions":[{"date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006419278"},{"date_debut":"2016-10-01","etat":"vigueur","version_id":"LEGIARTI000032041571"}]},{"article":"17","celex":"32016R0679","count":1,"coverage":{"complete":true},"label":"Règlement (UE) 2016/679 (RGPD), art. 17 — Droit à l'effacement","versions":[{"date_debut":"2018-05-25","etat":"vigueur","version_id":"32016R0679-art-17-v1"}]}]},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"DILA — base LEGI ; EUR-Lex / Cellar — droit consolidé"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"count":{"type":"integer"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"label":{"type":"string"},"versions":{"items":{"properties":{"date_debut":{"type":"string"},"date_fin":{"type":"string"},"etat":{"description":"LEGI status of this version, carried verbatim: 'vigueur' (in force), 'abroge' (repealed), 'modifie' (superseded by a later version), 'abroge_diff'/'vigueur_diff' (deferred)","type":"string"},"version_id":{"type":"string"}},"required":["date_debut","date_fin","etat","version_id"],"type":"object"},"type":"array"}},"required":["article","code","count","coverage","label","versions"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-history-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":100,"minUsd":"0.01","mode":"per_unit","unitField":"refs","unitUsd":"0.005"},"tags":["legal"],"title":"List version history for a list of laws"}},{"resource":{"url":"https://api.invoket.com/legal/diff/batch","description":"Compare a list of legal citations across two dates each: get a structured diff of the consolidated text (word-level segments plus a unified patch) for up to 50 French (LEGI) or EU (CELEX/ELI) article references in a single x402 settlement. Covers the currently ingested corpus (selected French codes and EU acts, expanding). No account, no key.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"refs":[{"article":"1240","code":"code-civil","from":"2000-01-01","to":"2026-06-20"},{"article":"17","celex":"32016R0679","from":"2018-05-25","to":"2026-06-20"}]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"refs":{"items":{"properties":{"article":{"type":"string"},"code":{"type":"string"},"from":{"type":"string"},"to":{"type":"string"}},"required":["article","code","from","to"],"type":"object"},"type":"array"}},"required":["refs"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"article":"1240","changed":true,"code":"code-civil","coverage":{"complete":true},"diff":{"added":0,"changed":true,"removed":3,"segments":[{"op":"equal","text":"Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer."},{"op":"delete","text":" (ancien article 1382)"}],"unified":"@@ -1 +1 @@\n-Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer. (ancien article 1382)\n\\ No newline at end of file\n+Tout fait quelconque de l'homme, qui cause à autrui un dommage, oblige celui par la faute duquel il est arrivé à le réparer.\n\\ No newline at end of file\n"},"from":"2000-01-01","from_version":{"date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006419278"},"label":"Code civil, art. 1240","to":"2026-06-20","to_version":{"date_debut":"2016-10-01","etat":"vigueur","version_id":"LEGIARTI000032041571"}},{"article":"17","celex":"32016R0679","changed":false,"coverage":{"complete":true},"diff":{"added":0,"changed":false,"removed":0,"segments":[{"op":"equal","text":"La personne concernée a le droit d'obtenir du responsable du traitement l'effacement, dans les meilleurs délais, de données à caractère personnel la concernant et le responsable du traitement a l'obligation d'effacer ces données dans les meilleurs délais, lorsque l'un des motifs énumérés à l'article 17 s'applique."}],"unified":""},"from":"2018-05-25","from_version":{"date_debut":"2018-05-25","etat":"vigueur","version_id":"32016R0679-art-17-v1"},"label":"Règlement (UE) 2016/679 (RGPD), art. 17 — Droit à l'effacement","to":"2026-06-20","to_version":{"date_debut":"2018-05-25","etat":"vigueur","version_id":"32016R0679-art-17-v1"}}]},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"DILA — base LEGI ; EUR-Lex / Cellar — droit consolidé"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"article":{"type":"string"},"changed":{"description":"Whether the consolidated text differs between this reference's two dates (false when the same version is in force at both)","type":"boolean"},"code":{"type":"string"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"diff":{"properties":{"added":{"type":"integer"},"changed":{"type":"boolean"},"removed":{"type":"integer"},"segments":{"items":{"properties":{"op":{"description":"Word-level diff operation for this segment: 'equal', 'insert' (present only at 'to') or 'delete' (present only at 'from')","type":"string"},"text":{"type":"string"}},"required":["op","text"],"type":"object"},"type":"array"},"unified":{"type":"string"}},"required":["added","changed","removed","segments","unified"],"type":"object"},"from":{"type":"string"},"from_version":{"properties":{"date_debut":{"type":"string"},"date_fin":{"type":"string"},"etat":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","date_fin","etat","version_id"],"type":"object"},"label":{"type":"string"},"to":{"type":"string"},"to_version":{"properties":{"date_debut":{"type":"string"},"etat":{"type":"string"},"version_id":{"type":"string"}},"required":["date_debut","etat","version_id"],"type":"object"}},"required":["article","changed","code","coverage","diff","from","from_version","label","to","to_version"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/legal-diff-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":50,"minUsd":"0.01","mode":"per_unit","unitField":"refs","unitUsd":"0.005"},"tags":["legal"],"title":"Diff a list of laws between two dates"}},{"resource":{"url":"https://api.invoket.com/climate/point","description":"Get historical weather and climate for any location (ERA5 reanalysis): 2 m temperature, total precipitation and 10 m wind at any GPS point, for any date within the rolling ~5-year ERA5 window, decoded from GRIB. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"date":"2024-07-14","lat":"48.8566","lon":"2.3522"},"schema":{"properties":{"date":{"type":"string"},"lat":{"type":"string"},"lon":{"type":"string"}},"required":["date","lat","lon"],"type":"object"},"type":"http"},"output":{"example":{"data":{"coverage":{"complete":true},"date":"2024-07-14","grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"lat":48.8566,"lon":2.3522,"precipitation":{"total_mm":0.4},"temperature":{"celsius":24.3},"wind":{"direction_deg":220.0,"speed_ms":3.1}},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2024-07-14T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"date":{"type":"string"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"lat":{"type":"number"},"lon":{"type":"number"},"precipitation":{"properties":{"total_mm":{"type":"number"}},"required":["total_mm"],"type":"object"},"temperature":{"properties":{"celsius":{"type":"number"}},"required":["celsius"],"type":"object"},"wind":{"properties":{"direction_deg":{"type":"number"},"speed_ms":{"type":"number"}},"required":["direction_deg","speed_ms"],"type":"object"}},"required":["coverage","date","grid","lat","lon","precipitation","temperature","wind"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-point","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["climate"],"title":"Get historical weather for a location"}},{"resource":{"url":"https://api.invoket.com/weather/forecast","description":"Get a weather forecast for any location up to 35 days ahead: 2 m temperature, precipitation and 10 m wind at any GPS point, decoded from GRIB. Deterministic GFS at 0.25 deg to 16 days (384 h); GEFS ensemble mean at 0.5 deg beyond, to 840 h (35 days) — the response names which source served it. A horizon_h beyond the currently available window (it shifts with ingestion cycles) is served at the latest available step, flagged lead.clamped. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"horizon_h":"600","lat":"48.8566","lon":"2.3522"},"schema":{"properties":{"horizon_h":{"description":"Forecast lead time in hours from the analysis cycle, 0-840 (35 days). Up to 384 h served from the deterministic GFS 0.25 deg run; beyond 384 h from the GEFS ensemble mean at 0.5 deg (an average of 31 members, not a single deterministic scenario). If the target falls beyond the window currently available (its exact end shifts with ingestion cycles), the request is served at the latest available step and the response sets lead.clamped=true with the valid_time actually served. Alternative: pass valid_time (RFC 3339 instant) instead — never clamped, out-of-window returns 400.","type":"string"},"lat":{"type":"string"},"lon":{"type":"string"}},"required":["horizon_h","lat","lon"],"type":"object"},"type":"http"},"output":{"example":{"data":{"coverage":{"complete":true},"grid":{"distance_km":19.4,"lat":49.0,"lon":2.5},"horizon_h":600,"lat":48.8566,"lead":{"cycle":"2026-06-20T00:00:00+00:00","horizon_h":600,"step_time":"2026-07-15T00:00:00+00:00","valid_time":"2026-07-15T00:00:00+00:00"},"lon":2.3522,"precipitation":{"total_mm":0.6},"temperature":{"celsius":21.4},"wind":{"direction_deg":250.0,"speed_ms":3.8}},"provenance":{"fetched_at":"2026-06-20T03:30:00Z","freshness":{"kind":"live"},"source":"NOAA GEFS ensemble mean (35-day, 0.5°)"}},"schema":{"properties":{"data":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"horizon_h":{"type":"integer"},"lat":{"type":"number"},"lead":{"description":"Resolved lead: analysis cycle, requested instant, lead hours, and the exact forecast step served; clamped=true when horizon_h was reduced to the latest available step","properties":{"cycle":{"type":"string"},"horizon_h":{"type":"integer"},"step_time":{"type":"string"},"valid_time":{"type":"string"}},"required":["cycle","horizon_h","step_time","valid_time"],"type":"object"},"lon":{"type":"number"},"precipitation":{"properties":{"total_mm":{"type":"number"}},"required":["total_mm"],"type":"object"},"temperature":{"properties":{"celsius":{"type":"number"}},"required":["celsius"],"type":"object"},"wind":{"properties":{"direction_deg":{"type":"number"},"speed_ms":{"type":"number"}},"required":["direction_deg","speed_ms"],"type":"object"}},"required":["coverage","grid","horizon_h","lat","lead","lon","precipitation","temperature","wind"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"kind":{"type":"string"}},"required":["kind"],"type":"object"},"source":{"description":"Which model served the response: 'GFS' (deterministic, 0.25 deg, <= 384 h) or 'NOAA GEFS ensemble mean (35-day, 0.5 deg)' beyond","type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/weather-forecast","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["weather"],"title":"Get a weather forecast for a location"}},{"resource":{"url":"https://api.invoket.com/climate/point/batch","description":"Get historical weather and climate for many locations/dates at once (ERA5 reanalysis): 2 m temperature, total precipitation and 10 m wind for many GPS point/date pairs in one call (one x402 settlement), for dates within the rolling ~5-year ERA5 window, decoded from GRIB. Per-item coverage flags partial results. No account, no key. Priced per query.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"body":{"queries":[{"date":"2024-07-14","lat":48.8566,"lon":2.3522},{"date":"2024-01-20","lat":40.7128,"lon":-74.006}]},"bodyType":"json","headers":{"accept":"application/json","content-type":"application/json"},"method":"POST","schema":{"properties":{"queries":{"items":{"properties":{"date":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["date","lat","lon"],"type":"object"},"type":"array"}},"required":["queries"],"type":"object"},"type":"http"},"output":{"example":{"data":{"count":2,"results":[{"coverage":{"complete":true},"date":"2024-07-14","grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"lat":48.8566,"lon":2.3522,"precipitation":{"total_mm":0.4},"temperature":{"celsius":24.3},"wind":{"direction_deg":220.0,"speed_ms":3.1}},{"coverage":{"complete":false,"reason":"no data at this grid cell for: temperature, precipitation, wind"},"date":"2024-01-20","lat":40.7128,"lon":-74.006}]},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2024-07-14T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"count":{"type":"integer"},"results":{"items":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"date":{"type":"string"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"lat":{"type":"number"},"lon":{"type":"number"},"precipitation":{"properties":{"total_mm":{"type":"number"}},"required":["total_mm"],"type":"object"},"temperature":{"properties":{"celsius":{"type":"number"}},"required":["celsius"],"type":"object"},"wind":{"properties":{"direction_deg":{"type":"number"},"speed_ms":{"type":"number"}},"required":["direction_deg","speed_ms"],"type":"object"}},"required":["coverage","date","grid","lat","lon","precipitation","temperature","wind"],"type":"object"},"type":"array"}},"required":["count","results"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"body":{"type":"object"},"bodyType":{"enum":["json","form-data","text"],"type":"string"},"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["POST","PUT","PATCH"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method","bodyType","body"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-point-batch","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"POST","pricing":{"baseUsd":"0.005","currency":"USD","maxUnits":500,"minUsd":"0.01","mode":"per_unit","unitField":"queries","unitUsd":"0.005"},"tags":["climate"],"title":"Get historical weather for many locations"}},{"resource":{"url":"https://api.invoket.com/climate/degree-days","description":"Get heating, cooling and growing degree-days for any location over a date range within the rolling ~5-year ERA5 window (reanalysis): energy-demand and crop-growth signals computed from daily mean temperature, decoded from GRIB. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"base":"18","from":"2024-07-01","kind":"cdd","lat":"48.8566","lon":"2.3522","to":"2024-07-31"},"schema":{"properties":{"base":{"type":"string"},"from":{"type":"string"},"kind":{"type":"string"},"lat":{"type":"string"},"lon":{"type":"string"},"to":{"type":"string"}},"required":["base","from","kind","lat","lon","to"],"type":"object"},"type":"http"},"output":{"example":{"data":{"base":18.0,"cdd":95.4,"coverage":{"complete":true},"days_counted":31,"from":"2024-07-01","lat":48.8566,"lon":2.3522,"method":"mean_temperature","to":"2024-07-31"},"provenance":{"fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"base":{"type":"number"},"cdd":{"description":"Cooling degree-days accumulated over covered days (sum of max(daily mean - base, 0)); hdd/gdd appear when requested","type":"number"},"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"days_counted":{"type":"integer"},"from":{"type":"string"},"lat":{"type":"number"},"lon":{"type":"number"},"method":{"description":"Degree-day method used: 'mean_temperature' (daily mean vs base, per NWS/EIA/WMO), reported honestly and never clipped","type":"string"},"to":{"type":"string"}},"required":["base","cdd","coverage","days_counted","from","lat","lon","method","to"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-degree-days","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["climate"],"title":"Get degree-days for a location"}},{"resource":{"url":"https://api.invoket.com/climate/aggregate","description":"Get period climate summaries for any location over a date range within the rolling ~5-year ERA5 window (reanalysis): mean, min and max temperature, total precipitation and mean wind at any GPS point, decoded from GRIB. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"from":"2024-07-01","lat":"48.8566","lon":"2.3522","to":"2024-07-31"},"schema":{"properties":{"from":{"type":"string"},"lat":{"type":"string"},"lon":{"type":"string"},"to":{"type":"string"}},"required":["from","lat","lon","to"],"type":"object"},"type":"http"},"output":{"example":{"data":{"coverage":{"complete":true},"days_counted":31,"from":"2024-07-01","grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"lat":48.8566,"lon":2.3522,"precipitation":{"total_mm":28.6},"temperature":{"max_celsius":31.2,"mean_celsius":24.3,"min_celsius":16.1},"to":"2024-07-31","wind":{"mean_direction_deg":215.0,"mean_speed_ms":3.2}},"provenance":{"fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"days_counted":{"type":"integer"},"from":{"type":"string"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"lat":{"type":"number"},"lon":{"type":"number"},"precipitation":{"properties":{"total_mm":{"description":"Total accumulated precipitation over the window (mm), not a daily mean","type":"number"}},"required":["total_mm"],"type":"object"},"temperature":{"properties":{"max_celsius":{"type":"number"},"mean_celsius":{"type":"number"},"min_celsius":{"type":"number"}},"required":["max_celsius","mean_celsius","min_celsius"],"type":"object"},"to":{"type":"string"},"wind":{"properties":{"mean_direction_deg":{"description":"Meteorological direction of the mean wind vector (degrees, where the wind comes from: 0 = north, 90 = east)","type":"number"},"mean_speed_ms":{"type":"number"}},"required":["mean_direction_deg","mean_speed_ms"],"type":"object"}},"required":["coverage","days_counted","from","grid","lat","lon","precipitation","temperature","to","wind"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-aggregate","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["climate"],"title":"Get climate summaries for a location"}},{"resource":{"url":"https://api.invoket.com/climate/indices","description":"Get climate-event indices for any location over a date range within the rolling ~5-year ERA5 window (reanalysis): frost and summer days, tropical nights, dry spells, heavy-rain days, max one-day rainfall, total precipitation and peak gust — parametric-insurance triggers computed from true daily Tmin/Tmax, decoded from GRIB. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"from":"2024-07-01","lat":"48.8566","lon":"2.3522","to":"2024-07-31"},"schema":{"properties":{"from":{"type":"string"},"lat":{"type":"string"},"lon":{"type":"string"},"to":{"type":"string"}},"required":["from","lat","lon","to"],"type":"object"},"type":"http"},"output":{"example":{"data":{"coverage":{"complete":true},"days_counted":31,"from":"2024-07-01","grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"indices":{"frost_days":0,"heavy_rain_days":1,"max_dry_spell_days":9,"max_gust_ms":18.7,"prcptot_mm":28.6,"rx1day_mm":22.4,"summer_days":18,"tropical_nights":3},"lat":48.8566,"lon":2.3522,"thresholds":{"dry_mm":1.0,"heavy_mm":10.0,"hot_celsius":25.0},"to":"2024-07-31"},"provenance":{"fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"days_counted":{"type":"integer"},"from":{"type":"string"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"indices":{"properties":{"frost_days":{"type":"integer"},"heavy_rain_days":{"type":"integer"},"max_dry_spell_days":{"type":"integer"},"max_gust_ms":{"description":"Peak 10 m wind gust over the period (m/s); null when the gust layer is not ingested for this point","type":"number"},"prcptot_mm":{"type":"number"},"rx1day_mm":{"type":"number"},"summer_days":{"description":"Days with daily maximum temperature above the hot threshold (ETCCDI SU); computed from true Tmin/Tmax, never the daily mean","type":"integer"},"tropical_nights":{"type":"integer"}},"required":["frost_days","heavy_rain_days","max_dry_spell_days","max_gust_ms","prcptot_mm","rx1day_mm","summer_days","tropical_nights"],"type":"object"},"lat":{"type":"number"},"lon":{"type":"number"},"thresholds":{"properties":{"dry_mm":{"type":"number"},"heavy_mm":{"type":"number"},"hot_celsius":{"type":"number"}},"required":["dry_mm","heavy_mm","hot_celsius"],"type":"object"},"to":{"type":"string"}},"required":["coverage","days_counted","from","grid","indices","lat","lon","thresholds","to"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-indices","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["climate"],"title":"Get climate-event indices for a location"}},{"resource":{"url":"https://api.invoket.com/climate/anomaly","description":"Get climate anomalies for any location over a date range within the rolling ~5-year ERA5 window: how far observed temperature, precipitation and wind (ERA5 reanalysis) departed from the 1991-2020 WMO normal at any GPS point, decoded from GRIB. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"from":"2024-07-01","lat":"48.8566","lon":"2.3522","to":"2024-07-31"},"schema":{"properties":{"from":{"type":"string"},"lat":{"type":"string"},"lon":{"type":"string"},"to":{"type":"string"}},"required":["from","lat","lon","to"],"type":"object"},"type":"http"},"output":{"example":{"data":{"coverage":{"complete":true},"days_counted":31,"from":"2024-07-01","grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"lat":48.8566,"lon":2.3522,"precipitation":{"anomaly_mm":-23.8,"normal_mm":52.4,"observed_mm":28.6},"reference_period":"1991-2020","temperature":{"anomaly_celsius":3.2,"normal_celsius":21.1,"observed_celsius":24.3},"to":"2024-07-31","wind":{"anomaly_speed_ms":0.2,"normal_speed_ms":3.0,"observed_speed_ms":3.2}},"provenance":{"fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"}},"required":["complete"],"type":"object"},"days_counted":{"type":"integer"},"from":{"type":"string"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"lat":{"type":"number"},"lon":{"type":"number"},"precipitation":{"properties":{"anomaly_mm":{"type":"number"},"normal_mm":{"type":"number"},"observed_mm":{"type":"number"}},"required":["anomaly_mm","normal_mm","observed_mm"],"type":"object"},"reference_period":{"description":"WMO climatological baseline the anomaly is measured against (1991-2020)","type":"string"},"temperature":{"properties":{"anomaly_celsius":{"description":"Observed minus 1991-2020 normal (°C); positive means warmer than normal","type":"number"},"normal_celsius":{"type":"number"},"observed_celsius":{"type":"number"}},"required":["anomaly_celsius","normal_celsius","observed_celsius"],"type":"object"},"to":{"type":"string"},"wind":{"properties":{"anomaly_speed_ms":{"type":"number"},"normal_speed_ms":{"type":"number"},"observed_speed_ms":{"type":"number"}},"required":["anomaly_speed_ms","normal_speed_ms","observed_speed_ms"],"type":"object"}},"required":["coverage","days_counted","from","grid","lat","lon","precipitation","reference_period","temperature","to","wind"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-anomaly","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["climate"],"title":"Get climate anomalies for a location"}},{"resource":{"url":"https://api.invoket.com/climate/return-period","description":"Rank a season against a location's ingested climate history (ERA5 reanalysis, currently a rolling ~5-year window): where a target year's seasonal mean temperature or total rainfall falls in the historical sample — percentile, empirical return period and sample size, with small samples flagged via coverage — for risk, reinsurance and climate finance. No account, no key, pay per call.","mimeType":"application/json"},"type":"http","x402Version":2,"accepts":[{"scheme":"exact","network":"eip155:8453","amount":"10000","asset":"0x833589fCD6eDb6E08f4c7C32D4f71b54bdA02913","payTo":"0x4465825B0ac713aA2Fa07Ea29023020804A128ee","maxTimeoutSeconds":60,"extra":{"name":"USD Coin","version":"2"}},{"scheme":"exact","network":"solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp","amount":"10000","asset":"EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v","payTo":"Ae1uowYSjbH47uCiZMmc51Aqxf964b1Fs4d1bjaPmMN6","maxTimeoutSeconds":60,"extra":{"domain":"invoket.com","feePayer":"GVJJ7rdGiXr5xaYbRwRbjfaJL7fmwRygFi1H6aGqDveb"}}],"lastUpdated":"2026-07-03T19:35:45Z","extensions":{"bazaar":{"info":{"input":{"headers":{"accept":"application/json"},"method":"GET","queryParams":{"lat":"48.8566","lon":"2.3522","month":"7","year":"2024"},"schema":{"properties":{"lat":{"type":"string"},"lon":{"type":"string"},"month":{"type":"string"},"year":{"type":"string"}},"required":["lat","lon","month","year"],"type":"object"},"type":"http"},"output":{"example":{"data":{"coverage":{"complete":false,"reason":"insufficient history: 5 years"},"grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"lat":48.8566,"lon":2.3522,"method":"empirical","percentile":100.0,"rank":5,"return_period_years":6.0,"sample_years":5,"season":"07-01..07-31","stat":"mean","unit":"celsius","value":24.3,"variable":"temperature","year":2024},"provenance":{"fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}},"schema":{"properties":{"data":{"properties":{"coverage":{"properties":{"complete":{"type":"boolean"},"reason":{"type":"string"}},"required":["complete","reason"],"type":"object"},"grid":{"properties":{"distance_km":{"type":"number"},"lat":{"type":"number"},"lon":{"type":"number"}},"required":["distance_km","lat","lon"],"type":"object"},"lat":{"type":"number"},"lon":{"type":"number"},"method":{"description":"Always 'empirical' in v1: rank within the sample, no extreme-value (GEV) fit","type":"string"},"percentile":{"description":"Empirical percentile of the target year within the historical sample (rank / sample_years)","type":"number"},"rank":{"type":"integer"},"return_period_years":{"description":"Empirical recurrence interval in years of a season at least this extreme, by Weibull plotting position (finite even for the record)","type":"number"},"sample_years":{"description":"Number of fully-covered historical years in the sample; always reported (a verdict on fewer than 20 years is flagged coverage.complete=false)","type":"integer"},"season":{"type":"string"},"stat":{"type":"string"},"unit":{"type":"string"},"value":{"type":"number"},"variable":{"type":"string"},"year":{"type":"integer"}},"required":["coverage","grid","lat","lon","method","percentile","rank","return_period_years","sample_years","season","stat","unit","value","variable","year"],"type":"object"},"provenance":{"properties":{"fetched_at":{"type":"string"},"freshness":{"properties":{"as_of":{"type":"string"},"kind":{"type":"string"}},"required":["as_of","kind"],"type":"object"},"source":{"type":"string"}},"required":["fetched_at","freshness","source"],"type":"object"}},"required":["data","provenance"],"type":"object"},"type":"json"}},"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","properties":{"input":{"additionalProperties":false,"properties":{"headers":{"additionalProperties":{"type":"string"},"type":"object"},"method":{"enum":["GET","HEAD","DELETE"],"type":"string"},"queryParams":{"additionalProperties":{"type":"string"},"type":"object"},"schema":{"type":"object"},"type":{"const":"http","type":"string"}},"required":["type","method"],"type":"object"},"output":{"properties":{"example":{"type":"object"},"type":{"type":"string"}},"required":["type"],"type":"object"}},"required":["input"],"type":"object"}}},"metadata":{"docUrl":"https://invoket.com/docs/api/climate-return-period","feedback":"Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.","method":"GET","priceUsd":"0.01","tags":["climate"],"title":"Rank a season in a location's climate history"}}],"pagination":{"limit":24,"offset":0,"total":24}}