# Invoket — Pre-Action Checks for AI Agents > The checks agents run before they act — verify bank accounts, phone numbers, laws in force, weather and vehicles against official sources, with provenance in every answer. You only pay for answers. Invoket gives AI agents the checks they run before acting: before paying (IBAN validation, sanctions screening, IBAN repair), before messaging (offline phone validation), before advising or signing (French and EU law in force, version history and diffs), before planning or insuring (weather forecasts, climate history and event indices), and before buying a vehicle (VIN decode, recalls, Crit'Air). Every response is computed from official sources — national bank registries and the EPC register, OFAC/EU/UN lists, LEGI and EUR-Lex, NOAA GFS/GEFS and Copernicus ERA5, NHTSA vPIC — and carries a provenance block (source, fetch time, freshness). Most single-call endpoints include one free call per day. You only pay for answers: no usable result, no charge. Invoket is an x402 payment gateway that monetizes microservices for autonomous AI agents (machine-to-machine). Each endpoint answers 402 Payment Required with an `accepts[]` array of payment options; sign one and re-submit it via the `PAYMENT-SIGNATURE` header. You are only charged on success — probing an endpoint never charges. A settled success returns a `PAYMENT-RESPONSE` header; a 2xx response that carries no usable result is not charged and returns no `PAYMENT-RESPONSE`, which you can verify mechanically. GET endpoints also accept POST with a flat JSON body mirroring the query parameters; a parameter already present in the URL query takes precedence over the body. Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. Official MCP server: run `npx -y @invoket/mcp` to expose every endpoint as a typed, auto-paying MCP tool (bring your own wallet key; it never leaves your machine, never sent to us). Docs: https://invoket.com/docs/mcp Discovery surfaces: - Catalog (x402 Bazaar): https://api.invoket.com/catalog - OpenAPI 3.1: https://api.invoket.com/openapi.json - x402 well-known: https://api.invoket.com/.well-known/x402 Website (human-readable, not machine surfaces): https://invoket.com https://invoket.com/blog Certification (public keys that verify signed certificates): https://api.invoket.com/.well-known/certificate-keys ## Endpoints ### GET /iban/resolve Before your agent pays a new bank account: validate the IBAN (all countries), resolve its bank and BIC from national bank registries, and check SEPA reachability per scheme (SCT, SCT Inst, SDD Core/B2B) against the EPC register - URL: https://api.invoket.com/iban/resolve - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/iban-resolve - Example request: GET /iban/resolve?iban=DE89370400440532013000 - Example response: {"data":{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"sepa_reachability":{"match":"exact","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+epc-sepa-registers"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /iban/resolve/batch Before a payment run: validate up to 500 IBANs in one call, resolve bank and BIC from national bank registries, and check SEPA reachability per scheme (SCT, SCT Inst, SDD Core/B2B) against the EPC register - URL: https://api.invoket.com/iban/resolve/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 500 units) - Docs: https://invoket.com/docs/api/iban-resolve-batch - Example request: POST /iban/resolve/batch {"ibans":["DE89370400440532013000","FR1420041010050500013M02606"]} - Example response: {"data":{"count":2,"results":[{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"sepa_reachability":{"match":"exact","schemes":["SCT","SCT_INST","SDD_B2B","SDD_CORE"],"sct":true,"sct_inst":true,"sdd_b2b":true,"sdd_core":true},"valid":true},{"bank":{"bic":"PSSTFRPP","name":"LA BANQUE POSTALE"},"bank_code":"20041","country":"FR","coverage":"partial","iban":"FR1420041010050500013M02606","reachable":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"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /iban/screen Before your agent onboards or pays a counterparty: screen the bank account for sanctions — flags sanctioned banks (BIC) and high-risk jurisdictions against the official OFAC, EU, UN and FATF lists, for KYB/AML compliance - URL: https://api.invoket.com/iban/screen - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/iban-screen - Example request: GET /iban/screen?iban=DE89370400440532013000 - Example response: {"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"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /iban/screen/batch Before onboarding or a payment run: screen up to 500 IBANs in one call for sanctioned banks (BIC) and high-risk jurisdictions against the official OFAC, EU, UN and FATF lists, for KYB/AML compliance - URL: https://api.invoket.com/iban/screen/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 500 units) - Docs: https://invoket.com/docs/api/iban-screen-batch - Example request: POST /iban/screen/batch {"ibans":["DE89370400440532013000","FR1420041010050500013M02606"]} - Example response: {"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"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /iban/repair Before your agent pays an IBAN taken from OCR or invoice ingestion: fix a broken or garbled IBAN — recompute check digits, recover unreadable characters (?) and rank candidates by known bank from national bank registries - URL: https://api.invoket.com/iban/repair - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/iban-repair - Example request: GET /iban/repair?iban=DE89370400440532013?00 - Example response: {"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"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /iban/repair/batch Before a payment run over OCR or invoice data: fix up to 500 broken or garbled IBANs in one call, within a total repair-effort budget — recompute check digits, recover unreadable characters and rank candidates by known bank from national bank registries. A batch whose combined '?' search space is too large is rejected with 400 BATCH_BUDGET_EXCEEDED and never charged: send fewer IBANs per call, or fewer '?' per IBAN - URL: https://api.invoket.com/iban/repair/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 500 units) - Docs: https://invoket.com/docs/api/iban-repair-batch - Example request: POST /iban/repair/batch {"ibans":["DE89370400440532013?00","FR1420041010050500013M02606"]} - Example response: {"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":true,"iban":"FR1420041010050500013M02606","resolution":{"bank":{"bic":"PSSTFRPP","name":"LA BANQUE POSTALE"},"bank_code":"20041","country":"FR","coverage":"partial","iban":"FR1420041010050500013M02606","reachable":true,"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"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /screen/entity Before your agent onboards a counterparty, signs a contract or releases a payment: screen a company or person name against the official designation lists in full - OFAC SDN and Consolidated, the EU financial sanctions list, the UN Security Council list - 26,666 entities with their aliases, programmes and designation dates. Deterministic name matching, every hit sourced to the list that published it. PEP screening, adverse media and transaction analysis are not covered. - URL: https://api.invoket.com/screen/entity - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/screen-entity - Example request: GET /screen/entity?country=DE&include_weak=false&kind=entity&name=Europäisch-Iranische Handelsbank - Example response: {"data":{"hits":[{"birth_dates":[],"id":"OFAC-SDN:25684","identifications":[{"number":"HRB 14604","type":"Registration Number"},{"number":"EIHBDEHH","type":"SWIFT/BIC"}],"kind":"entity","list_source":"OFAC-SDN","listed_on":"2018-11-05","match_type":"exact","matched_name":"EUROPAISCH-IRANISCHE HANDELSBANK AG","nationalities":[],"programs":["IFSR","IRAN","NPWMD"],"remarks":"All Offices Worldwide; (Linked To: BANK OF INDUSTRY AND MINE)"},{"birth_dates":[],"id":"EU:EU.13742.32","identifications":[],"kind":"entity","list_source":"EU-FSF","listed_on":"2025-09-29","match_type":"exact_alias","matched_name":"Europäisch-Iranische Handelsbank","nationalities":[],"programs":["IRN"]}],"limits":"Screening covers the designation lists and snapshot date reported above. No cross-list reconciliation is performed: an entity designated by several authorities is returned once per list. Politically exposed persons (PEP) and adverse media are not covered.","lists_screened":[{"entities":6017,"list":"EU-FSF"},{"entities":481,"list":"OFAC-CONS"},{"entities":19157,"list":"OFAC-SDN"},{"entities":1011,"list":"UN"}],"query":{"name":"Europäisch-Iranische Handelsbank","normalized":"europaisch iranische handelsbank"},"total_matches":2,"truncated":false,"verdict":"hit","verdict_basis":["exact","exact_alias"]},"provenance":{"fetched_at":"2026-07-30T06:08:29Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /screen/entity/batch Before onboarding a supplier book or running a payout list: screen up to 200 company or person names in one call against the official designation lists in full - OFAC SDN and Consolidated, the EU financial sanctions list, the UN Security Council list - one sourced verdict per name, with aliases, programmes and designation dates. A malformed item is flagged at its position instead of failing the batch. PEP screening, adverse media and transaction analysis are not covered. - URL: https://api.invoket.com/screen/entity/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 200 units) - Docs: https://invoket.com/docs/api/screen-entity-batch - Example request: POST /screen/entity/batch {"include_weak":false,"items":[{"name":"Europäisch-Iranische Handelsbank"},{"name":"Compagnie de Saint-Gobain"}]} - Example response: {"data":{"count":2,"limits":"Screening covers the designation lists and snapshot date reported above. No cross-list reconciliation is performed: an entity designated by several authorities is returned once per list. Politically exposed persons (PEP) and adverse media are not covered.","lists_screened":[{"entities":6017,"list":"EU-FSF"},{"entities":481,"list":"OFAC-CONS"},{"entities":19157,"list":"OFAC-SDN"},{"entities":1011,"list":"UN"}],"results":[{"hits":[{"birth_dates":[],"id":"OFAC-SDN:25684","identifications":[{"number":"EIHBDEHH","type":"SWIFT/BIC"}],"kind":"entity","list_source":"OFAC-SDN","listed_on":"2018-11-05","match_type":"exact","matched_name":"EUROPAISCH-IRANISCHE HANDELSBANK AG","nationalities":[],"programs":["IFSR","IRAN","NPWMD"],"remarks":"All Offices Worldwide; (Linked To: BANK OF INDUSTRY AND MINE)"},{"birth_dates":[],"id":"EU:EU.13742.32","identifications":[],"kind":"entity","list_source":"EU-FSF","listed_on":"2025-09-29","match_type":"exact_alias","matched_name":"Europäisch-Iranische Handelsbank","nationalities":[],"programs":["IRN"]}],"index":0,"query":{"name":"Europäisch-Iranische Handelsbank","normalized":"europaisch iranische handelsbank"},"total_matches":2,"truncated":false,"verdict":"hit","verdict_basis":["exact","exact_alias"]},{"hits":[],"index":1,"query":{"name":"Compagnie de Saint-Gobain","normalized":"compagnie de saint gobain"},"total_matches":0,"truncated":false,"verdict":"no_hit","verdict_basis":[]}],"summary":{"error":0,"hit":1,"no_hit":1,"weak_hit":0}},"provenance":{"fetched_at":"2026-07-30T06:08:38Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /screen/address Before your agent sends funds to a crypto address: check it against the sanctioned addresses published by OFAC (SDN and Consolidated) AND by the EU financial sanctions list - multi-list, where free feeds are OFAC-only - returning the designated entity, its programmes and its designation date behind every hit. Bitcoin, EVM, Tron, Solana and Monero. No transaction analysis, no clustering, no derived addresses, no risk score. - URL: https://api.invoket.com/screen/address - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/screen-address - Example request: GET /screen/address?address=3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t&chain=bitcoin - Example response: {"data":{"hits":[{"address_published":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","chain":"BTC","entity_id":"EU:EU.12747.39","entity_name":"Garantex","list_source":"EU-FSF","listed_on":"2025-02-24","programs":["UKR"]}],"limits":"Screening covers the designation lists and snapshot date reported above, and only addresses those lists publish themselves. Absence from an official list is not a safety signal. No transaction analysis, no address clustering, no derived or associated addresses, and no risk scoring are performed. EVM addresses are matched case-insensitively; the EIP-55 checksum is not verified and never causes a rejection.","lists_screened":[{"addresses":7,"list":"EU-FSF"},{"addresses":0,"list":"OFAC-CONS"},{"addresses":961,"list":"OFAC-SDN"},{"addresses":0,"list":"UN"}],"query":{"address":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","address_normalized":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","chain_family":"bitcoin","chain_family_source":"inferred"},"verdict":"sanctioned"},"provenance":{"fetched_at":"2026-07-30T06:08:59Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /screen/address/batch Before a payout run or a sweep: check up to 500 crypto addresses in one call against the sanctioned addresses published by OFAC (SDN and Consolidated) AND by the EU financial sanctions list - multi-list, where free feeds are OFAC-only - each hit carrying the designated entity, its programmes and its designation date. A malformed address is flagged at its position instead of failing the batch. No transaction analysis, no clustering, no risk score. - URL: https://api.invoket.com/screen/address/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 500 units) - Docs: https://invoket.com/docs/api/screen-address-batch - Example request: POST /screen/address/batch {"items":[{"address":"0x0330070FD38Ec3bB94F58FA55D40368271E9e54A"},{"address":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","chain":"bitcoin"}]} - Example response: {"data":{"count":2,"limits":"Screening covers the designation lists and snapshot date reported above, and only addresses those lists publish themselves. Absence from an official list is not a safety signal. No transaction analysis, no address clustering, no derived or associated addresses, and no risk scoring are performed. EVM addresses are matched case-insensitively; the EIP-55 checksum is not verified and never causes a rejection.","lists_screened":[{"addresses":7,"list":"EU-FSF"},{"addresses":0,"list":"OFAC-CONS"},{"addresses":961,"list":"OFAC-SDN"},{"addresses":0,"list":"UN"}],"results":[{"hits":[{"address_published":"0x0330070FD38Ec3bB94F58FA55D40368271E9e54A","chain":"ETH","entity_id":"OFAC-SDN:57056","entity_name":"AMNOKGANG TECHNOLOGY DEVELOPMENT COMPANY","list_source":"OFAC-SDN","listed_on":"2026-03-12","programs":["DPRK4"]}],"index":0,"query":{"address":"0x0330070FD38Ec3bB94F58FA55D40368271E9e54A","address_normalized":"0x0330070fd38ec3bb94f58fa55d40368271e9e54a","chain_family":"evm","chain_family_source":"inferred"},"verdict":"sanctioned"},{"hits":[{"address_published":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","chain":"BTC","entity_id":"EU:EU.12747.39","entity_name":"Garantex","list_source":"EU-FSF","listed_on":"2025-02-24","programs":["UKR"]}],"index":1,"query":{"address":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","address_normalized":"3My1ffQr5qQzmq4aBFgRqwRYqfB5zPAt8t","chain_family":"bitcoin","chain_family_source":"declared"},"verdict":"sanctioned"}],"summary":{"error":0,"not_listed":0,"sanctioned":2}},"provenance":{"fetched_at":"2026-07-30T06:09:06Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /preflight/payment Run every check on a bank transfer before your agent executes it, in one call: IBAN validity, bank and BIC from national registries, SEPA scheme reachability from the EPC register, sanctions screening of the bank and of its jurisdiction (OFAC, EU, UN, FATF), and screening of the beneficiary name against the OFAC, EU and UN designation lists. Returns a verdict - stop, review, insufficient_coverage, ok - with every reason attached to its block and its dated source. - URL: https://api.invoket.com/preflight/payment - Price: $0.05 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/preflight-payment - Example request: GET /preflight/payment?beneficiary_name=Europäisch-Iranische Handelsbank&iban=DE89370400440532013000&include_weak=false - Example response: {"data":{"bank_screening":{"coverage":"screened","screening":{"bank_sanctioned":false,"hits":[],"jurisdiction":{"level":"clear","lists":[]},"risk":"clear"}},"iban":{"bank":{"bic":"COBADEFFXXX","name":"Commerzbank"},"bank_code":"37040044","country":"DE","coverage":"full","iban":"DE89370400440532013000","reachable":true,"sepa_reachability":{"match":"exact","schemes":["SCT","SCT_INST","SDD_B2B","SDD_CORE"],"sct":true,"sct_inst":true,"sdd_b2b":true,"sdd_core":true},"valid":true},"limits":"This is a control outcome, not a payment instruction: 'stop' and 'review' report what the checks found, and the decision to pay remains the caller's. The beneficiary name is screened against designation lists only — the account holder's name is never verified with the beneficiary bank (Verification of Payee under the EU Instant Payments Regulation is out of scope). Company identity, VAT status and e-invoicing capability are not covered.","name_screening":{"coverage":"screened","lists_screened":[{"entities":6017,"list":"EU-FSF"},{"entities":481,"list":"OFAC-CONS"},{"entities":19157,"list":"OFAC-SDN"},{"entities":1011,"list":"UN"}],"screening":{"hits":[{"birth_dates":[],"id":"OFAC-SDN:25684","identifications":[{"number":"EIHBDEHH","type":"SWIFT/BIC"}],"kind":"entity","list_source":"OFAC-SDN","listed_on":"2018-11-05","match_type":"exact","matched_name":"EUROPAISCH-IRANISCHE HANDELSBANK AG","nationalities":[],"programs":["IFSR","IRAN","NPWMD"],"remarks":"All Offices Worldwide; (Linked To: BANK OF INDUSTRY AND MINE)"},{"birth_dates":[],"id":"EU:EU.13742.32","identifications":[],"kind":"entity","list_source":"EU-FSF","listed_on":"2025-09-29","match_type":"exact_alias","matched_name":"Europäisch-Iranische Handelsbank","nationalities":[],"programs":["IRN"]}],"query":{"name":"Europäisch-Iranische Handelsbank","normalized":"europaisch iranische handelsbank"},"total_matches":2,"truncated":false,"verdict":"hit","verdict_basis":["exact","exact_alias"]}},"query":{"beneficiary_name":"Europäisch-Iranische Handelsbank","iban":"DE89370400440532013000","include_weak":false},"sources":[{"as_of":"2026-07-25","source":"national-bank-registries"},{"as_of":"2026-06-11","source":"epc-sepa-registers"},{"as_of":"2026-07-27","source":"ofac-eu-un-sanctions"},{"as_of":"2026-07-28","source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}],"verdict":"stop","verdict_reasons":[{"block":"name_screening","code":"NAME_HIT","detail":"the beneficiary name matches a designated entity","severity":"stop"}]},"provenance":{"fetched_at":"2026-07-30T06:13:17Z","freshness":{"as_of":"2026-06-11T00:00:00Z","kind":"snapshot"},"source":"national-bank-registries+epc-sepa-registers+ofac-eu-un-sanctions+ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /phone/validate Before your agent stores or messages a phone number: validate and normalize it offline — E.164 formatting, region, national format and line type from Google's libphonenumber metadata, no network call - URL: https://api.invoket.com/phone/validate - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/phone-validate - Example request: GET /phone/validate?country=FR&number=+33612345678 ext. 123 - Example response: {"data":{"country":"FR","country_code":33,"e164":"+33612345678","extension":"123","input":"+33612345678 ext. 123","national_format":"06 12 34 56 78 ext. 123","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"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /legal/article Before your agent cites, advises on or drafts against a French law: check the article is in force at a given date — consolidated text, status (in force / repealed / deferred) and validity dates, from the official Légifrance LEGI dataset. Covers 12 major French codes and statutes (civil, labor, commercial, tax/CGI and more). - URL: https://api.invoket.com/legal/article - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/legal-article - Example request: GET /legal/article?article=1240&code=code-civil&date=2024-01-01 - Example response: {"data":{"article":"1240","code":"code-civil","coverage":{"complete":true},"coverage_window":{"from":"1804-03-21"},"date":"2024-01-01","etat":"vigueur","in_force_at_date":true,"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)"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /legal/eu-act Before your agent advises on EU compliance or cites EU law: check an act or article is in force at a given date, by CELEX or ELI identifier — consolidated text, status, validity dates and the staggered date it becomes APPLICABLE (in force is not the same thing: the AI Act is in force since 2024-08-01, but its Article 50 only applies from 2026-08-02), from the official EUR-Lex dataset. Covers key EU digital and financial acts (GDPR, DSA, AI Act, MiCA and more). - URL: https://api.invoket.com/legal/eu-act - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/legal-eu-act - Example request: GET /legal/eu-act?article=17&celex=32016R0679&date=2024-01-01 - Example response: {"data":{"applicability_scope":"act","applicability_source":"Regulation (EU) 2016/679, Article 99(2): \"It shall apply from 25 May 2018.\"","applicable_at_date":true,"applicable_from":"2018-05-25","article":"17","celex":"32016R0679","coverage":{"complete":true},"coverage_window":{"from":"2016-05-04"},"date":"2024-01-01","etat":"vigueur","in_force_at_date":true,"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":"2016-05-24","version_id":"32016R0679-art-17"}},"provenance":{"fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2026-06-05T00:00:00Z","kind":"snapshot"},"source":"EUR-Lex / Cellar — droit de l'Union consolidé"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /legal/article/batch Before your agent signs off a contract review or a due-diligence memo: check that up to 50 legal citations are still in force at a given date in one call — consolidated text, status and validity dates per reference, from the official LEGI (French law) and EUR-Lex (EU law) datasets. Covers 12 major French codes and statutes and key EU acts (GDPR, DSA, AI Act, MiCA and more). - URL: https://api.invoket.com/legal/article/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 50 units) - Docs: https://invoket.com/docs/api/legal-article-batch - Example request: POST /legal/article/batch {"refs":[{"article":"1240","code":"code-civil","date":"2024-01-01"},{"article":"17","celex":"32016R0679"}]} - Example response: {"data":{"count":2,"results":[{"article":"1240","code":"code-civil","coverage":{"complete":true},"date":"2024-01-01","etat":"vigueur","in_force_at_date":true,"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"}},{"applicability_scope":"act","applicability_source":"Regulation (EU) 2016/679, Article 99(2)","applicable_at_date":true,"applicable_from":"2018-05-25","article":"17","celex":"32016R0679","coverage":{"complete":true},"date":"2026-06-20","etat":"vigueur","in_force_at_date":true,"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é"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /legal/history Before your agent relies on a stored legal citation or watches a provision for change: the full version timeline of a French or EU article — each version's status (in force, repealed, superseded, deferred) and validity dates, from the official LEGI and EUR-Lex datasets — to detect exactly when it changed. Covers 12 major French codes and statutes and key EU acts (GDPR, DSA, AI Act, MiCA and more). - URL: https://api.invoket.com/legal/history - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/legal-history - Example request: GET /legal/history?article=1240&code=code-civil - Example response: {"data":{"article":"1240","code":"code-civil","count":2,"coverage_window":{"from":"1804-03-21"},"label":"Code civil, art. 1240","versions":[{"continuity":"same_article","date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006437044"},{"continuity":"renumbered","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)"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /legal/diff Before your agent updates a contract clause or a compliance rule that depends on a law: see exactly what changed in a French or EU article between two dates — resolves the version in force at each date, from the official LEGI and EUR-Lex datasets, and returns a word-level diff plus a git-style unified patch with both versions' metadata. Covers 12 major French codes and statutes and key EU acts (GDPR, DSA, AI Act, MiCA and more). - URL: https://api.invoket.com/legal/diff - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/legal-diff - Example request: GET /legal/diff?article=1240&code=code-civil&from=2000-01-01&to=2026-06-20 - Example response: {"data":{"article":"1240","changed":true,"code":"code-civil","diff":{"added":18,"changed":true,"removed":22,"segments":[{"op":"delete","text":"Le paiement"},{"op":"insert","text":"Tout"},{"op":"equal","text":" fait "}],"unified":"@@ -1 +1 @@\n-Le paiement fait de bonne foi à celui qui est en possession de la créance est valable, encore que le possesseur en soit par la suite évincé.\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"},"differs":true,"from":"2000-01-01","from_in_force":true,"from_version":{"continuity":"same_article","date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006437044"},"in_force_changed":false,"label":"Code civil, art. 1240","renumbering_suspected":true,"status_changed":true,"to":"2026-06-20","to_in_force":true,"to_version":{"continuity":"renumbered","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)"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /legal/history/batch Before your agent re-certifies a legal knowledge base or monitors a portfolio of citations: the version timeline (status and validity dates) of up to 100 French or EU article references in one call, from the official LEGI and EUR-Lex datasets, to detect which references changed and when. Covers 12 major French codes and statutes and key EU acts (GDPR, DSA, AI Act, MiCA and more). - URL: https://api.invoket.com/legal/history/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 100 units) - Docs: https://invoket.com/docs/api/legal-history-batch - Example request: POST /legal/history/batch {"refs":[{"article":"1240","code":"code-civil"},{"article":"17","celex":"32016R0679"}]} - Example response: {"data":{"count":2,"results":[{"article":"1240","code":"code-civil","count":2,"coverage":{"complete":true},"label":"Code civil, art. 1240","versions":[{"continuity":"same_article","date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006437044"},{"continuity":"renumbered","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é"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /legal/diff/batch Before your agent re-runs a contract review or due diligence after time has passed: a structured diff of the consolidated text — word-level segments plus a git-style unified patch — for up to 50 French or EU article references, each between its own two dates, in one call, from the official LEGI and EUR-Lex datasets. Covers 12 major French codes and statutes and key EU acts (GDPR, DSA, AI Act, MiCA and more). - URL: https://api.invoket.com/legal/diff/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 50 units) - Docs: https://invoket.com/docs/api/legal-diff-batch - Example request: POST /legal/diff/batch {"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"}]} - Example response: {"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"},"differs":true,"from":"2000-01-01","from_in_force":true,"from_version":{"date_debut":"1804-03-21","date_fin":"2016-10-01","etat":"modifie","version_id":"LEGIARTI000006419278"},"in_force_changed":false,"label":"Code civil, art. 1240","status_changed":true,"to":"2026-06-20","to_in_force":true,"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":[],"unified":""},"differs":false,"from":"2018-05-25","from_in_force":true,"from_version":{"date_debut":"2018-05-25","etat":"vigueur","version_id":"32016R0679-art-17-v1"},"in_force_changed":false,"label":"Règlement (UE) 2016/679 (RGPD), art. 17 — Droit à l'effacement","status_changed":false,"to":"2026-06-20","to_in_force":true,"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é"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /legal/deadline Before your agent commits to a filing date, a notice period or a contractual term: the exact due date of a time limit under an explicitly chosen computation regime — calendar days, calendar days with rollover, business days (Mon-Sat), working days (Mon-Fri), clear days (jours francs), months or years — with every weekend and public holiday it skipped, each one named, the end-of-month and next-working-day rules it applied, and the step-by-step reasoning. Holiday calendars for 10 countries: France from the official State dataset, the nine others from a community reference dataset, and every answer says which authority it used. The regime is required and never inferred from the legal matter. - URL: https://api.invoket.com/legal/deadline - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/legal-deadline - Example request: GET /legal/deadline?country=FR&duration=5®ime=working_days&start=2026-05-06 - Example response: {"data":{"calendar":{"as_of":"2026-07-28","authority":"official","country":"FR","window":{"from":"2015-01-01","to":"2029-12-31"}},"calendar_consulted":true,"days_counted":5,"due_date":"2026-05-15","duration":5,"legal_basis":[{"article":"641","available_in_corpus":false,"code":"code-de-procedure-civile","jurisdiction":"FR","rule":"the day of the act is not counted; a term expressed in months or years expires on the day bearing the same day-of-month"},{"article":"642","available_in_corpus":false,"code":"code-de-procedure-civile","jurisdiction":"FR","rule":"a term expiring on a Saturday, a Sunday, a public holiday or a non-working day is extended to the next working day"}],"legal_basis_note":"text `code-de-procedure-civile` is not part of the ingested corpus today: the citation is exact, but `/legal/article` cannot serve its text yet","limits":["The computation regime is chosen by the caller and never inferred from the legal matter: this endpoint dates a term, it does not advise which term or which regime applies.","Computation is in civil days, without time of day: hourly time limits, court closing hours, judicial vacations and non-working days set by contract or collective agreement are out of scope.","Holiday calendars carry their own authority: `official` is the calendar published by the State, `community_dataset` is an open dataset used as a reference and has no official standing."],"regime":"working_days","rollover_applied":false,"skipped_days":[{"date":"2026-05-08","kind":"public_holiday","name":"Victory in Europe Day","name_local":"8 mai"},{"date":"2026-05-09","kind":"weekend","name":"Sat"},{"date":"2026-05-10","kind":"weekend","name":"Sun"},{"date":"2026-05-14","kind":"public_holiday","name":"Ascension Day","name_local":"Ascension"}],"start_date":"2026-05-06","start_date_effective":"2026-05-07","steps":["day of the act 2026-05-06 is not counted (art. 641 CPC): counting starts on the next day","5 working days (Monday to Friday, public holidays excluded) counted: 2026-05-07 to 2026-05-15, 4 day(s) skipped","regime `working_days` applies no rollover: due date stands at 2026-05-15"],"unit":"days"},"provenance":{"fetched_at":"2026-07-28T09:30:00Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"official-holiday-calendars"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /legal/transposition Before your agent relies on an EU directive producing effects in a Member State: in force, applicable and transposed are three different things. This returns the national implementing measures a Member State has notified to the European Commission for an EU act — each measure with its national act type, title, national reference, publication and notification dates — plus the published transposition deadline and how many days the first notification came after it (positive means late). Ask for one country, or omit it for a one-line verdict on each of the 30 EEA States. What is served is a register of notifications, never an assessment of conformity. - URL: https://api.invoket.com/legal/transposition - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/legal-transposition - Example request: GET /legal/transposition?celex=32019L0790&country=FR - Example response: {"data":{"act":{"act_type":"directive","celex":"32019L0790","transposition_deadline":"2021-06-07","transposition_deadlines":["2021-06-07"]},"country":"FR","deadline_gap_days":-587,"first_measure_notified_on":"2019-10-29","limits":["Measures are those notified to the European Commission by the Member State; this is a register of notifications, not an assessment of conformity or completeness.","`no_measures_notified` means nothing is recorded for this act; it does not mean the directive is untransposed in national law, which may transpose it through pre-existing or unnotified provisions.","Direct effect (vertical), consistent interpretation and State liability are out of scope: an untransposed directive is not without legal effect, and this endpoint draws no conclusion on national applicability.","Country coverage follows the addressees of each act: a non-EEA country carrying no measure for the requested act is served as `out_of_scope`. Enlargements and withdrawals (Brexit) are not reconstructed act by act, so a current Member State is never reported out of scope even where it predates its own accession."],"measure_count":8,"measures":[{"celex_ntm":"72019L0790FRA_278035","national_act_type":"Loi","national_ref":"MICX1902858L","notified_on":"2019-10-29","publication_date":"2019-07-26","title":"LOI no 2019-775 du 24 juillet 2019 tendant à créer un droit voisin au profit des agences de presse et des éditeurs de presse (1)"},{"celex_ntm":"72019L0790FRA_202103614","national_act_type":"Ordonnance","national_ref":"MICB2106674R","notified_on":"2021-08-02","publication_date":"2021-05-13","title":"Ordonnance n° 2021-580 du 12 mai 2021 portant transposition du 6 de l'article 2 et des articles 17 à 23 de la directive 2019/790 (NOR : MICB2106674R) JORF n°0111 du 13 mai 2021"}],"status":"measures_notified"},"provenance":{"fetched_at":"2026-07-28T09:30:00Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"eur-lex-ntm"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /climate/point Before your agent verifies a weather-dependent claim, backtests a parametric trigger or checks what conditions a site or shipment faced: daily 2 m temperature, total precipitation and 10 m wind at any GPS point or city for a past date, from the Copernicus ERA5 reanalysis — temperature and precipitation cover a rolling 30-year window, wind a rolling ~5-year window — with the served grid cell and a coverage flag. - URL: https://api.invoket.com/climate/point - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/climate-point - Example request: GET /climate/point?city=Monaco&date=2022-07-14 - Example response: {"data":{"coverage":{"complete":true},"date":"2022-07-14","grid":{"distance_km":6.47,"lat":43.75,"lon":7.5},"lat":43.73718,"location":{"admin1":"00","country":"MC","lat":43.73718,"lon":7.42145,"name":"Monaco","source":"GeoNames"},"lon":7.42145,"precipitation":{"total_mm":0.25},"temperature":{"celsius":25.03},"wind":{"direction_deg":208.3,"speed_ms":0.71}},"provenance":{"dataset":"era5","fetched_at":"2026-07-03T22:06:21Z","freshness":{"as_of":"2022-07-14T00:00:00Z","kind":"snapshot"},"source":"ERA5"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /weather/forecast Before your agent schedules a delivery, plans outdoor work or hedges short-term weather exposure: a point forecast of 2 m temperature, precipitation and 10 m wind — plus opt-in convective, humidity, cloud and snow variables — for any GPS point or city. Deterministic NOAA GFS at 0.25 deg to 16 days (384 h), NOAA GEFS ensemble mean at 0.5 deg to 35 days (840 h) — beyond 16 days the value is an ensemble mean with smoothed extremes: trend, not threshold triggers. The lead selector is optional (omitted, the forecast defaults to the current analysis time) and the response names the model that served it and the exact forecast step. - URL: https://api.invoket.com/weather/forecast - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/weather-forecast - Example request: GET /weather/forecast?city=Zurich&horizon_h=24&variables=temperature,precipitation,wind,convective,humidity,clouds,snow - Example response: {"data":{"clouds":{"total_cover_pct":35.0},"convective":{"cape_jkg":640.0,"cin_jkg":-18.0,"inhibited":false,"risk":"low"},"coverage":{"complete":true},"grid":{"distance_km":12.8,"lat":47.25,"lon":8.5},"horizon_h":24,"humidity":{"relative_pct":58.0},"lat":47.36667,"lead":{"cycle":"2026-07-05T00:00:00+00:00","horizon_h":24,"step_time":"2026-07-06T00:00:00+00:00","valid_time":"2026-07-06T00:00:00+00:00"},"location":{"admin1":"ZH","country":"CH","lat":47.36667,"lon":8.55,"name":"Zürich","source":"GeoNames"},"lon":8.55,"precipitation":{"total_mm":0.0},"snow":{"depth_m":0.0,"is_snow":false},"temperature":{"celsius":22.8},"wind":{"direction_deg":215.0,"speed_ms":2.7}},"provenance":{"dataset":"gfs","fetched_at":"2026-07-05T04:35:00Z","freshness":{"kind":"live"},"source":"GFS"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /weather/forecast/daily Before your agent plans a multi-day operation — logistics, construction, an event, crop work: a day-by-day forecast for any GPS point or city, with daily minimum and maximum 2 m temperature, total precipitation and peak 10 m wind per UTC calendar day, from today to the end of the NOAA GFS window (~16 days), extendable to 35 days on the NOAA GEFS ensemble mean — those extra days are an average of ~30 members, so their extremes are smoothed: trend, not threshold triggers. Each day names the model that served it and carries a coverage flag. - URL: https://api.invoket.com/weather/forecast/daily - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/weather-forecast-daily - Example request: GET /weather/forecast/daily?days=3&lat=43.7031&lon=7.2661 - Example response: {"data":{"coverage":{"complete":true},"days":[{"coverage":{"complete":true},"dataset":"gfs","date":"2026-07-04","precipitation_sum_mm":0.4,"source":"GFS","steps_used":8,"temperature_max_c":27.8,"temperature_min_c":21.4,"wind_speed_max_ms":6.2},{"coverage":{"complete":true},"dataset":"gfs","date":"2026-07-05","precipitation_sum_mm":1.4,"source":"GFS","steps_used":8,"temperature_max_c":29.3,"temperature_min_c":22.1,"wind_speed_max_ms":5.1},{"coverage":{"complete":true},"dataset":"gfs","date":"2026-07-06","precipitation_sum_mm":0.0,"source":"GFS","steps_used":8,"temperature_max_c":28.6,"temperature_min_c":22.8,"wind_speed_max_ms":4.7}],"from":"2026-07-04","grid":{"distance_km":5.9,"lat":43.75,"lon":7.25},"lat":43.7031,"lead":{"cycle":"2026-07-04T00:00:00+00:00"},"lon":7.2661,"to":"2026-07-06"},"provenance":{"dataset":"gfs","fetched_at":"2026-07-04T06:05:00Z","freshness":{"kind":"live"},"source":"GFS"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /weather/forecast/batch Before your agent plans across a whole network — fleet routing, multi-site operations, portfolio hedging: 2 m temperature, precipitation and 10 m wind forecasts for up to 500 point + lead-time queries in one call, from the deterministic NOAA GFS run (~16 days). Each query takes lat+lon or a city name plus an optional lead selector (omitted, it defaults to the current analysis time); an uncovered item is flagged via per-item coverage instead of failing the batch. - URL: https://api.invoket.com/weather/forecast/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 500 units) - Docs: https://invoket.com/docs/api/weather-forecast-batch - Example request: POST /weather/forecast/batch {"queries":[{"city":"Medellin","horizon_h":24},{"horizon_h":72,"lat":25.2854,"lon":51.531},{"lat":19.4326,"lon":-99.1332,"valid_time":"2026-09-01T12:00:00Z"}]} - Example response: {"data":{"count":3,"results":[{"coverage":{"complete":true},"grid":{"distance_km":7.1,"lat":6.25,"lon":-75.5},"horizon_h":24,"lat":6.2518,"lead":{"cycle":"2026-07-04T00:00:00+00:00","horizon_h":24,"step_time":"2026-07-05T00:00:00+00:00","valid_time":"2026-07-05T00:00:00+00:00"},"location":{"admin1":"02","country":"CO","lat":6.2518,"lon":-75.5636,"name":"Medellín","source":"GeoNames"},"lon":-75.5636,"precipitation":{"total_mm":2.1},"temperature":{"celsius":19.4},"wind":{"direction_deg":112.0,"speed_ms":1.8}},{"coverage":{"complete":true},"grid":{"distance_km":4.8,"lat":25.25,"lon":51.5},"horizon_h":72,"lat":25.2854,"lead":{"cycle":"2026-07-04T00:00:00+00:00","horizon_h":72,"step_time":"2026-07-07T00:00:00+00:00","valid_time":"2026-07-07T00:00:00+00:00"},"lon":51.531,"precipitation":{"total_mm":0.0},"temperature":{"celsius":34.7},"wind":{"direction_deg":330.0,"speed_ms":4.3}},{"coverage":{"complete":false,"reason":"requested lead time is outside the available forecast window 2026-07-04T00:00:00+00:00..2026-07-20T00:00:00+00:00"},"lat":19.4326,"lon":-99.1332,"valid_time":"2026-09-01T12:00:00+00:00"}]},"provenance":{"dataset":"gfs","fetched_at":"2026-07-04T06:05:00Z","freshness":{"kind":"live"},"source":"GFS"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /weather/forecast/exceedance Before your agent commits to a rain-or-shine decision two to five weeks out — a parametric payout, a shipping window, a harvest or concrete slot: how many NOAA GEFS ensemble members cross your threshold on each day of the ensemble tail. Ask 'at least 30 mm of rain in a day', 'wind at or above 15 m/s' or 'a day at or below 0 deg C' for any GPS point or city, and get one counted fraction per UTC calendar day with the member count behind it. Ask days= (up to 20) for the whole tail. This is what the ensemble MEAN served by GET /weather/forecast cannot answer: averaging the members smooths extremes away, so a mean day essentially never crosses a threshold. What is served here is a raw counted fraction, not a calibrated probability — no bias correction or statistical post-processing is applied, and members_total is served on every day so the number can be audited. - URL: https://api.invoket.com/weather/forecast/exceedance - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/weather-forecast-exceedance - Example request: GET /weather/forecast/exceedance?city=Manila&comparison=at_least&days=3&threshold=30&variable=precipitation - Example response: {"data":{"comparison":"at_least","coverage":{"complete":false,"reason":"1 served day(s) have partial coverage"},"days":[{"coverage":{"complete":false,"reason":"day starts before the ensemble window (covered from 2026-08-24T06:00:00+00:00)"},"date":"2026-08-24","members_exceeding":7,"members_total":31,"probability":0.2258,"statistic":"daily_sum","steps_used":4},{"coverage":{"complete":true},"date":"2026-08-25","members_exceeding":9,"members_total":31,"probability":0.2903,"statistic":"daily_sum","steps_used":4},{"coverage":{"complete":true},"date":"2026-08-26","members_exceeding":11,"members_total":31,"probability":0.3548,"statistic":"daily_sum","steps_used":4}],"from":"2026-08-24","grid":{"distance_km":11.74,"lat":14.5,"lon":121.0},"lat":14.6042,"lead":{"cycle":"2026-08-08T00:00:00+00:00","window_end":"2026-09-12T06:00:00+00:00","window_start":"2026-08-24T06:00:00+00:00"},"location":{"admin1":"NCR","country":"PH","lat":14.6042,"lon":120.9822,"name":"Manila","source":"GeoNames"},"lon":120.9822,"method":{"calibrated":false,"kind":"counted_member_fraction","note":"Raw ensemble exceedance fraction: the share of GEFS members whose daily statistic crosses the threshold, counted member by member. This is not a calibrated probability — no bias correction or statistical post-processing is applied; 'members_total' is served on every day so the fraction can be audited."},"threshold":30.0,"threshold_unit":"mm","to":"2026-08-26","variable":"precipitation"},"provenance":{"dataset":"gefs","fetched_at":"2026-08-09T13:21:18Z","freshness":{"age_secs":134478,"kind":"cached"},"source":"NOAA GEFS ensemble members (0.5°, up to 31 members)"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /climate/point/batch Before your agent backtests parametric triggers over a site portfolio, verifies claims across parcels or scores weather exposure for an asset fleet: daily 2 m temperature, total precipitation and 10 m wind for up to 500 point/date queries in one call, from the Copernicus ERA5 reanalysis (temperature and precipitation: rolling 30-year window; wind: rolling ~5-year window). Each query takes lat+lon or a city name; an uncovered item is flagged via per-item coverage instead of failing the batch. - URL: https://api.invoket.com/climate/point/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 500 units) - Docs: https://invoket.com/docs/api/climate-point-batch - Example request: POST /climate/point/batch {"queries":[{"city":"Paris","date":"2024-07-14","variables":"temperature,precipitation,wind"},{"date":"2024-01-20","lat":40.7128,"lon":-74.006}]} - Example response: {"data":{"count":2,"results":[{"coverage":{"complete":true},"date":"2024-07-14","grid":{"distance_km":13.2,"lat":48.75,"lon":2.25},"lat":48.8534,"location":{"admin1":"11","country":"FR","lat":48.8534,"lon":2.3488,"name":"Paris","source":"GeoNames"},"lon":2.3488,"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":{"dataset":"era5","fetched_at":"2026-06-16T09:30:00Z","freshness":{"as_of":"2024-07-14T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /climate/degree-days Before your agent sizes heating or cooling demand, settles an energy contract or models crop growth: heating, cooling and growing degree-days (HDD/CDD/GDD) for any GPS point or city over a date range, computed from Copernicus ERA5 daily mean temperature (rolling 30-year window) with the NWS/EIA/WMO mean-temperature method. - URL: https://api.invoket.com/climate/degree-days - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/climate-degree-days - Example request: GET /climate/degree-days?base=18&from=2024-07-01&kind=cdd&lat=48.8566&lon=2.3522&to=2024-07-31 - Example response: {"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":{"dataset":"era5","fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /climate/aggregate Before your agent writes a seasonal report, audits an ESG claim or reconciles a weather-linked contract: period climate summaries for any GPS point or city over a date range — mean, min and max temperature, total precipitation and mean wind — from the Copernicus ERA5 reanalysis (temperature and precipitation: rolling 30-year window; wind: rolling ~5-year window), with the served grid cell and a coverage flag. - URL: https://api.invoket.com/climate/aggregate - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/climate-aggregate - Example request: GET /climate/aggregate?country=CH&from=2022-07-01&location=Zurich&to=2022-07-31 - Example response: {"data":{"coverage":{"complete":true},"days_counted":31,"from":"2022-07-01","grid":{"distance_km":13.51,"lat":47.25,"lon":8.5},"lat":47.36667,"location":{"admin1":"ZH","country":"CH","lat":47.36667,"lon":8.55,"name":"Zürich","source":"GeoNames"},"lon":8.55,"precipitation":{"total_mm":41.25},"temperature":{"max_celsius":26.24,"mean_celsius":21.08,"min_celsius":14.62},"to":"2022-07-31","wind":{"mean_direction_deg":339.3,"mean_speed_ms":0.31}},"provenance":{"dataset":"era5","fetched_at":"2026-07-03T22:06:21Z","freshness":{"as_of":"2022-07-01T00:00:00Z","kind":"snapshot"},"source":"ERA5"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /climate/indices Before your agent prices or settles a parametric-insurance trigger, or screens weather risk for agriculture and construction: climate-event indices for any GPS point or city over a date range — frost and summer days, tropical nights, dry spells, heavy-rain days, max one-day rainfall, total precipitation and peak gust — ETCCDI/Climdex definitions on true daily Tmin/Tmax from the Copernicus ERA5 reanalysis (precipitation-based indices: rolling 30-year window; Tmin/Tmax- and gust-based indices: rolling ~5-year window). - URL: https://api.invoket.com/climate/indices - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/climate-indices - Example request: GET /climate/indices?from=2024-07-01&lat=48.8566&lon=2.3522&to=2024-07-31 - Example response: {"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":{"dataset":"era5","fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /climate/anomaly Before your agent verifies a 'hotter than normal' claim, reports climate exposure or settles an anomaly-based trigger: how far observed temperature, precipitation and wind departed from the WMO 1991-2020 climatological normal, for any GPS point or city over a date range within the ingested Copernicus ERA5 window (rolling 30 years for temperature and precipitation, rolling ~5 years for wind). - URL: https://api.invoket.com/climate/anomaly - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/climate-anomaly - Example request: GET /climate/anomaly?from=2024-07-01&lat=48.8566&lon=2.3522&to=2024-07-31 - Example response: {"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":{"dataset":"era5","fetched_at":"2026-06-26T09:30:00Z","freshness":{"as_of":"2024-07-31T00:00:00Z","kind":"snapshot"},"source":"era5-copernicus"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /climate/return-period Before your agent underwrites, reinsures or stress-tests a climate exposure: rank a target year's season against 30 years of a location's climate history (Copernicus ERA5 reanalysis, WMO-standard climatological period) — percentile, empirical return period and sample size, for any GPS point or city. Temperature and precipitation cover a rolling 30-year window; every verdict reports its actual sample size via sample_years and coverage. - URL: https://api.invoket.com/climate/return-period - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/climate-return-period - Example request: GET /climate/return-period?lat=48.8566&lon=2.3522&month=8&year=2024 - Example response: {"data":{"coverage":{"complete":true},"grid":{"distance_km":14.02,"lat":48.75,"lon":2.25},"lat":48.8566,"lon":2.3522,"method":"empirical","percentile":80.0,"rank":24,"return_period_years":4.43,"sample_years":30,"season":"08-01..08-31","stat":"mean","unit":"celsius","value":20.49,"variable":"temperature","year":2024},"provenance":{"dataset":"era5","fetched_at":"2026-07-16T09:29:59Z","freshness":{"as_of":"1996-08-01T00:00:00Z","kind":"snapshot"},"source":"ERA5"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /vehicle/vin/decode Before your agent buys, lists or insures a vehicle: decode any 17-character VIN offline — manufacturer, country and region of build, model year, check digit validity and deterministic attributes from the official NHTSA vPIC tables - URL: https://api.invoket.com/vehicle/vin/decode - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/vehicle-vin-decode - Example request: GET /vehicle/vin/decode?vin=5YJ3E1EA7KF000316 - Example response: {"data":{"attributes":{"Body Class":"Sedan/Saloon","Model":"Model 3"},"check_digit_applicable":true,"check_digit_valid":false,"country":"United States","coverage":{"complete":true},"make":"TESLA","make_source":"wmi","manufacturer":"Tesla, Inc.","model_year":2019,"region":"North America","vin":"5YJ3E1EA7KF000316","wmi":"5YJ"},"provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"nhtsa-vpic"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /vehicle/recalls Before your agent buys, sells or services a vehicle: list manufacturer recall campaigns that may affect it, consolidated from official NHTSA and RappelConso sources, matched by make, model and year or from a VIN. An empty list means no known recall. Results are paged at 200 campaigns, one paid call per page: the busiest brands (~900 campaigns) take 5 - URL: https://api.invoket.com/vehicle/recalls - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/vehicle-recalls - Example request: GET /vehicle/recalls?make=Toyota&model=Corolla&year=2019 - Example response: {"data":{"coverage":{"complete":false,"reason":"expected source(s) not ingested: Safety Gate","sources":[{"as_of":"2026-07-01","fresh":true,"name":"NHTSA"},{"as_of":"2026-07-01","fresh":true,"name":"RappelConso"},{"missing":true,"name":"Safety Gate","reason":"Safety Gate source is not currently ingested"}]},"make":"Toyota","model":"Corolla","recalls":[{"campaign_id":"20V012000","component":"FUEL SYSTEM, GASOLINE","match":{"make":"TOYOTA","model":"COROLLA","years":{"from":2018,"to":2019}},"published_at":"2020-01-13","remedy":"Dealers will replace the fuel pump assembly free of charge.","source":"NHTSA","summary":"The low-pressure fuel pump may fail and cause the engine to stall while driving.","url":"https://www.nhtsa.gov/recalls?nhtsaId=20V012000"},{"campaign_id":"2019-11-0123","component":"Système de freinage","match":{"make":"TOYOTA","model":"COROLLA","years":{"from":2019,"to":2019}},"published_at":"2019-11-06","remedy":"Dealers will inspect and replace the master cylinder free of charge.","source":"RappelConso","summary":"Possible sealing defect of the master cylinder that may reduce braking efficiency.","url":"https://rappel.conso.gouv.fr/fiche-rappel/0123"}],"year":2019},"provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-07-01T00:00:00Z","kind":"snapshot"},"source":"nhtsa+rappelconso"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /vehicle/critair Before your agent plans a route or advises on a vehicle in France: compute its Crit'Air class and current low-emission-zone (ZFE) restrictions from the official classification tables (arrêté du 21 juin 2016), from declared fuel and Euro norm or first registration date - URL: https://api.invoket.com/vehicle/critair - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/vehicle-critair - Example request: GET /vehicle/critair?euro_norm=euro3&first_registration=2004-05-01&fuel=diesel&vehicle_class=m1 - Example response: {"data":{"critair_class":"4","derivation":{"euro_norm":"euro3","fuel":"diesel","via":"euro_norm"},"euro_norm":"euro3","first_registration":"2004-05-01","fuel":"diesel","notes":"Restrictions PERMANENTES en vigueur pour les véhicules M1/N1, par classe Crit'Air. Les dérogations locales, horaires et sectorielles (axes, dérogations petits rouleurs, laissez-passer) sont HORS PÉRIMÈTRE et ne sont pas modélisées. Les calendriers de durcissement au-delà des étapes ci-dessous ont été révisés par la loi de 2025 et ne sont retenus que lorsqu'ils sont effectivement entrés en vigueur.","regulation":{"as_of":"2026-07-04","reference":"Arrêté du 21 juin 2016 (nomenclature Crit'Air, art. R. 318-2 du code de la route)"},"vehicle_class":"m1","zfe_restrictions":[{"area":"Lyon, Villeurbanne, Caluire-et-Cuire, Bron et Vénissieux (périmètre intra-boulevard périphérique Laurent-Bonnevay)","since":"2022-01-01","zone_id":"metropole-lyon","zone_name":"ZFE-m de la Métropole de Lyon"},{"area":"Communes de la Métropole du Grand Paris situées à l'intérieur de l'autoroute A86 (Paris et petite couronne, hors A86 elle-même)","since":"2021-06-01","zone_id":"grand-paris","zone_name":"ZFE-m de la Métropole du Grand Paris"}]},"provenance":{"fetched_at":"2026-07-04T09:30:00Z","freshness":{"as_of":"2026-07-01T00:00:00Z","kind":"snapshot"},"source":"critair-regulation+zfe-open-data"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /vehicle/report Before your agent buys or appraises a vehicle: one consolidated report from a VIN — decode, candidate recall campaigns, type-approval CO2, the French registration tax it would cost and, from declared characteristics, Crit'Air / low-emission-zone status — from official NHTSA vPIC, RappelConso, EU 2019/631 and French tax sources, each block with its own provenance and honest coverage - URL: https://api.invoket.com/vehicle/report - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/vehicle-report - Example request: GET /vehicle/report?fuel=electric&vin=5YJ3E1EA7KF000316 - Example response: {"data":{"co2":{"co2":{"low_sample":false,"sample_size":42680,"unit":"g/km","wltp":{"p10":0,"p50":0,"p90":0}},"match_level":"model_year","provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"eea-co2-monitoring"},"typical_specs":{"engine_power_kw":150,"mass_kg":1931},"vehicle":{"commercial_name":"MODEL 3","make":"TESLA","year":2019}},"coverage":{"complete":true,"missing":[]},"critair":{"critair_class":"0","derivation":{"fuel":"electric","via":"fuel"},"fuel":"electric","provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-07-04T00:00:00Z","kind":"snapshot"},"source":"critair-regulation+zfe-open-data"},"regulation":{"as_of":"2026-07-04","reference":"Arrêté du 21 juin 2016 (nomenclature Crit'Air, art. R. 318-2 du code de la route)"},"vehicle_class":"m1","zfe_restrictions":[]},"recalls":{"coverage":{"complete":false,"reason":"expected source(s) not ingested: Safety Gate","sources":[{"as_of":"2026-07-01","fresh":true,"name":"NHTSA"},{"as_of":"2026-07-01","fresh":true,"name":"RappelConso"},{"missing":true,"name":"Safety Gate","reason":"Safety Gate source is not currently ingested"}]},"make":"TESLA","provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-07-01T00:00:00Z","kind":"snapshot"},"source":"nhtsa+rappelconso"},"recalls":[{"campaign_id":"22V037000","component":"STEERING","match":{"make":"TESLA","years":{"from":2017,"to":2022}},"published_at":"2022-01-27","remedy":"Free over-the-air software update.","source":"NHTSA","summary":"Power steering assist may be reduced over rough terrain.","url":"https://www.nhtsa.gov/recalls?nhtsaId=22V037000"}],"year":2019},"registration_tax":{"coverage":"insufficient_inputs","missing_inputs":["fiscal_power","region"]},"vin_decode":{"attributes":{"Model":"Model 3"},"check_digit_applicable":true,"check_digit_valid":false,"country":"United States","coverage":{"complete":true},"make":"TESLA","make_source":"wmi","manufacturer":"Tesla, Inc.","model_year":2019,"provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"nhtsa-vpic"},"region":"North America","vin":"5YJ3E1EA7KF000316","wmi":"5YJ"}},"provenance":{"fetched_at":"2026-07-01T09:30:00Z","freshness":{"as_of":"2026-06-01T00:00:00Z","kind":"snapshot"},"source":"nhtsa-vpic"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /vehicle/co2 Before your agent prices, imports or compares a European vehicle: get its type-approval CO2 emissions and technical characteristics — WLTP g/km with its dispersion, fuel, engine capacity, power and mass — from the official EU CO2 monitoring data (Regulation (EU) 2019/631, new registrations 2018-2022), keyed by type-approval number or by make, model and year. Every answer states the precision it was matched at - URL: https://api.invoket.com/vehicle/co2 - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/vehicle-co2 - Example request: GET /vehicle/co2?make=Renault&model=Clio&year=2021 - Example response: {"data":{"co2":{"low_sample":false,"sample_size":200122,"unit":"g/km","wltp":{"p10":99,"p50":118,"p90":120}},"coverage":{"min_sample":5,"versions_aggregated":427,"years_covered":[2018,2019,2020,2021,2022]},"limits":["type-approval values under the WLTP procedure, not real-world fuel consumption (OBFCM data is out of scope)","statistical aggregate of new registrations reported by member states, not a manufacturer datasheet","no VIN to variant/version link: a European VIN does not carry the variant outside manufacturer databases","regulated pollutants (NOx, particulates) are not covered","in 'typical_specs', each figure is an independent weighted median over the aggregated versions (and 'fuel_mix' their registration shares): together they describe no single existing version, they are not a datasheet"],"match_level":"model_year","typical_specs":{"engine_capacity_cm3":999,"engine_power_kw":67,"mass_kg":1171},"vehicle":{"commercial_name":"CLIO","make":"RENAULT","year":2021}},"provenance":{"fetched_at":"2026-07-29T09:42:21Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"eea-co2-monitoring"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /vehicle/tax Before your agent buys, imports or quotes a vehicle in France: compute what registering it costs — CO2 malus, weight malus and the regional certificate tax — against the official schedule in force on the registration date you supply, not the one a model remembers. Coverage is France only; each item states its bracket, its threshold and the exemption applied with its legal article, and the total disappears rather than being partial - URL: https://api.invoket.com/vehicle/tax - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/vehicle-tax - Example request: GET /vehicle/tax?co2_wltp=150&country=FR&fiscal_power=7&fuel=diesel®ion=11®istration_date=2026-05-01&weight_kg=1900 - Example response: {"data":{"co2_malus":{"amount_eur":4279,"capped":false,"co2_g_km":150,"status":"due","threshold_g":108},"country":"FR","inputs_used":{"co2_wltp_g_km":{"source":"declared","value":150},"fiscal_power_cv":{"source":"declared","value":7},"fuel":{"source":"declared","value":"diesel"},"region":{"source":"declared","value":{"eur_per_fiscal_hp":68.95,"insee_code":"11","name":"Île-de-France"}},"weight_kg":{"source":"declared","value":1900}},"limits":["exemptions and allowances that depend on the taxpayer's situation (disability card, dependent children, legal person operating a vehicle with at least eight seats) are published in the schedules but never applied automatically"],"regional_tax":{"amount_eur":493.65,"fiscal_power_cv":7,"fixed_fee_eur":11,"proportional_eur":482.65,"region":{"eur_per_fiscal_hp":68.95,"insee_code":"11","name":"Île-de-France"},"status":"due"},"registration_date":"2026-05-01","schedule":{"as_of":"2026-07-28","co2_malus":{"valid_from":"2026-01-01","valid_to":"2026-12-31"},"legal_basis":[{"article":"L. 421-62","code":"code des impositions sur les biens et services","in_force_since":"2025-03-01","legi_id":"LEGIARTI000051214838","subject":"barèmes CO2 WLTP"}],"regional_tax_as_of":"2026-07-28","weight_malus":{"valid_from":"2026-01-01"}},"total_eur":10272.65,"weight_malus":{"amount_eur":5500,"brackets":[{"amount_eur":2000,"eur_per_kg":10,"from_kg":1500,"taxable_kg":200,"to_kg":1699},{"amount_eur":1500,"eur_per_kg":15,"from_kg":1700,"taxable_kg":100,"to_kg":1799},{"amount_eur":2000,"eur_per_kg":20,"from_kg":1800,"taxable_kg":100,"to_kg":1899}],"mass_kg":1900,"status":"due","taxable_mass_kg":1900,"threshold_kg":1500}},"provenance":{"fetched_at":"2026-07-29T09:42:54Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"fr-registration-tax"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/read Read any EU structured e-invoice in one call: post a Factur-X PDF, CII or UBL XML and get faithful structured data - parties with SIREN/VAT identifiers, line items, VAT breakdown, totals, payment IBAN and due dates. Covers the three formats mandated by the French 2026-2027 e-invoicing reform (EN 16931). No account, no key, no OCR guesswork. - URL: https://api.invoket.com/invoice/read - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/invoice-read - Example request: POST /invoice/read {"document_base64":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBDb3JwdXMgRi0xMDIg4oCUIGZhY3R1cmUgc3ludGjDqXRpcXVlIDogYXV0b2xpcXVpZGF0aW9uIChjYXTDqWdvcmllIEFFKSwKICAgICBjb25mb3JtZSBFTiAxNjkzMSAodmVydGUgcG91ciBsJ29yYWNsZSBvZmZpY2llbCkuIC0tPgo8SW52b2ljZSB4bWxuczpjYWM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vbkFnZ3JlZ2F0ZUNvbXBvbmVudHMtMiIKIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiCiB4bWxucz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6SW52b2ljZS0yIj4KICA8Y2JjOkN1c3RvbWl6YXRpb25JRD51cm46Y2VuLmV1OmVuMTY5MzE6MjAxNzwvY2JjOkN1c3RvbWl6YXRpb25JRD4KICA8Y2JjOklEPlNZTi1JQy0wMDE8L2NiYzpJRD4KICA8Y2JjOklzc3VlRGF0ZT4yMDI2LTA2LTE1PC9jYmM6SXNzdWVEYXRlPgogIDxjYmM6RHVlRGF0ZT4yMDI2LTA3LTE1PC9jYmM6RHVlRGF0ZT4KICA8Y2JjOkludm9pY2VUeXBlQ29kZT4zODA8L2NiYzpJbnZvaWNlVHlwZUNvZGU+CiAgPGNiYzpEb2N1bWVudEN1cnJlbmN5Q29kZT5FVVI8L2NiYzpEb2N1bWVudEN1cnJlbmN5Q29kZT4KICA8Y2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogICAgPGNhYzpQYXJ0eT4KICAgICAgPGNhYzpQb3N0YWxBZGRyZXNzPgogICAgICAgIDxjYmM6U3RyZWV0TmFtZT4xMiBydWUgZGUgbGEgUGFpeDwvY2JjOlN0cmVldE5hbWU+CiAgICAgICAgPGNiYzpDaXR5TmFtZT5QYXJpczwvY2JjOkNpdHlOYW1lPgogICAgICAgIDxjYmM6UG9zdGFsWm9uZT43NTAwMjwvY2JjOlBvc3RhbFpvbmU+CiAgICAgICAgPGNhYzpDb3VudHJ5PgogICAgICAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+RlI8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICAgICAgPC9jYWM6Q291bnRyeT4KICAgICAgPC9jYWM6UG9zdGFsQWRkcmVzcz4KICAgICAgPGNhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgICA8Y2JjOkNvbXBhbnlJRD5GUjQwMzAzMjY1MDQ1PC9jYmM6Q29tcGFueUlEPgogICAgICAgIDxjYWM6VGF4U2NoZW1lPgogICAgICAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgICAgICA8L2NhYzpUYXhTY2hlbWU+CiAgICAgIDwvY2FjOlBhcnR5VGF4U2NoZW1lPgogICAgICA8Y2FjOlBhcnR5TGVnYWxFbnRpdHk+CiAgICAgICAgPGNiYzpSZWdpc3RyYXRpb25OYW1lPkZvdXJuaXNzZXVyIFNBUzwvY2JjOlJlZ2lzdHJhdGlvbk5hbWU+CiAgICAgICAgPGNiYzpDb21wYW55SUQgc2NoZW1lSUQ9IjAwMDIiPjMwMzI2NTA0NTwvY2JjOkNvbXBhbnlJRD4KICAgICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDwvY2FjOlBhcnR5PgogIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogIDxjYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiAgICA8Y2FjOlBhcnR5PgogICAgICA8Y2FjOlBvc3RhbEFkZHJlc3M+CiAgICAgICAgPGNiYzpTdHJlZXROYW1lPkhhdXB0c3RyYXNzZSAxPC9jYmM6U3RyZWV0TmFtZT4KICAgICAgICA8Y2JjOkNpdHlOYW1lPkJlcmxpbjwvY2JjOkNpdHlOYW1lPgogICAgICAgIDxjYmM6UG9zdGFsWm9uZT4xMDExNTwvY2JjOlBvc3RhbFpvbmU+CiAgICAgICAgPGNhYzpDb3VudHJ5PgogICAgICAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+REU8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICAgICAgPC9jYWM6Q291bnRyeT4KICAgICAgPC9jYWM6UG9zdGFsQWRkcmVzcz4KICAgICAgPGNhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgICA8Y2JjOkNvbXBhbnlJRD5ERTEyMzQ1Njc4OTwvY2JjOkNvbXBhbnlJRD4KICAgICAgICA8Y2FjOlRheFNjaGVtZT4KICAgICAgICAgIDxjYmM6SUQ+VkFUPC9jYmM6SUQ+CiAgICAgICAgPC9jYWM6VGF4U2NoZW1lPgogICAgICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PgogICAgICAgIDxjYmM6UmVnaXN0cmF0aW9uTmFtZT5LdW5kZSBHbWJIPC9jYmM6UmVnaXN0cmF0aW9uTmFtZT4KICAgICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDwvY2FjOlBhcnR5PgogIDwvY2FjOkFjY291bnRpbmdDdXN0b21lclBhcnR5PgogIDxjYWM6RGVsaXZlcnk+PGNiYzpBY3R1YWxEZWxpdmVyeURhdGU+MjAyNi0wNi0xMDwvY2JjOkFjdHVhbERlbGl2ZXJ5RGF0ZT48Y2FjOkRlbGl2ZXJ5TG9jYXRpb24+PGNhYzpBZGRyZXNzPjxjYWM6Q291bnRyeT48Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5ERTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT48L2NhYzpDb3VudHJ5PjwvY2FjOkFkZHJlc3M+PC9jYWM6RGVsaXZlcnlMb2NhdGlvbj48L2NhYzpEZWxpdmVyeT48Y2FjOlRheFRvdGFsPgogICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4wLjAwPC9jYmM6VGF4QW1vdW50PgogICAgPGNhYzpUYXhTdWJ0b3RhbD4KICAgICAgPGNiYzpUYXhhYmxlQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTIwMC4wMDwvY2JjOlRheGFibGVBbW91bnQ+CiAgICAgIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MC4wMDwvY2JjOlRheEFtb3VudD4KICAgICAgPGNhYzpUYXhDYXRlZ29yeT4KICAgICAgICA8Y2JjOklEPks8L2NiYzpJRD4KICAgICAgICA8Y2JjOlBlcmNlbnQ+MDwvY2JjOlBlcmNlbnQ+CiAgICAgICAgPGNiYzpUYXhFeGVtcHRpb25SZWFzb24+SW50cmEtY29tbXVuaXR5IHN1cHBseTwvY2JjOlRheEV4ZW1wdGlvblJlYXNvbj4KICAgICAgICA8Y2FjOlRheFNjaGVtZT4KICAgICAgICAgIDxjYmM6SUQ+VkFUPC9jYmM6SUQ+CiAgICAgICAgPC9jYWM6VGF4U2NoZW1lPgogICAgICA8L2NhYzpUYXhDYXRlZ29yeT4KICAgIDwvY2FjOlRheFN1YnRvdGFsPgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogICAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTIwMC4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgICA8Y2JjOlRheEV4Y2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJFVVIiPjEyMDAuMDA8L2NiYzpUYXhFeGNsdXNpdmVBbW91bnQ+CiAgICA8Y2JjOlRheEluY2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJFVVIiPjEyMDAuMDA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xMjAwLjAwPC9jYmM6UGF5YWJsZUFtb3VudD4KICA8L2NhYzpMZWdhbE1vbmV0YXJ5VG90YWw+CiAgPGNhYzpJbnZvaWNlTGluZT4KICAgIDxjYmM6SUQ+MTwvY2JjOklEPgogICAgPGNiYzpJbnZvaWNlZFF1YW50aXR5IHVuaXRDb2RlPSJEQVkiPjM8L2NiYzpJbnZvaWNlZFF1YW50aXR5PgogICAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTIwMC4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgICA8Y2FjOkl0ZW0+CiAgICAgIDxjYmM6TmFtZT5QcmVzdGF0aW9uIGRlIGNvbnNlaWw8L2NiYzpOYW1lPgogICAgICA8Y2FjOkNsYXNzaWZpZWRUYXhDYXRlZ29yeT4KICAgICAgICA8Y2JjOklEPks8L2NiYzpJRD4KICAgICAgICA8Y2JjOlBlcmNlbnQ+MDwvY2JjOlBlcmNlbnQ+CiAgICAgICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgICAgIDwvY2FjOlRheFNjaGVtZT4KICAgICAgPC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogICAgPC9jYWM6SXRlbT4KICAgIDxjYWM6UHJpY2U+CiAgICAgIDxjYmM6UHJpY2VBbW91bnQgY3VycmVuY3lJRD0iRVVSIj40MDAuMDA8L2NiYzpQcmljZUFtb3VudD4KICAgIDwvY2FjOlByaWNlPgogIDwvY2FjOkludm9pY2VMaW5lPgo8L0ludm9pY2U+Cg=="} - Example response: {"data":{"coverage":{"absent_fields":["vat_accounting_currency","buyer_reference","sales_order_reference","payment_terms","business_process","preceding_invoices","allowances","charges","lines"],"notes":[]},"format":{"declared_profile":"basicwl","kind":"facturx"},"invoice":{"allowances":[],"buyer":{"address":{"city":"Lyon","country":"FR","line1":"35 rue de la République","postal_code":"69001"},"identifiers":[],"legal_registration_id":{"scheme":"0002","value":"78787878400035"},"name":"Ma jolie boutique","vat_id":"FR19787878784"},"charges":[],"contract_reference":"MSPE2017","currency":"EUR","due_date":"2017-12-13","issue_date":"2017-11-13","lines":[],"notes":[{"content":"Franco de port (commande > 300 € HT)"}],"number":"FA-2017-0010","order_reference":"PO445","payment_means":[{"credit_accounts":[{"iban_or_account":"FR2012421242124212421242124"}],"means_code":"30","remittance_info":"FA-2017-0010"}],"seller":{"address":{"city":"Malaucène","country":"FR","line1":"1242 chemin de l'olive","postal_code":"84340"},"identifiers":[],"legal_registration_id":{"scheme":"0002","value":"99999999800010"},"name":"Au bon moulin","vat_id":"FR11999999998"},"specification_id":"urn:factur-x.eu:1p0:basicwl","totals":{"due":"470.15","grand_total":"671.15","lines_net":"624.90","net":"624.90","prepaid":"201.00","vat_total":"46.25"},"type_code":"380","vat_breakdown":[{"category":"S","rate":"20.00","tax_amount":"16.38","taxable_amount":"81.90"},{"category":"S","rate":"5.50","tax_amount":"29.87","taxable_amount":"543.00"}]}},"provenance":{"fetched_at":"2026-07-11T17:17:58Z","freshness":{"kind":"live"},"source":"invoice-document"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/validate Should you accept this invoice? Post a Factur-X PDF, CII or UBL XML and get a deterministic EN 16931 verdict: XSD conformance, every violated business rule by its official BR id with observed vs expected values, Factur-X profile consistency, and syntax checks on IBAN, SIREN/SIRET and VAT identifiers. The formats mandated by the French 2026-2027 reform. A non-conformant invoice is a paid, documented answer - no LLM guesswork. Add ?ruleset=xrechnung or ?ruleset=peppol to layer a national CIUS pack on top of the EN 16931 base: XRechnung (German BR-DE rules, DE mandate) or Peppol BIS Billing 3.0 (BE mandate, live since 2026-04), each violation sourced by its official id (BR-DE-xx, PEPPOL-EN16931-Rxxx). Each verdict also carries informational VAT consistency checks (INV-VAT-*), never mixed with the normative BR ids. - URL: https://api.invoket.com/invoice/validate - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/invoice-validate - Example request: POST /invoice/validate {"document_base64":"PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCEtLSBDb3JwdXMgRi0xMDIg4oCUIGZhY3R1cmUgc3ludGjDqXRpcXVlIDogYXV0b2xpcXVpZGF0aW9uIChjYXTDqWdvcmllIEFFKSwKICAgICBjb25mb3JtZSBFTiAxNjkzMSAodmVydGUgcG91ciBsJ29yYWNsZSBvZmZpY2llbCkuIC0tPgo8SW52b2ljZSB4bWxuczpjYWM9InVybjpvYXNpczpuYW1lczpzcGVjaWZpY2F0aW9uOnVibDpzY2hlbWE6eHNkOkNvbW1vbkFnZ3JlZ2F0ZUNvbXBvbmVudHMtMiIKIHhtbG5zOmNiYz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6Q29tbW9uQmFzaWNDb21wb25lbnRzLTIiCiB4bWxucz0idXJuOm9hc2lzOm5hbWVzOnNwZWNpZmljYXRpb246dWJsOnNjaGVtYTp4c2Q6SW52b2ljZS0yIj4KICA8Y2JjOkN1c3RvbWl6YXRpb25JRD51cm46Y2VuLmV1OmVuMTY5MzE6MjAxNzwvY2JjOkN1c3RvbWl6YXRpb25JRD4KICA8Y2JjOklEPlNZTi1JQy0wMDE8L2NiYzpJRD4KICA8Y2JjOklzc3VlRGF0ZT4yMDI2LTA2LTE1PC9jYmM6SXNzdWVEYXRlPgogIDxjYmM6RHVlRGF0ZT4yMDI2LTA3LTE1PC9jYmM6RHVlRGF0ZT4KICA8Y2JjOkludm9pY2VUeXBlQ29kZT4zODA8L2NiYzpJbnZvaWNlVHlwZUNvZGU+CiAgPGNiYzpEb2N1bWVudEN1cnJlbmN5Q29kZT5FVVI8L2NiYzpEb2N1bWVudEN1cnJlbmN5Q29kZT4KICA8Y2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogICAgPGNhYzpQYXJ0eT4KICAgICAgPGNhYzpQb3N0YWxBZGRyZXNzPgogICAgICAgIDxjYmM6U3RyZWV0TmFtZT4xMiBydWUgZGUgbGEgUGFpeDwvY2JjOlN0cmVldE5hbWU+CiAgICAgICAgPGNiYzpDaXR5TmFtZT5QYXJpczwvY2JjOkNpdHlOYW1lPgogICAgICAgIDxjYmM6UG9zdGFsWm9uZT43NTAwMjwvY2JjOlBvc3RhbFpvbmU+CiAgICAgICAgPGNhYzpDb3VudHJ5PgogICAgICAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+RlI8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICAgICAgPC9jYWM6Q291bnRyeT4KICAgICAgPC9jYWM6UG9zdGFsQWRkcmVzcz4KICAgICAgPGNhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgICA8Y2JjOkNvbXBhbnlJRD5GUjQwMzAzMjY1MDQ1PC9jYmM6Q29tcGFueUlEPgogICAgICAgIDxjYWM6VGF4U2NoZW1lPgogICAgICAgICAgPGNiYzpJRD5WQVQ8L2NiYzpJRD4KICAgICAgICA8L2NhYzpUYXhTY2hlbWU+CiAgICAgIDwvY2FjOlBhcnR5VGF4U2NoZW1lPgogICAgICA8Y2FjOlBhcnR5TGVnYWxFbnRpdHk+CiAgICAgICAgPGNiYzpSZWdpc3RyYXRpb25OYW1lPkZvdXJuaXNzZXVyIFNBUzwvY2JjOlJlZ2lzdHJhdGlvbk5hbWU+CiAgICAgICAgPGNiYzpDb21wYW55SUQgc2NoZW1lSUQ9IjAwMDIiPjMwMzI2NTA0NTwvY2JjOkNvbXBhbnlJRD4KICAgICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDwvY2FjOlBhcnR5PgogIDwvY2FjOkFjY291bnRpbmdTdXBwbGllclBhcnR5PgogIDxjYWM6QWNjb3VudGluZ0N1c3RvbWVyUGFydHk+CiAgICA8Y2FjOlBhcnR5PgogICAgICA8Y2FjOlBvc3RhbEFkZHJlc3M+CiAgICAgICAgPGNiYzpTdHJlZXROYW1lPkhhdXB0c3RyYXNzZSAxPC9jYmM6U3RyZWV0TmFtZT4KICAgICAgICA8Y2JjOkNpdHlOYW1lPkJlcmxpbjwvY2JjOkNpdHlOYW1lPgogICAgICAgIDxjYmM6UG9zdGFsWm9uZT4xMDExNTwvY2JjOlBvc3RhbFpvbmU+CiAgICAgICAgPGNhYzpDb3VudHJ5PgogICAgICAgICAgPGNiYzpJZGVudGlmaWNhdGlvbkNvZGU+REU8L2NiYzpJZGVudGlmaWNhdGlvbkNvZGU+CiAgICAgICAgPC9jYWM6Q291bnRyeT4KICAgICAgPC9jYWM6UG9zdGFsQWRkcmVzcz4KICAgICAgPGNhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgICA8Y2JjOkNvbXBhbnlJRD5ERTEyMzQ1Njc4OTwvY2JjOkNvbXBhbnlJRD4KICAgICAgICA8Y2FjOlRheFNjaGVtZT4KICAgICAgICAgIDxjYmM6SUQ+VkFUPC9jYmM6SUQ+CiAgICAgICAgPC9jYWM6VGF4U2NoZW1lPgogICAgICA8L2NhYzpQYXJ0eVRheFNjaGVtZT4KICAgICAgPGNhYzpQYXJ0eUxlZ2FsRW50aXR5PgogICAgICAgIDxjYmM6UmVnaXN0cmF0aW9uTmFtZT5LdW5kZSBHbWJIPC9jYmM6UmVnaXN0cmF0aW9uTmFtZT4KICAgICAgPC9jYWM6UGFydHlMZWdhbEVudGl0eT4KICAgIDwvY2FjOlBhcnR5PgogIDwvY2FjOkFjY291bnRpbmdDdXN0b21lclBhcnR5PgogIDxjYWM6RGVsaXZlcnk+PGNiYzpBY3R1YWxEZWxpdmVyeURhdGU+MjAyNi0wNi0xMDwvY2JjOkFjdHVhbERlbGl2ZXJ5RGF0ZT48Y2FjOkRlbGl2ZXJ5TG9jYXRpb24+PGNhYzpBZGRyZXNzPjxjYWM6Q291bnRyeT48Y2JjOklkZW50aWZpY2F0aW9uQ29kZT5ERTwvY2JjOklkZW50aWZpY2F0aW9uQ29kZT48L2NhYzpDb3VudHJ5PjwvY2FjOkFkZHJlc3M+PC9jYWM6RGVsaXZlcnlMb2NhdGlvbj48L2NhYzpEZWxpdmVyeT48Y2FjOlRheFRvdGFsPgogICAgPGNiYzpUYXhBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4wLjAwPC9jYmM6VGF4QW1vdW50PgogICAgPGNhYzpUYXhTdWJ0b3RhbD4KICAgICAgPGNiYzpUYXhhYmxlQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTIwMC4wMDwvY2JjOlRheGFibGVBbW91bnQ+CiAgICAgIDxjYmM6VGF4QW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MC4wMDwvY2JjOlRheEFtb3VudD4KICAgICAgPGNhYzpUYXhDYXRlZ29yeT4KICAgICAgICA8Y2JjOklEPks8L2NiYzpJRD4KICAgICAgICA8Y2JjOlBlcmNlbnQ+MDwvY2JjOlBlcmNlbnQ+CiAgICAgICAgPGNiYzpUYXhFeGVtcHRpb25SZWFzb24+SW50cmEtY29tbXVuaXR5IHN1cHBseTwvY2JjOlRheEV4ZW1wdGlvblJlYXNvbj4KICAgICAgICA8Y2FjOlRheFNjaGVtZT4KICAgICAgICAgIDxjYmM6SUQ+VkFUPC9jYmM6SUQ+CiAgICAgICAgPC9jYWM6VGF4U2NoZW1lPgogICAgICA8L2NhYzpUYXhDYXRlZ29yeT4KICAgIDwvY2FjOlRheFN1YnRvdGFsPgogIDwvY2FjOlRheFRvdGFsPgogIDxjYWM6TGVnYWxNb25ldGFyeVRvdGFsPgogICAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTIwMC4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgICA8Y2JjOlRheEV4Y2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJFVVIiPjEyMDAuMDA8L2NiYzpUYXhFeGNsdXNpdmVBbW91bnQ+CiAgICA8Y2JjOlRheEluY2x1c2l2ZUFtb3VudCBjdXJyZW5jeUlEPSJFVVIiPjEyMDAuMDA8L2NiYzpUYXhJbmNsdXNpdmVBbW91bnQ+CiAgICA8Y2JjOlBheWFibGVBbW91bnQgY3VycmVuY3lJRD0iRVVSIj4xMjAwLjAwPC9jYmM6UGF5YWJsZUFtb3VudD4KICA8L2NhYzpMZWdhbE1vbmV0YXJ5VG90YWw+CiAgPGNhYzpJbnZvaWNlTGluZT4KICAgIDxjYmM6SUQ+MTwvY2JjOklEPgogICAgPGNiYzpJbnZvaWNlZFF1YW50aXR5IHVuaXRDb2RlPSJEQVkiPjM8L2NiYzpJbnZvaWNlZFF1YW50aXR5PgogICAgPGNiYzpMaW5lRXh0ZW5zaW9uQW1vdW50IGN1cnJlbmN5SUQ9IkVVUiI+MTIwMC4wMDwvY2JjOkxpbmVFeHRlbnNpb25BbW91bnQ+CiAgICA8Y2FjOkl0ZW0+CiAgICAgIDxjYmM6TmFtZT5QcmVzdGF0aW9uIGRlIGNvbnNlaWw8L2NiYzpOYW1lPgogICAgICA8Y2FjOkNsYXNzaWZpZWRUYXhDYXRlZ29yeT4KICAgICAgICA8Y2JjOklEPks8L2NiYzpJRD4KICAgICAgICA8Y2JjOlBlcmNlbnQ+MDwvY2JjOlBlcmNlbnQ+CiAgICAgICAgPGNhYzpUYXhTY2hlbWU+CiAgICAgICAgICA8Y2JjOklEPlZBVDwvY2JjOklEPgogICAgICAgIDwvY2FjOlRheFNjaGVtZT4KICAgICAgPC9jYWM6Q2xhc3NpZmllZFRheENhdGVnb3J5PgogICAgPC9jYWM6SXRlbT4KICAgIDxjYWM6UHJpY2U+CiAgICAgIDxjYmM6UHJpY2VBbW91bnQgY3VycmVuY3lJRD0iRVVSIj40MDAuMDA8L2NiYzpQcmljZUFtb3VudD4KICAgIDwvY2FjOlByaWNlPgogIDwvY2FjOkludm9pY2VMaW5lPgo8L0ludm9pY2U+Cg=="} - Example response: {"data":{"document":{"currency":"EUR","format":"cii","grand_total":"250.33","number":"12115118","seller":"De Koksmaat"},"layers":{"business_rules":{"ok":false,"violations":[{"expected":"20.73","message":"Invoice total VAT amount (BT-110) = Σ VAT category tax amount (BT-117).","observed":"21.73","path":"BG-22/BT-110","rule_id":"BR-CO-14","severity":"fatal"},{"expected":"251.33","message":"Invoice total amount with VAT (BT-112) = Invoice total amount without VAT (BT-109) + Invoice total VAT amount (BT-110).","observed":"250.33","path":"BG-22/BT-112","rule_id":"BR-CO-15","severity":"fatal"}]},"plausibility":{"bic_format":{"status":"not_present"},"buyer_electronic_address":{"status":"not_present"},"buyer_legal_id_luhn":{"status":"not_present"},"buyer_vat_syntax":{"status":"not_present"},"currency_is_monetary":{"status":"pass"},"due_date_calendar":{"status":"pass"},"iban_checksum":{"status":"pass"},"issue_date_calendar":{"status":"pass"},"ok":true,"seller_electronic_address":{"status":"not_present"},"seller_legal_id_luhn":{"status":"not_present"},"seller_vat_syntax":{"status":"pass"}},"profile":{"content_profile":"en16931","ok":true,"profile":"en16931","status":"declared","urn":"urn:cen.eu:en16931:2017","xsd_violations":[]},"xsd":{"errors":[],"ok":true}},"summary":{"artefacts_version":"en16931-1.3.16+facturx-1.08+xrechnung-3.0.2+peppol-bis-3.0.20","coverage":{"families":["BR (mandatory information)","BR-CO (coherence and computed totals)","BR-DEC (decimal precision)","BR-S / BR-Z / BR-E / BR-AE / BR-IC / BR-G / BR-O / BR-AF / BR-AG / BR-B (VAT categories)","BR-CL (code lists)"],"not_implemented":[]},"profile_mode":"declared","violations":{"business_rules_fatal":2,"business_rules_warning":0,"plausibility_failed":0,"profile":0,"xsd":0}},"verdict":"invalid","warnings_present":false},"provenance":{"fetched_at":"2026-07-11T17:17:58Z","freshness":{"as_of":"2026-07-13T00:00:00Z","kind":"snapshot"},"source":"en16931-artefacts"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/generate Generate a guaranteed EN 16931-conformant e-invoice: post simple business JSON (parties, lines, VAT) and get XML that has already passed the full official rule set - totals computed for you, inconsistent inputs rejected with actionable field-level errors. Default output is CII (Factur-X EN 16931 profile URN); set syntax=ubl for a UBL 2.1 invoice, and add ruleset=peppol for a guaranteed-conformant Peppol BIS Billing 3.0 document (Belgium mandate, live since 2026-04). Ready for the French 2026-2027 reform. No account, no key. An optional vat_treatment block also determines the VAT treatment (reverse charge, intra-Community exemption) and writes the compulsory legal mention into the invoice. - URL: https://api.invoket.com/invoice/generate - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/invoice-generate - Example request: POST /invoice/generate {"buyer":{"address":{"city":"Paris","country":"FR","line1":"4 avenue du Parc","postal_code":"75011"},"name":"Agence Lumen SAS","vat_id":"FR23342663721"},"currency":"EUR","due_date":"2026-08-11","invoice_number":"FA-2026-0042","issue_date":"2026-07-12","lines":[{"description":"Fabrication comptoir chene massif","qty":"1","unit":"C62","unit_price":"1200.00","vat":{"category":"S","rate":"20"}},{"description":"Pose et finition sur site","qty":"6","unit":"HUR","unit_price":"85.00","vat":{"category":"S","rate":"20"}}],"payment":{"iban":"FR7630006000011234567890189","terms":"30 jours nets"},"seller":{"address":{"city":"Lyon","country":"FR","line1":"12 rue des Artisans","postal_code":"69003"},"legal_id":{"scheme":"0002","value":"732829320"},"name":"Menuiserie Dubois SARL","vat_id":"FR44732829320"}} - Example response: {"data":{"computed":{"totals":{"due":"2052","grand_total":"2052","lines_net":"1710","net":"1710","vat_total":"342"},"vat_breakdown":[{"category":"S","rate":"20","tax_amount":"342","taxable_amount":"1710"}]},"profile":"urn:cen.eu:en16931:2017","validated":true,"xml":"\n\n\n \n FA-2026-0042380\n 20260712\n \n \n \n \n EUR\n \n \n \n\n"},"provenance":{"fetched_at":"2026-07-12T14:18:41Z","freshness":{"as_of":"2026-07-13T00:00:00Z","kind":"snapshot"},"source":"en16931-artefacts"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/generate-pdf Generate a complete Factur-X hybrid invoice: post simple business JSON (parties, lines, VAT) and get a PDF/A-3B document with the EN 16931 CII XML embedded (plus XMP) - the human-readable PDF that IS the structured e-invoice mandated by the French 2026-2027 reform. Already passed the full official rule set, and its embedded XML re-read byte-for-byte by our own reader; totals computed for you, inconsistent inputs rejected with actionable field-level errors. No account, no key. An optional vat_treatment block also determines the VAT treatment (reverse charge, intra-Community exemption) and writes the compulsory legal mention into the invoice. - URL: https://api.invoket.com/invoice/generate-pdf - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/invoice-generate-pdf - Example request: POST /invoice/generate-pdf {"buyer":{"address":{"city":"Paris","country":"FR","line1":"4 avenue du Parc","postal_code":"75011"},"name":"Agence Lumen SAS","vat_id":"FR23342663721"},"currency":"EUR","due_date":"2026-08-11","invoice_number":"FA-2026-0042","issue_date":"2026-07-12","lines":[{"description":"Fabrication comptoir chene massif","qty":"1","unit":"C62","unit_price":"1200.00","vat":{"category":"S","rate":"20"}},{"description":"Pose et finition sur site","qty":"6","unit":"HUR","unit_price":"85.00","vat":{"category":"S","rate":"20"}}],"payment":{"iban":"FR7630006000011234567890189","terms":"30 jours nets"},"seller":{"address":{"city":"Lyon","country":"FR","line1":"12 rue des Artisans","postal_code":"69003"},"legal_id":{"scheme":"0002","value":"732829320"},"name":"Menuiserie Dubois SARL","vat_id":"FR44732829320"}} - Example response: {"data":{"computed":{"totals":{"due":"2052","grand_total":"2052","lines_net":"1710","net":"1710","vat_total":"342"},"vat_breakdown":[{"category":"S","rate":"20","tax_amount":"342","taxable_amount":"1710"}]},"pdf_base64":"JVBERi0xLjcKJYCAgIAKMSAwIG9iago8PC9UeXBlL1BhZ2VzL0NvdW50IDEvS2lkc1s5IDAgUl0+PgplbmRvYmoKMiAwIG9iago8PC9UeXBlL091dHB1dEludGVudC9E …[base64 truncated for the 402 header budget — full response is 34108 base64 chars = a 25 580-byte PDF/A-3B, veraPDF-green; decode client-side]","profile":"urn:cen.eu:en16931:2017","validated":true,"xml":"\n\n \n \n urn:cen.eu:en16931:2017\n \n \n \n FA-2026-0042\n 380\n \n 20260712\n \n \n \n\n"},"provenance":{"fetched_at":"2026-07-13T15:16:33Z","freshness":{"as_of":"2026-07-13T00:00:00Z","kind":"snapshot"},"source":"en16931-artefacts"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/vat-treatment Before your agent issues or books a cross-border invoice: who charges the VAT, under which mechanism, where the supply is taxed and with which compulsory wording. Post one transaction (countries, goods or services, business or consumer customer, supply kind, date, optional amount) and get a determination sourced article by article under Directive 2006/112/EC: place of supply, person liable, standard VAT, reverse charge, intra-Community exemption or out of scope, the rate in force at that date, and the exact invoice mentions to print. An invoice missing its reverse-charge mention passes the EN 16931 rules and is still refused by the tax authority - the check /invoice/validate cannot make. The customer's VAT number is taken AS DECLARED (zero network): verify it live with /company/vat. Uncovered regimes (OSS/IOSS, import VAT, margin schemes, triangulars) come back as a motivated undetermined, never a plausible default. - URL: https://api.invoket.com/invoice/vat-treatment - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/invoice-vat-treatment - Example request: POST /invoice/vat-treatment {"amount":"12500.00","currency":"EUR","customer_country":"DE","customer_type":"business","customer_vat_status":"valid","date":"2026-07-01","supplier_country":"FR","supply_kind":"intra_eu_dispatch","transaction_type":"goods"} - Example response: {"data":{"caveats":["The rate returned is the one the customer self-assesses in the Member State of arrival; the supplier invoices no VAT.","…3 more elided for the 402 header budget; the real response serves all 4."],"computed":{"currency":"EUR","note":"The supplier charges no VAT: the customer accounts for it under the reverse charge, so the invoice total carries no VAT and must bear the mention above.","rate_percentage":"0","rounding":"rounded to 2 decimals with fn:round(x*100) div 100, the rounding of the EN 16931 engine (the minor unit of every Member State currency is the hundredth)","taxable_amount":"12500.00","total_amount":"12500.00","vat_amount":"0.00"},"customer_vat_check":{"how_to_verify":"GET /company/vat?vat_number= (company_grid, live VIES lookup)","status":"declared_valid"},"legal_basis":[{"article":"138","celex":"32006L0112","query":"/legal/eu-act?celex=32006L0112&article=138","title":"Exemption of intra-Community supplies of goods"}],"liable":"customer","limits":["the margin schemes (second-hand goods, works of art, travel agents) and the special scheme for investment gold are not applied","…5 more elided for the 402 header budget; the real response serves all 6."],"mechanism":"reverse_charge","notes":[],"place_of_supply":{"basis":{"article":"40","celex":"32006L0112","query":"/legal/eu-act?celex=32006L0112&article=40","title":"Place of an intra-Community acquisition of goods: where dispatch ends"},"country":"DE"},"rate":{"country":"DE","has_regional_rates":false,"kind":"standard","percentage":"19","reduced_rate_candidates":["7"],"super_reduced_rate_candidates":[]},"required_invoice_mentions":[{"basis":[{"article":"226","celex":"32006L0112","query":"/legal/eu-act?celex=32006L0112&article=226","title":"Compulsory particulars on invoices"}],"language":"en","text":"Reverse charge"}],"rule_id":"INV-VAT-D01","rule_summary":"Intra-EU B2B dispatch with a proven VAT number: exempt supply, customer self-accounts in the Member State of arrival (Art. 138, 40, 200)"},"provenance":{"fetched_at":"2026-07-29T09:41:42Z","freshness":{"as_of":"2026-07-27T00:00:00Z","kind":"snapshot"},"source":"directive-2006-112 + tedb"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/vat-treatment/batch A sales ledger or an order book judged in one call: up to 200 transactions, one VAT determination each, one settlement. Same verdicts as /invoice/vat-treatment - place of supply, person liable, standard VAT, reverse charge, intra-Community exemption or out of scope, the rate in force at the date of each line, the compulsory invoice mentions and the articles of Directive 2006/112/EC they rest on. A malformed item is reported at its position instead of failing the batch; only an empty or oversized batch is a 400. Legal bases and caveats are shared across the batch and cited by key, and the summary counts the five mechanisms. Customer VAT numbers are taken AS DECLARED (zero network by design) - verify them with /company/vat; uncovered regimes (OSS/IOSS, import VAT, margin schemes, triangular transactions) come back as a motivated undetermined, never a plausible default. - URL: https://api.invoket.com/invoice/vat-treatment/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 200 units) - Docs: https://invoket.com/docs/api/invoice-vat-treatment - Example request: POST /invoice/vat-treatment/batch {"items":[{"amount":"1200.00","currency":"EUR","customer_country":"FR","customer_type":"business","date":"2026-07-01","supplier_country":"FR","supply_kind":"general","transaction_type":"goods"},{"customer_country":"DE","customer_type":"business","date":"2026-07-01","supplier_country":"FRA","supply_kind":"general","transaction_type":"goods"}]} - Example response: {"data":{"count":2,"limits":["the one-stop-shop schemes (OSS, IOSS) and the distance-selling thresholds of Art. 33 and 59c are not applied: a supply that falls under them is returned as undetermined, never guessed","…5 more elided for the 402 header budget; the real response serves all 6."],"results":[{"caveats_ref":0,"index":0,"legal_basis_ref":0,"status":"ok","verdict":{"computed":{"currency":"EUR","note":"VAT is charged by the supplier at the standard rate of the place of supply.","rate_percentage":"20","rounding":"rounded to 2 decimals with fn:round(x*100) div 100, the rounding of the EN 16931 engine (the minor unit of every Member State currency is the hundredth)","taxable_amount":"1200.00","total_amount":"1440.00","vat_amount":"240.00"},"customer_vat_check":{"how_to_verify":"GET /company/vat?vat_number= (company_grid, live VIES lookup)","status":"not_checked"},"liable":"supplier","mechanism":"standard","notes":[],"place_of_supply":{"basis":{"article":"31","celex":"32006L0112","query":"/legal/eu-act?celex=32006L0112&article=31","title":"Place of supply of goods not dispatched or transported"},"country":"FR"},"rate":{"country":"FR","has_regional_rates":true,"kind":"standard","percentage":"20","reduced_rate_candidates":["5.5","10"],"super_reduced_rate_candidates":["2.1"]},"required_invoice_mentions":[],"rule_id":"INV-VAT-G01","rule_summary":"Domestic supply of goods: taxed where the goods are when supplied (Art. 31)"}},{"error":{"code":"INVALID_INVOICE_INPUT","issues":[{"code":"invalid_country","message":"supplier_country must be an ISO 3166-1 alpha-2 country code, got \"FRA\"","path":"supplier_country"}],"message":"VAT treatment input is invalid: 1 actionable issue(s) listed in issues[]"},"index":1,"status":"error"}],"shared":{"caveats":[["This country applies territory-specific rates (Corsica, overseas departments, Madeira, the Azores, Greek islands...) that are outside the embedded snapshot: the rate returned is the national one.","…2 more elided for the 402 header budget."]],"legal_basis":[[{"article":"31","celex":"32006L0112","query":"/legal/eu-act?celex=32006L0112&article=31","title":"Place of supply of goods not dispatched or transported"},{"article":"193","celex":"32006L0112","query":"/legal/eu-act?celex=32006L0112&article=193","title":"VAT is payable by the taxable person carrying out the supply"}]]},"summary":{"errors":1,"items":2,"mechanisms":{"exempt_with_credit":0,"out_of_scope":0,"reverse_charge":0,"standard":1,"undetermined":0},"ok":1}},"provenance":{"fetched_at":"2026-07-29T09:43:50Z","freshness":{"as_of":"2026-07-27T00:00:00Z","kind":"snapshot"},"source":"directive-2006-112 + tedb"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /invoice/late-payment Before your agent sends a dunning letter or books a receivable: what is legally due on an unpaid B2B invoice. Post the claim (amount, currency, country, due date - or invoice date plus agreed terms - and payment date) and get late-payment interest computed PERIOD BY PERIOD under Directive 2011/7/EU: the reference rate changes every 1 January and 1 July, so a claim straddling several half-years is split into tranches, each at the rate of its own half-year - applying today's rate to the whole period is simply wrong. Statutory rate = ECB main refinancing rate (NBP reference rate for Poland) plus the national margin, with the national transposition actually applied: France 10 points, Germany 9 on the Basiszinssatz base, Belgium rounding the reference up to the half point, 8 points elsewhere. Covers FR, DE, ES, IT, NL, BE, PT and PL, with an explicit fallback to the Directive minimum for the other Member States - a national rule is never guessed. Adds the fixed recovery compensation of Art. 6 (EUR 40, tiered in Poland), each component cited to its article. Paying on time is a valid answer, not an error. - URL: https://api.invoket.com/invoice/late-payment - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/invoice-late-payment - Example request: POST /invoice/late-payment {"amount":"25000","country":"FR","currency":"EUR","due_date":"2025-08-31","paid_date":"2026-07-27"} - Example response: {"data":{"claim":{"amount":"25000","currency":"EUR"},"day_count_convention":"calendar days, actual/365","days_late":330,"due_date":"2025-08-31","due_date_source":"contractual_due_date","flat_fee":{"amount":{"amount":"40","currency":"EUR"},"source":"flat"},"interest_total":{"amount":"2750.86","currency":"EUR"},"limits":["consumer claims are out of scope: Directive 2011/7/EU governs commercial transactions between undertakings and with public authorities","…5 more constant limits elided for the 402 header budget; the real response serves all 6."],"notes":[],"paid_date":"2026-07-27","periods":[{"applied_rate":"12.15","days":122,"from":"2025-09-01","interest":"1015.27","rate_source":"statutory","reference_basis":"ecb","reference_rate":"2.15","statutory_rate":"12.15","to":"2025-12-31"},{"applied_rate":"12.15","days":181,"from":"2026-01-01","interest":"1506.27","rate_source":"statutory","reference_basis":"ecb","reference_rate":"2.15","statutory_rate":"12.15","to":"2026-06-30"},{"applied_rate":"12.40","days":27,"from":"2026-07-01","interest":"229.32","rate_source":"statutory","reference_basis":"ecb","reference_rate":"2.40","statutory_rate":"12.40","to":"2026-07-27"}],"rule":{"country":"FR","default_payment_term_days":30,"flat_fee_eur":"40","legal_basis":[{"celex":"32011L0007","query":"/legal/eu-act?celex=32011L0007&article=3","reference":"Directive 2011/7/EU, art. 3 (interest for late payment, at the reference rate plus at least eight percentage points)","scope":"eu"},{"celex":"32011L0007","query":"/legal/eu-act?celex=32011L0007&article=6","reference":"Directive 2011/7/EU, art. 6 (compensation for recovery costs: a fixed sum of at least EUR 40, due as of right)","scope":"eu"},{"reference":"Code de commerce, art. L441-10 (délai supplétif de 30 jours, taux BCE majoré de dix points, indemnité forfaitaire) et art. L441-11 (plafond de 60 jours), art. D441-5 (montant de l'indemnité : 40 EUR) — loi n° 2012-387 du 22 mars 2012, applicable aux contrats conclus à compter du 1er janvier 2013","scope":"national"}],"margin_points":"10","max_payment_term_days":60,"reference_basis":"ecb","rule_source":"national"},"total_due":{"amount":"2790.86","currency":"EUR"}},"provenance":{"fetched_at":"2026-07-29T09:42:23Z","freshness":{"as_of":"2026-07-27T00:00:00Z","kind":"snapshot"},"source":"late-payment-snapshots"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/resolve Verify a French company before you invoice, pay or onboard it: legal name, active/ceased status, legal form, NAF activity, workforce band, creation date and head-office address from the official INSEE Sirene register (30M+ legal units, monthly snapshot). Lookup by SIREN or SIRET. No account, no key, pay per call. - URL: https://api.invoket.com/company/resolve - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-resolve - Example request: GET /company/resolve?siren=552081317 - Example response: {"data":{"acronym":"EDF","coverage":{"missing":[]},"created_on":"1955-01-01","headquarters":{"address":{"city":"PARIS","line":"22 AVENUE DE WAGRAM","postal_code":"75008"},"created_on":"2006-08-01","siret":"55208131766522","status":"active"},"last_processed_on":"2026-06-10","legal_form":{"code":"5599","label":"SA à conseil d'administration (s.a.i.)"},"main_activity":{"code":"35.11Z","label":"Production d'électricité","nomenclature":"NAFRev2"},"name":"ELECTRICITE DE FRANCE","siren":"552081317","social_economy":false,"status":"active","workforce":{"bracket":"53","year":2023}},"provenance":{"fetched_at":"2026-07-11T18:22:08Z","freshness":{"as_of":"2026-06-30T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/events Check a French company for official insolvency, deregistration and business-sale announcements before you invoice or extend credit: dated event timeline and factual flags from the official BODACC gazette, by SIREN. An empty list is a paid answer: no known announcement over the covered window. No account, no key. - URL: https://api.invoket.com/company/events - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-events - Example request: GET /company/events?family=insolvency&siren=321875205 - Example response: {"data":{"company":{"name":"SAN MARINA","status":"active"},"coverage":{"window":{"from":"2008-01-01","to":"2026-07-12"}},"events":[{"court":"Greffe du Tribunal de Commerce de Marseille","effective_on":"2023-08-25","family":"insolvency","gazette_issue":"20230170","nature":"Dépôt de l'état des créances","notice_number":2594,"published_on":"2023-09-05","text":"L'état des créances est déposé au greffe où tout intéressé peut présenter réclamation devant le juge-commissaire dans le délai d'un mois à compter de la présente publication."},{"court":"Greffe du Tribunal de Commerce de Marseille","effective_on":"2023-02-20","family":"insolvency","gazette_issue":"20230038","nature":"Jugement de conversion en liquidation judiciaire","notice_number":1758,"published_on":"2023-02-23","text":"Jugement prononçant la liquidation judiciaire désignant liquidateur SCP J.P Louis & A.Lageat, Mandat Conduit Par Me J.P Louis 30 Rue Cours Lieutaud 13001 Marseille et SAS LES MANDATAIRES mission conduite par Me Vincent DE CARRIERE 50 Rue Sylvabelle 13006 MARSEILLE."},{"court":"Greffe du Tribunal de Commerce de Marseille","effective_on":"2022-09-22","family":"insolvency","gazette_issue":"20220187","nature":"Jugement d'ouverture d'une procédure de redressement judiciaire","notice_number":3494,"published_on":"2022-09-27","text":"Jugement prononçant l'ouverture d'une procédure de redressement judiciaire, date de cessation des paiements le 25 août 2022 désignant administrateur SCP Avazeri-Bonetto, Mission Conduite Par Me F.Avazeri 23/29 Rue Haxo 13001 Marseille et SELARL GILLIBERT & ASSOCIES, mission conduite par Me Vincent GILLIBERT 11 Rue Venture 13001 MARSEILLE avec les pouvoirs : assister le débiteur pour tous les actes de gestion, mandataire judiciaire SCP J.P Louis & A.Lageat, Mandat Conduit Par Me J.P Louis 30 Rue…"}],"flags":{"has_open_insolvency_announcement":true,"is_deregistered":false,"latest_event":{"date":"2017-05-22","family":"sale"}},"siren":"321875205","total":3,"truncated":false},"provenance":{"fetched_at":"2026-07-12T14:50:57Z","freshness":{"as_of":"2026-07-12T00:00:00Z","kind":"snapshot"},"source":"dila-bodacc"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/vat Validate any EU VAT number live against the official European Commission VIES service before you invoice cross-border, or derive and check the French VAT number from a SIREN. Returns valid/invalid or an honest 'unverifiable' when the member state is down - syntax check always included. No account, no key. - URL: https://api.invoket.com/company/vat - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-vat - Example request: GET /company/vat?vat=FR40303265045 - Example response: {"data":{"address":"11 RUE AMPERE\n26600 PONT DE L ISERE","checked_at":"2026-07-12T15:30:31Z","country":"FR","name":"SA SODIMAS","status":"valid","syntax_valid":true,"vat_number":"FR40303265045"},"provenance":{"fetched_at":"2026-07-12T15:30:31Z","freshness":{"kind":"live"},"source":"vies"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/peppol Check whether a company can receive e-invoices on the Peppol network before you send one: participant identifiers and accepted document types from the official Peppol Directory export, by SIREN, SIRET or explicit Peppol participant ID. 'Not registered' is a paid, dated answer. No account, no key. - URL: https://api.invoket.com/company/peppol - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-peppol - Example request: GET /company/peppol?siren=333285633 - Example response: {"data":{"company":{"name":"EQUIP'TEC","status":"active"},"coverage":{"directory_as_of":"2026-07-12","note":"reachability reflects the public Peppol directory export dated directory_as_of, not a live SMP lookup"},"participants":[{"country":"FR","document_types":[{"display_name":"Peppol Invoice Response transaction 3.0","identifier":"urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2::ApplicationResponse##urn:fdc:peppol.eu:poacc:trns:invoice_response:3::2.1","label":"application-response"},{"display_name":"Peppol Message Level Response transaction 3.0","identifier":"urn:oasis:names:specification:ubl:schema:xsd:ApplicationResponse-2::ApplicationResponse##urn:fdc:peppol.eu:poacc:trns:mlr:3::2.1","label":"application-response"}],"id":"0009:33328563300033","names":["EQUIPTEC"],"registered_on":"2023-03-27","scheme":"0009","value":"33328563300033"},{"country":"FR","document_types":[{"display_name":"France UBL Invoice CIUS","identifier":"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:peppol:france:billing:cius:1.0::2.1","label":"invoice"},{"display_name":"France CII Invoice CIUS","identifier":"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100::CrossIndustryInvoice##urn:cen.eu:en16931:2017#compliant#urn:peppol:france:billing:cius:1.0::D22B","label":"cross-industry-invoice"},{"display_name":"France UBL Invoice Extension","identifier":"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#conformant#urn:peppol:france:billing:extended:1.0::2.1","label":"invoice"},{"display_name":"France CII Invoice Extension","identifier":"urn:un:unece:uncefact:data:standard:CrossIndustryInvoice:100::CrossIndustryInvoice##urn:cen.eu:en16931:2017#conformant#urn:peppol:france:billing:extended:1.0::D22B","label":"cross-industry-invoice"},{"display_name":"Peppol BIS Billing UBL Invoice V3","identifier":"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1","label":"invoice"},{"display_name":"France UBL Credit Note CIUS","identifier":"urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:peppol:france:billing:cius:1.0::2.1","label":"credit-note"},{"display_name":"France UBL Credit Note Extension","identifier":"urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#conformant#urn:peppol:france:billing:extended:1.0::2.1","label":"credit-note"},{"display_name":"Peppol BIS Billing UBL Credit Note V3","identifier":"urn:oasis:names:specification:ubl:schema:xsd:CreditNote-2::CreditNote##urn:cen.eu:en16931:2017#compliant#urn:fdc:peppol.eu:2017:poacc:billing:3.0::2.1","label":"credit-note"},{"display_name":"France CDAR","identifier":"urn:un:unece:uncefact:data:standard:CrossDomainAcknowledgementAndResponse:100::CrossDomainAcknowledgementAndResponse##urn:peppol:france:billing:cdv:1.0::D22B","label":"cross-domain-acknowledgement-and-response"}],"id":"0225:333285633","names":["equiptec_Sage_Company_FUll_Name"],"registered_on":"0001-01-01","scheme":"0225","value":"333285633"}],"reachable":true},"provenance":{"fetched_at":"2026-07-12T20:35:21Z","freshness":{"as_of":"2026-07-12T00:00:00Z","kind":"snapshot"},"source":"peppol-directory"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/report Full counterparty due-diligence on a French company in one paid call, by SIREN: Sirene identity and status, dated BODACC insolvency/deregistration/sale announcements, live EU VAT validation (VIES) and Peppol e-invoicing reachability - each block with its own provenance. The pre-action check before you invoice, pay or onboard. No account, no key. - URL: https://api.invoket.com/company/report - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-report - Example request: GET /company/report?siren=333285633 - Example response: {"data":{"coverage":{"complete":true},"events":{"company":{"name":"EQUIP'TEC","status":"active"},"coverage":{"window":{"from":"2008-01-01","to":"2026-07-12"}},"events":[{"family":"sale","gazette_issue":"20090087","notice_number":382,"published_on":"2009-05-06"}],"flags":{"has_open_insolvency_announcement":false,"is_deregistered":false,"latest_event":{"date":"2009-05-06","family":"sale"}},"provenance":{"fetched_at":"2026-07-12T21:03:42Z","freshness":{"as_of":"2026-07-12T00:00:00Z","kind":"snapshot"},"source":"dila-bodacc"},"siren":"333285633","total":1,"truncated":false},"identity":{"coverage":{"missing":[]},"created_on":"1985-08-01","headquarters":{"address":{"city":"CARVIN","line":"1 RUE DE L’INDUSTRIE","postal_code":"62220"},"created_on":"2013-04-30","siret":"33328563300033","status":"active"},"last_processed_on":"2025-12-06","legal_form":{"code":"5710","label":"SAS, société par actions simplifiée"},"main_activity":{"code":"46.69B","label":"Commerce de gros de fournitures et équipements industriels divers","nomenclature":"NAFRev2"},"name":"EQUIP'TEC","provenance":{"fetched_at":"2026-07-12T21:03:42Z","freshness":{"as_of":"2026-06-30T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"},"siren":"333285633","status":"active","workforce":{"bracket":"02","year":2023}},"lei":{"entity_status":"ACTIVE","legal_name":"EQUIP'TEC","lei":"969500J1H2W1QK3T8N54","limits":"Accounting consolidation parent, NOT beneficial ownership (AML/KYC), no ownership percentage published. Absence of a declared parent is not evidence of absence of control.","provenance":{"fetched_at":"2026-07-12T21:03:42Z","freshness":{"as_of":"2026-07-12T00:00:00Z","kind":"snapshot"},"source":"gleif"},"registration_status":"ISSUED","total_matches":1,"ultimate_parent":{"link":{"entity":{"legal_country":"FR","legal_name":"GROUPE EQUIPTEC HOLDING"},"lei":"969500M4TQ2S8K1P0R37","relationship_status":"ACTIVE"},"status":"declared"},"verified_against_sirene":true},"peppol":{"company":{"name":"EQUIP'TEC","status":"active"},"coverage":{"directory_as_of":"2026-07-12","note":"reachability reflects the public Peppol directory export dated directory_as_of, not a live SMP lookup"},"participants":[{"country":"FR","document_types":[{"display_name":"France UBL Invoice CIUS","identifier":"urn:oasis:names:specification:ubl:schema:xsd:Invoice-2::Invoice##urn:cen.eu:en16931:2017#compliant#urn:peppol:france:billing:cius:1.0::2.1","label":"invoice"}],"id":"0225:333285633","names":["equiptec_Sage_Company_FUll_Name"],"registered_on":"0001-01-01","scheme":"0225","value":"333285633"}],"provenance":{"fetched_at":"2026-07-12T21:03:42Z","freshness":{"as_of":"2026-07-12T00:00:00Z","kind":"snapshot"},"source":"peppol-directory"},"reachable":true},"siren":"333285633","summary":{"has_open_insolvency_announcement":false,"peppol_reachable":true,"status":"active","vat_status":"valid"},"vat":{"address":"1 RUE DE L INDUSTRIE\n62220 CARVIN","checked_at":"2026-07-12T21:03:42Z","country":"FR","derived_from_siren":"333285633","name":"SAS EQUIP'TEC","provenance":{"fetched_at":"2026-07-12T21:03:42Z","freshness":{"kind":"live"},"source":"vies + pure-computation"},"status":"valid","syntax_valid":true,"vat_number":"FR20333285633"}},"provenance":{"fetched_at":"2026-07-12T21:03:42Z","freshness":{"as_of":"2026-06-30T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/lei Identify the company behind a bank identifier, a French SIREN, an ISIN or an exact name before you onboard, pay or invoice it: official GLEIF LEI identity - legal name, jurisdiction, entity and registration status, addresses, national registration number, mapped BICs and ISINs. Lookup by LEI, BIC (8 or 11), ISIN, SIREN, or exact legal name plus country. Homonyms are returned as candidates, never silently resolved. - URL: https://api.invoket.com/company/lei - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-lei - Example request: GET /company/lei?lei=529900S21EQ1BO4ESM68 - Example response: {"data":{"entity":{"entity_category":"GENERAL","entity_status":"ACTIVE","headquarters_address":{"city":"Courbevoie","country":"FR","line":"2 Place Jean Millier - La Défense 6","postal_code":"92400","region":"FR-IDF"},"identifiers":{"bics":[],"bics_total":0,"isins":["FR0000120271","FR0000CR5295","FR0000CR6103","FR0010314021","US89151E1091"],"isins_total":5},"legal_address":{"city":"Courbevoie","country":"FR","line":"2 Place Jean Millier - La Défense 6","postal_code":"92400","region":"FR-IDF"},"legal_form":"TPNT","legal_jurisdiction":"FR","legal_name":"TotalEnergies SE","lei":"529900S21EQ1BO4ESM68","other_names":[],"registration":{"initial_registration_date":"2016-11-11","last_update_date":"2025-10-28","managing_lou":"5299000J2N45DDNE4Y28","next_renewal_date":"2026-12-12","status":"ISSUED"},"registration_authority":{"ra_code":"RA000192","registration_number":"542 051 180","siren":"542051180","verified_against_sirene":true}},"matches":[],"query":{"key":"lei","value":"529900S21EQ1BO4ESM68"},"total_matches":1},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"gleif"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /company/ownership Find out who controls a counterparty before you onboard, pay or invoice it: the declared control chain from the official GLEIF Level 2 reference, by LEI - direct parent, ultimate parent, the dated chain between them, and direct subsidiaries. A declared absence of parent comes back with its official reason, never as an empty block. This is the accounting consolidation parent, not beneficial ownership. - URL: https://api.invoket.com/company/ownership - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/company-ownership - Example request: GET /company/ownership?depth=5&direction=up&lei=9695000AHZHGK28ZO963 - Example response: {"data":{"chain":[{"entity":{"entity_status":"ACTIVE","legal_country":"FR","legal_jurisdiction":"FR","legal_name":"ASSURECUREUIL PIERRE 4","lei":"969500B5IW6GWFPJ1347","registration_status":"ISSUED"},"lei":"969500B5IW6GWFPJ1347","period":{"start":"2002-12-24"},"relationship_status":"ACTIVE"},{"entity":{"legal_name":"CNP ASSURANCES"},"lei":"969500QKVPV2H8UXM738","period":{"start":"1994-10-14"},"relationship_status":"ACTIVE"},{"entity":{"legal_name":"CNP ASSURANCES HOLDING"},"lei":"9695008OXM90U326XP05","period":{"start":"2023-01-01"},"relationship_status":"ACTIVE"},{"entity":{"legal_name":"LA BANQUE POSTALE"},"lei":"96950066U5XAAIRCPA78","period":{"start":"2009-07-25"},"relationship_status":"ACTIVE"},{"entity":{"legal_name":"LA POSTE"},"lei":"9695000YG7TR7PAP0L59","period":{"start":"2005-12-31"},"relationship_status":"ACTIVE"}],"chain_truncated":true,"children_truncated":false,"cycle_detected":false,"direct_parent":{"link":{"entity":{"entity_status":"ACTIVE","legal_country":"FR","legal_jurisdiction":"FR","legal_name":"ASSURECUREUIL PIERRE 4","lei":"969500B5IW6GWFPJ1347","registration_status":"ISSUED"},"lei":"969500B5IW6GWFPJ1347","period":{"start":"2002-12-24"},"relationship_status":"ACTIVE"},"status":"declared"},"limits":"Relationships are self-declared by the entities to GLEIF and describe accounting consolidation (the parent that consolidates the entity in its financial statements). This is NOT beneficial ownership under AML/KYC rules, and Level 2 publishes no ownership percentage. The absence of a declared parent is not evidence of an absence of control.","query":{"depth":5,"direction":"up","lei":"9695000AHZHGK28ZO963"},"subject":{"entity_status":"ACTIVE","legal_country":"FR","legal_jurisdiction":"FR","legal_name":"LE MARQUIS","lei":"9695000AHZHGK28ZO963","registration_status":"ISSUED"},"ultimate_parent":{"link":{"entity":{"entity_status":"ACTIVE","legal_country":"FR","legal_jurisdiction":"FR","legal_name":"CAISSE DES DEPOTS ET CONSIGNATIONS","lei":"969500Q2PFTTP0Y5QL44","registration_status":"ISSUED"},"lei":"969500Q2PFTTP0Y5QL44","period":{"start":"2002-12-24"},"relationship_status":"ACTIVE"},"status":"declared"}},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"gleif"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /preflight/supplier Run every check on a supplier before you onboard, pay or invoice it, in one call: identity and status (INSEE Sirene or GLEIF), BODACC insolvency and deregistration announcements, live EU VAT validation (VIES), Peppol e-invoicing reachability, the declared control chain, and OFAC/EU/UN sanctions screening of both the company and its ultimate parent. Returns a verdict - stop, review, insufficient_coverage, ok - with every reason attached to its block and source. - URL: https://api.invoket.com/preflight/supplier - Price: $0.05 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/preflight-supplier - Example request: GET /preflight/supplier?screen_parent=true&siren=316037753 - Example response: {"data":{"blocks":{"events":{"coverage":"complete","data":{"coverage":{"window":{"from":"2008-01-01","to":"2026-07-26"}},"events":[],"flags":{"has_open_insolvency_announcement":false,"is_deregistered":false},"siren":"316037753","total":0,"truncated":false},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-07-26T00:00:00Z","kind":"snapshot"},"source":"dila-bodacc"}},"group":{"coverage":"complete","data":{"legal_country":"FR","lei":"0XKTQGPTA3P542CII630","ultimate_parent":{"link":{"entity":{"legal_country":"US","legal_name":"INTERNATIONAL BUSINESS MACHINES CORPORATION"},"lei":"VGRQXHF3J8VDLUA7XE92","period":{"start":"1988-07-08"},"relationship_status":"ACTIVE"},"status":"declared"}},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"gleif"}},"identity":{"coverage":"complete","data":{"coverage":{"missing":[]},"headquarters":{"siret":"31603775300050","status":"active"},"legal_form":{"code":"5710"},"lei":{"lei":"0XKTQGPTA3P542CII630","registration_status":"ISSUED","verified_against_sirene":true},"name":"IBM FRANCE FINANCEMENT","siren":"316037753","status":"active"},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-06-30T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}},"name_screening":{"coverage":"complete","data":{"hits":[],"lists_screened":[{"entities":19157,"list":"OFAC-SDN"}],"query":{"name":"IBM FRANCE FINANCEMENT"},"total_matches":0,"truncated":false,"verdict":"no_hit"},"provenance":{"fetched_at":"2026-07-28T20:42:05Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}},"parent_screening":{"coverage":"complete","data":{"hits":[{"id":"OFAC-SDN:45091","list_source":"OFAC-SDN","listed_on":"2023-09-14","match_type":"partial_tokens","matched_name":"LIMITED LIABILITY COMPANY INTERNATIONAL BUSINESS CORPORATION"}],"query":{"name":"INTERNATIONAL BUSINESS MACHINES CORPORATION"},"total_matches":3,"truncated":false,"verdict":"weak_hit"},"provenance":{"fetched_at":"2026-07-28T20:42:05Z","freshness":{"as_of":"2026-07-28T00:00:00Z","kind":"snapshot"},"source":"ofac-sdn+ofac-consolidated+eu-fsf+un-sc"}},"peppol":{"coverage":"complete","data":{"coverage":{"directory_as_of":"2026-07-26"},"participants":[],"reachable":false},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-07-26T00:00:00Z","kind":"snapshot"},"source":"peppol-directory"}},"vat":{"coverage":"complete","data":{"checked_at":"2026-07-28T20:42:06Z","country":"FR","derived_from_siren":"316037753","status":"valid","syntax_valid":true,"vat_number":"FR60316037753"},"provenance":{"fetched_at":"2026-07-28T20:42:06Z","freshness":{"kind":"live"},"source":"vies + pure-computation"}}},"limits":"This verdict is a deterministic decision table over sourced, dated facts from public registers; it is not a credit opinion, a risk score or a recommendation to act. 'ok' only means that every requested check was answered and none of them raised a signal, on the data served (see each block's provenance and coverage). Parent screening covers the declared accounting consolidation parent, never the beneficial owner.","query":{"iban_submitted":false,"key":"siren","screen_parent":true,"value":"316037753"},"subject":{"lei":"0XKTQGPTA3P542CII630","name":"IBM FRANCE FINANCEMENT","siren":"316037753"},"verdict":"review","verdict_reasons":[{"block":"parent_screening","code":"parent_weak_sanctions_hit","detail":"partial_tokens"}]},"provenance":{"fetched_at":"2026-07-28T20:42:04Z","freshness":{"as_of":"2026-06-30T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /certify/batch Clean a customer or supplier file before the French e-invoicing switchover: submit up to 200 lines with their SIREN or SIRET and get one sourced verdict per line - existence and administrative state in the INSEE Sirene register, insolvency and deregistration announcements in the BODACC gazette, and the name you hold compared to the one the register publishes. The batch carries a signed Merkle root, so the buyer of the file can verify any single line offline. - URL: https://api.invoket.com/certify/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 200 units) - Docs: https://invoket.com/docs/api/certify-batch - Example request: POST /certify/batch {"profile":"e-invoicing-fr","subjects":[{"expected_name":"AIR LIQUIDE","ref":"row-42","siren":"552096281"},{"ref":"row-43","siret":"39503084400124"}]} - Example response: {"data":{"certificate":{"alg":"Ed25519","certificate_version":1,"issued_at":"2026-08-13T21:43:42.003755674Z","key_id":"invoket-2026-08","payload_hash":"sha256:LM-accTSUNwGOT80qthevPbS71Osdn3ZiyJAoGYQJkU","profile":"e-invoicing-fr","signature":"DbvPMPWFc8CLiUhrmuDHu-A64iSYZlHbd81nC5OALv_P5tbodKEf1SKJmiJAHP2p_EG6Gzdiend_KxY3stOeAA","subject_count":1},"limits":"This certifies, for each subject, its existence, its administrative state and its published legal events in the French Sirene and BODACC registers, as of the dates carried by each record's provenance - and nothing else. It does NOT certify that an email address is deliverable, that the subject is registered in the French e-invoicing directory (AIFE) or reachable there, nor that a company name resolves to a SIREN: a line without an exact, well-formed key is returned 'unresolved', never guessed. The 'e-invoicing-fr' profile answers the identity and events blocks only - VAT, Peppol, group and sanctions screening are not part of it, so a verdict of 'ok' is an 'ok' on those two blocks. Each record's timeline is capped at the 10 most recent notices ('total' and 'truncated' say so; the flags are derived from the full history, so no verdict depends on the cap). A verdict is a deterministic decision table over sourced, dated facts; it is not a credit opinion, a risk score or a recommendation to act.","profile":"e-invoicing-fr","proofs":{"available_until":"2026-08-14T21:43:42.003755674Z","batch_id":"batch_AaFqoqU2kU6v58C8o6DJ6g","retention":"This index keeps only the record digests and the batch root - never the records themselves. It lives in memory: a restart of the service, or a burst of batches, can drop it before 'available_until'. It is a convenience, never a source of truth: every record of this response carries its 'fingerprint', so any inclusion path can be recomputed offline, without us."},"records":[{"data":{"blocks":{"events":{"coverage":"complete","data":{"coverage":{"window":{"from":"2008-01-01","to":"2026-08-09"}},"events":[{"court":"GREFFE DU TRIBUNAL DE COMMERCE DE NANTERRE","effective_on":"2017-11-01","family":"sale","gazette_issue":"20170248","nature":"Achat d'un fonds par une personne morale (insertion provisoire)","notice_number":1358,"published_on":"2017-12-27","text":"- Acte SSP en date du 24/10/2017 enregistré au service de la publicité foncière et de l'enregistrement de Nanterre 3 le 17/11/2017…"}],"flags":{"has_open_insolvency_announcement":false,"is_deregistered":false,"latest_event":{"date":"2017-11-01","family":"sale"}},"siren":"552096281","total":3,"truncated":false},"provenance":{"fetched_at":"2026-08-13T21:43:42.003755674Z","freshness":{"as_of":"2026-08-09T00:00:00Z","kind":"snapshot"},"source":"dila-bodacc"}},"identity":{"coverage":"complete","data":{"coverage":{"missing":[]},"created_on":"1955-01-01","diffusion_status":"full","headquarters":{"address":{"city":"PARIS","line":"75 QUAI D'ORSAY","postal_code":"75007"},"siret":"55209628100019","status":"active"},"legal_form":{"code":"5599","label":"SA à conseil d'administration (s.a.i.)"},"main_activity":{"code":"78.30Z","nomenclature":"NAFRev2"},"name":"L'AIR LIQUIDE SOCIETE ANONYME POUR L'ETUDE ET L'EXPLOITATION DES PROCEDES GEORGES CLAUDE","siren":"552096281","status":"active"},"provenance":{"fetched_at":"2026-08-13T21:43:42.003755674Z","freshness":{"as_of":"2026-07-31T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}}},"subject":{"expected_name":"AIR LIQUIDE","expected_name_check":"mismatch","index":0,"key":"siren","name":"L'AIR LIQUIDE SOCIETE ANONYME POUR L'ETUDE ET L'EXPLOITATION DES PROCEDES GEORGES CLAUDE","ref":"row-42","siren":"552096281","value":"552096281"},"verdict":"review","verdict_reasons":[{"block":"identity","code":"expected_name_mismatch","detail":"the register publishes \"L'AIR LIQUIDE SOCIETE ANONYME POUR L'ETUDE ET L'EXPLOITATION DES PROCEDES GEORGES CLAUDE\""}]},"fingerprint":"sha256:LM-accTSUNwGOT80qthevPbS71Osdn3ZiyJAoGYQJkU","issue":"certified","provenance":{"fetched_at":"2026-08-13T21:43:42.003755674Z","freshness":{"as_of":"2026-07-31T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}}],"summary":{"by_issue":{"certified":1,"unresolved":0},"by_reason":{"expected_name_mismatch":1},"by_verdict":{"insufficient_coverage":0,"ok":0,"review":1,"stop":0},"subjects":1}},"provenance":{"fetched_at":"2026-08-13T21:43:42.003755674Z","freshness":{"as_of":"2026-07-31T00:00:00Z","kind":"snapshot"},"source":"insee-sirene"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /medication/resolve Resolve a medication before your agent acts on a prescription or an order: official identity from the French BDPM registry (ANSM/HAS) by CIS code, exact name or DCI substance - authorization and marketing status, active substances normalized to INN (the FR-US bridge), pack-level price and reimbursement rate, generic group. Same endpoint resolves US drugs by NDC or name (openFDA/RxNorm). No account, no key, pay per call. - URL: https://api.invoket.com/medication/resolve - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/medication-resolve - Example request: GET /medication/resolve?cis=60424338 - Example response: {"data":{"found":true,"medications":[{"authorization_date":"1998-12-10","country":"FR","dispensing":["liste I"],"enhanced_surveillance":false,"form":"gélule","generic_groups":[{"id":148,"label":"AMOXICILLINE 500 mg - CLAMOXYL 500 mg, gélule"}],"holder":"VIATRIS SANTE","identifiers":{"cis":"60424338"},"marketing_status":"Commercialisée","name":"AMOXICILLINE VIATRIS 500 mg, gélule","presentations":[{"cip13":"3400934913174","cip7":"3491317","collectivities_approved":true,"declared_at":"2014-07-04","dispensing_fee_cents":102,"label":"plaquette(s) thermoformée(s) PVC-aluminium PVDC de 12 gélule(s)","marketing":"Déclaration de commercialisation","price_cents":153,"price_with_dispensing_fee_cents":255,"reimbursement_rate":"65%"}],"routes":["orale"],"status":"Autorisation active","substances":[{"id":"amoxicillin","labels_en":["amoxicillin"],"labels_fr":["amoxicilline","amoxicilline trihydratée"],"mapped":true,"raw_label":"AMOXICILLINE TRIHYDRATÉE","source_code":"28165"}]}]},"provenance":{"fetched_at":"2026-08-01T08:36:36.878803525Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"BDPM"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /medication/generics Find the French BDPM generic group of a medication before your agent substitutes or sources it: given a CIS code, exact name or DCI substance, returns the group's principle brand (princeps) and every equivalent generic, each with its role (princeps/generique), official name and pack-level public price and reimbursement rate when the BDPM publishes them. French (BDPM) scope: a US NDC key returns an honest FR-only coverage note. No account, no key, pay per call. - URL: https://api.invoket.com/medication/generics - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/medication-generics - Example request: GET /medication/generics?cis=60005856 - Example response: {"data":{"coverage":{"members_without_identity":1,"note":"1 group member(s) have no name or presentations: the BDPM generic-groups file references CIS codes absent from the BDPM specialities file (marketing authorisation withdrawn); nothing is inferred"},"found":true,"groups":[{"id":12,"label":"FAMOTIDINE 20 mg - PEPDINE 20 mg, comprimé pelliculé","members":[{"cis":"67942333","identity":"withdrawn_from_bdpm_specialities","is_query":false,"type":"princeps"},{"cis":"60005856","is_query":true,"name":"FAMOTIDINE EG 20 mg, comprimé pelliculé","presentations":[{"cip13":"3400935510259","cip7":"3551025","collectivities_approved":true,"declared_at":"2004-03-25","dispensing_fee_cents":102,"label":"plaquette(s) PVC-Aluminium PVDC de 30 comprimé(s)","marketing":"Déclaration de commercialisation","price_cents":782,"price_with_dispensing_fee_cents":884,"reimbursement_rate":"15%"}],"type":"generique"}]}]},"provenance":{"fetched_at":"2026-08-01T08:36:36.945302920Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"BDPM"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /medication/availability Check a medication's availability before your agent orders or substitutes it: shortage reports from the French ANSM (data.ANSM) by CIS code or substance (INN/DCI) - status (rupture, risque_rupture, tension, remise_a_disposition, arret_commercialisation, or no_known_shortage), report dates, expected return and the official ANSM report URL. Honest by design: ANSM only records reported shortages, so the absence of a report is never a stock guarantee. French market scope: a US NDC key returns an honest FR-only coverage note. No account, no key, pay per call. - URL: https://api.invoket.com/medication/availability - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/medication-availability - Example request: GET /medication/availability?cis=65806466 - Example response: {"data":{"coverage":{"note":"ANSM publishes product labels, not CIS codes; unlinked_signals reports in this snapshot could not be linked to a CIS and are invisible to this key — query ?substance= to check them","scope":"FR","unlinked_signals":60},"note":"ANSM only records reported shortages; the absence of a report does not guarantee pharmacy stock","signals":[{"cis":"65806466","domain":"Cardiologie","match_kind":"exact","name":"Alprostadil Intsel Chimos 0,5 mg/ml, solution injectable","source_ref":"https://ansm.sante.fr/disponibilites-des-produits-de-sante/medicaments/alprostadil-intsel-chimos-0-5-mg-ml-solution-injectable-alprostadil","status":"rupture","updated_at":"2022-11-23"}],"status":"rupture"},"provenance":{"fetched_at":"2026-08-01T08:36:36.973070427Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"ANSM — disponibilité des médicaments (ansm.sante.fr)"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /medication/interactions Check drug-drug interactions against the authoritative French ANSM thesaurus before your agent acts on a prescription or an order: post 2+ medications (CIS code, US NDC, INN/DCI substance or ANSM class) and get every published interaction between them - constraint level (contre_indication, association_deconseillee, precaution_emploi, a_prendre_en_compte), management advice and mechanism exactly as published by ANSM, plus honest coverage of anything that could not be compared. US drugs join via the INN substance bridge. No account, no key, pay per call. - URL: https://api.invoket.com/medication/interactions - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/medication-interactions - Example request: POST /medication/interactions {"items":[{"cis":"60177044"},{"dci":"simvastatine"}]} - Example response: {"data":{"coverage":{"complete":true,"notes":"Absence of interactions is asserted only for the evaluated pairs; unresolved items and unevaluated substances were not compared.","unresolved_items":[]},"disclaimer":"Factual relay of the French ANSM interactions thesaurus (level and management as published); not personalized medical advice.","evaluated_pairs":1,"interactions":[{"a":{"ansm_protagonist":"AMIODARONE","item":0,"matched":"amiodarone"},"b":{"ansm_protagonist":"SIMVASTATINE","item":1,"matched":"simvastatin"},"level":"precaution_emploi","level_label":"precaution for use","management":"Ne pas dépasser la posologie de 20 mg/j de simvastatine ou utiliser une autre statine non concernée par ce type d’interaction.","mechanism":"Risque majoré d'effets indésirables (concentration-dépendants) à type de rhabdomyolyse (diminution du métabolisme hépatique de la simvastatine).","source":"Thésaurus ANSM"}]},"provenance":{"fetched_at":"2026-08-01T08:36:37.009713775Z","freshness":{"as_of":"2024-06-07T00:00:00Z","kind":"snapshot"},"source":"Thésaurus ANSM"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /medication/report One consolidated medication report before your agent acts on a prescription or an order, by French CIS code or US NDC: official BDPM identity with pack-level price and reimbursement, INN-normalized substances, BDPM generic group, ANSM shortage status, and ANSM-thesaurus drug-drug interactions between the subject and an optional co-medication list (with=, comma-separated CIS/NDC/DCI). Every section carries its own source and date; honest coverage. No account, no key, pay per call. - URL: https://api.invoket.com/medication/report - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/medication-report - Example request: GET /medication/report?cis=60441622&with=simvastatine - Example response: {"data":{"availability":{"coverage":{"note":"ANSM publishes product labels, not CIS codes […]","scope":"FR","unlinked_signals":60},"evaluated":true,"note":"ANSM only records reported shortages […]","signals":[],"source":{"as_of":"2026-08-01","name":"ANSM — disponibilité des médicaments (ansm.sante.fr)"},"status":"no_known_shortage"},"coverage":{"not_evaluated":[],"note":"sections listed in not_evaluated were not assessed […]"},"generics":{"coverage":{"members_without_identity":3,"note":"3 group member(s) have no name or presentations […]"},"evaluated":true,"found":true,"groups":[{"id":43,"label":"AMIODARONE (CHLORHYDRATE D’) 200 mg - CORDARONE 200 mg, comprimé sécable","members":[{"cis":"64408662","is_query":false,"name":"CORDARONE 200 mg, comprimé sécable","type":"princeps"},{"cis":"60214247","identity":"withdrawn_from_bdpm_specialities","is_query":false,"type":"generique"},{"cis":"60441622","is_query":true,"name":"AMIODARONE VIATRIS 200 mg, comprimé sécable","type":"generique"}]}],"note":"member presentations are elided in the report; call /medication/generics for full detail","source":{"as_of":"2026-08-01","name":"BDPM"}},"interactions":{"coverage":{"complete":true,"notes":"Absence of interactions is asserted only for the evaluated pairs […]","unresolved_items":[]},"disclaimer":"Factual relay of the French ANSM interactions thesaurus (level and management as published); not personalized medical advice.","evaluated":true,"evaluated_pairs":1,"internal":[],"internal_evaluated_pairs":0,"note":"with_provided lists pairs involving the subject only (item 0 is the subject, item i is with[i-1]); internal lists pairs among the subject's own substances […]","source":{"as_of":"2024-06-07","name":"Thésaurus ANSM"},"with_provided":[{"a":{"ansm_protagonist":"AMIODARONE","item":0,"matched":"amiodarone"},"b":{"ansm_protagonist":"SIMVASTATINE","item":1,"matched":"simvastatin"},"level":"precaution_emploi","level_label":"precaution for use","management":"Ne pas dépasser la posologie de 20 mg/j de simvastatine […]","mechanism":"Risque majoré d'effets indésirables […] à type de rhabdomyolyse […]","source":"Thésaurus ANSM"}]},"medication":{"evaluated":true,"found":true,"medications":[{"authorization_date":"1997-12-05","country":"FR","enhanced_surveillance":false,"form":"comprimé sécable","holder":"VIATRIS SANTE","identifiers":{"cis":"60441622"},"marketing_status":"Commercialisée","name":"AMIODARONE VIATRIS 200 mg, comprimé sécable","presentations":[{"cip13":"3400934544408","dispensing_fee_cents":102,"label":"plaquette(s) thermoformée(s) PVC aluminium de 30 comprimé(s)","price_cents":720,"price_with_dispensing_fee_cents":822,"reimbursement_rate":"65%"}],"routes":["orale"],"status":"Autorisation active","substances":[{"id":"amiodarone","mapped":true,"raw_label":"CHLORHYDRATE D'AMIODARONE"}]}],"source":{"as_of":"2026-08-01","name":"BDPM"}},"subject":{"cis":"60441622"}},"provenance":{"fetched_at":"2026-08-01T08:36:37.062771408Z","freshness":{"as_of":"2024-06-07T00:00:00Z","kind":"snapshot"},"source":"BDPM + ANSM — disponibilité des médicaments (ansm.sante.fr) + Thésaurus ANSM"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /label/chem/classify Before your agent approves a substance for an EU label or safety data sheet: the harmonised classification and labelling from Annex VI of the CLP regulation (ECHA), by CAS, EC number or exact name - hazard classes with H statements, GHS pictograms, signal word, concentration limits, versioned by ATP: the entry in force at the queried date, plus the upcoming change when a published but not-yet-applicable ATP modifies it. Absence from Annex VI returns an explicit self-classification verdict. - URL: https://api.invoket.com/label/chem/classify - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/label-chem-classify - Example request: GET /label/chem/classify?at=2026-06-01&cas=100-41-4 - Example response: {"data":{"entries":[{"atp":{"applicable_from":"2026-05-01","celex":"32014R0605","eurlex_url":"https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32014R0605","regulation":"Annex VI to CLP — entry version ATP06 (CELEX 32014R0605)"},"cas_numbers":["100-41-4"],"cmr_1a_1b":false,"ec_numbers":["202-849-4"],"hazard_classes":[{"category":"2","class":"Flam. Liq.","h_statement":"H225"},{"category":"4","class":"Acute Tox.","h_statement":"H332","note_marker":"*"},{"category":"1","class":"Asp. Tox.","h_statement":"H304"},{"category":"2","class":"STOT RE","h_statement":"H373 (hearing organs)"}],"hazard_statements":["H225","H332","H304","H373 (hearing organs)"],"index_number":"601-023-00-4","label_hazard_statements":["H225","H332","H304","H373 (hearing organs)"],"name":"ethylbenzene","pictograms":["GHS02","GHS07","GHS08"],"signal_word":"Dgr","suppl_hazard_statements":[]}],"verdict":"harmonised"},"provenance":{"fetched_at":"2026-08-01T17:35:18Z","freshness":{"as_of":"2026-05-01T00:00:00Z","kind":"snapshot"},"source":"ECHA Annex VI (CLP), harmonised classification and labelling"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /label/chem/classify/batch Before your agent clears a BOM or a formulation for the EU market: screen up to 200 substances in one call against Annex VI of the CLP regulation (ECHA) - one harmonised-classification verdict per item (CAS, EC number or exact name) with H statements, GHS pictograms, signal word, and the ATP version in force plus upcoming ATP changes; a malformed item is flagged at its position instead of failing the batch, and an unlisted substance gets an explicit self-classification verdict. - URL: https://api.invoket.com/label/chem/classify/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 200 units) - Docs: https://invoket.com/docs/api/label-chem-classify-batch - Example request: POST /label/chem/classify/batch {"at":"2026-06-01","items":[{"cas":"100-41-4"},{"cas":"7732-18-5"}]} - Example response: {"data":{"count":2,"results":[{"entries":[{"atp":{"applicable_from":"2026-05-01","celex":"32014R0605","eurlex_url":"https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32014R0605","regulation":"Annex VI to CLP — entry version ATP06 (CELEX 32014R0605)"},"cas_numbers":["100-41-4"],"cmr_1a_1b":false,"ec_numbers":["202-849-4"],"hazard_classes":[{"category":"2","class":"Flam. Liq.","h_statement":"H225"},{"category":"4","class":"Acute Tox.","h_statement":"H332","note_marker":"*"}],"hazard_statements":["H225","H332"],"index_number":"601-023-00-4","label_hazard_statements":["H225","H332"],"name":"ethylbenzene","pictograms":["GHS02","GHS07","GHS08"],"signal_word":"Dgr","suppl_hazard_statements":[]}],"verdict":"harmonised"},{"entries":[],"note":"Not listed in the harmonised classification (Annex VI CLP) in force at this date. Absence does not mean the substance is not hazardous: self-classification under CLP remains the responsibility of the entity placing it on the market.","verdict":"not_harmonised"}]},"provenance":{"fetched_at":"2026-08-01T17:35:18Z","freshness":{"as_of":"2026-05-01T00:00:00Z","kind":"snapshot"},"source":"ECHA Annex VI (CLP), harmonised classification and labelling"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /label/chem/svhc Before your agent clears a substance, an article or a supply-chain declaration for the EU market: is it on the ECHA Candidate List of substances of very high concern (SVHC, REACH)? By CAS, EC number or exact name - the published entry with its Article 57 inclusion reasons (CMR, PBT, vPvB, equivalent concern), inclusion date and the ECHA inclusion decisions as published, plus the generic obligations it triggers (REACH Article 33 information duty, SCIP notification above 0.1 % w/w). A not-listed verdict is dated to the served list, never an all-clear. - URL: https://api.invoket.com/label/chem/svhc - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/label-chem-svhc - Example request: GET /label/chem/svhc?cas=84-74-2 - Example response: {"data":{"entries":[{"decisions":["https://echa.europa.eu/documents/10162/d33fd29e-5170-440f-8c16-10ecd87cf472","https://echa.europa.eu/documents/10162/2f10864f-e748-0e86-9bc4-2b3964fbdace","https://echa.europa.eu/documents/10162/326a8103-bc47-fb36-0871-22b46ec9d66f","https://echa.europa.eu/documents/10162/94f8f2db-076b-b817-31ae-c14f487642e9"],"identifiers":[{"ec":"201-557-4"},{"cas":"84-74-2"}],"included_at":"2008-10-28","name":"Dibutyl phthalate (DBP)","obligations":{"article_33":"REACH Article 33: a supplier of an article containing this substance in a concentration above 0.1 % weight by weight (w/w) must provide the recipient with sufficient information, available to the supplier, to allow safe use of the article, including as a minimum the name of the substance; on request, the same information must be provided to a consumer within 45 days, free of charge.","scip":"SCIP notification (Waste Framework Directive 2008/98/EC, Article 9(1)(i)): suppliers of articles containing this substance in a concentration above 0.1 % weight by weight (w/w) placed on the EU market must submit information on those articles to the ECHA SCIP database."},"reasons":["Toxic for reproduction (Article 57c)","Endocrine disrupting properties (Article 57(f) - environment)","Endocrine disrupting properties (Article 57(f) - human health)"]}],"verdict":"listed"},"provenance":{"fetched_at":"2026-08-01T14:20:24Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"ECHA Candidate List of SVHC (REACH Art. 59(10))"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /label/chem/svhc/batch Before your agent clears a BOM, a formulation or a supplier declaration for the EU market: screen up to 200 substances in one call against the ECHA Candidate List of SVHC (REACH) - one verdict per item (CAS, EC number or exact name) with the published Article 57 inclusion reasons, inclusion date and the triggered obligations (REACH Article 33, SCIP notification); a malformed item is flagged at its position instead of failing the batch, and a not-listed substance gets an explicit verdict dated to the served list. - URL: https://api.invoket.com/label/chem/svhc/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 200 units) - Docs: https://invoket.com/docs/api/label-chem-svhc-batch - Example request: POST /label/chem/svhc/batch {"items":[{"cas":"84-74-2"},{"cas":"7732-18-5"}]} - Example response: {"data":{"count":2,"results":[{"entries":[{"decisions":["https://echa.europa.eu/documents/10162/d33fd29e-5170-440f-8c16-10ecd87cf472","https://echa.europa.eu/documents/10162/2f10864f-e748-0e86-9bc4-2b3964fbdace","https://echa.europa.eu/documents/10162/326a8103-bc47-fb36-0871-22b46ec9d66f","https://echa.europa.eu/documents/10162/94f8f2db-076b-b817-31ae-c14f487642e9"],"identifiers":[{"ec":"201-557-4"},{"cas":"84-74-2"}],"included_at":"2008-10-28","name":"Dibutyl phthalate (DBP)","obligations":{"article_33":"REACH Article 33: a supplier of an article containing this substance above 0.1 % w/w must provide the recipient with sufficient information […]","scip":"SCIP notification (Waste Framework Directive 2008/98/EC, Article 9(1)(i)): […]"},"reasons":["Toxic for reproduction (Article 57c)","Endocrine disrupting properties (Article 57(f) - environment)","Endocrine disrupting properties (Article 57(f) - human health)"]}],"verdict":"listed"},{"entries":[],"note":"Not on the ECHA Candidate List of SVHC as published on 2026-08-01. This verdict is dated: it means the substance was not listed at that date, not that it never will be. Absence from the Candidate List does not mean the substance is of no concern.","verdict":"not_listed"}]},"provenance":{"fetched_at":"2026-08-01T14:20:39Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"ECHA Candidate List of SVHC (REACH Art. 59(10))"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /label/claims/check Before your agent puts a nutrition or health claim on an EU food label: is the proposed wording an authorised claim (exact legal wording + conditions of use), a non-authorised one (official rejection reason + EFSA opinion), or absent from the EU Register (Regulation (EC) 1924/2006)? Post the label wording (and optionally the nutrient); matching is strict-normalised (case, punctuation, spacing), exact or containment, never fuzzy - zero false positives. The Register carries the REJECTED claims a plain LLM validates by mistake. An absent wording returns the authorised claims for the nutrient plus a limit note (absence is neither authorisation nor prohibition - 'on hold' botanicals are not in the Register). - URL: https://api.invoket.com/label/claims/check - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/label-claims-check - Example request: POST /label/claims/check {"nutrient":"Isomaltulose","wording":"Isomaltulose contributes to normal energy-yielding metabolism"} - Example response: {"data":{"claims":[{"code":"POL-HC-11221","efsa":{"question":"Q-2021-00073","url":"https://efsa.onlinelibrary.wiley.com/doi/epdf/10.2903/j.efsa.2021.6849"},"legislation":"1945255","nutrient":"Isomaltulose","rejections":[{"code":"HC_RR_166","reason":"The use of such a health claim would convey a conflicting and confusing message to consumers, because it would encourage consumption of sugars for which, on the basis of generally accepted scientific advice, national and international authorities inform the consumer that their intake should be reduced."}],"status":"non_authorised","type":"Art. 13.5","wording":"Isomaltulose contributes to normal energy-yielding metabolism"}],"match_kind":"exact","verdict":"non_authorised"},"provenance":{"fetched_at":"2026-08-01T13:12:16Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"EU Register on nutrition and health claims"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /label/claims/permitted List the authorised EU nutrition and health claims for a given nutrient or substance (Regulation (EC) 1924/2006): what your agent may legally write on a food label. Pass the nutrient; get every authorised claim as published - exact legal wording, conditions of use, EFSA opinion and legislation. A known nutrient whose claims are all rejected returns an explicit empty list with the rejected count (not a silent gap); a nutrient absent from the Register returns an empty list with a limit note (absence is neither authorisation nor prohibition - 'on hold' botanical claims are not in the Register). The counterpart of /label/claims/check: check starts from a wording, permitted starts from the nutrient. - URL: https://api.invoket.com/label/claims/permitted - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/label-claims-permitted - Example request: GET /label/claims/permitted?nutrient=Vitamin K - Example response: {"data":{"authorised":[{"code":"POL-HC-6523","conditions_of_use":"The claim may be used only for food which is at least a source of vitamin K as referred to in the claim SOURCE OF [NAME OF VITAMIN/S] AND/OR [NAME OF MINERAL/S] as listed in the Annex to Regulation (EC) No 1924/2006.","efsa":{"question":"2009;7(9):1228","url":"http://www.efsa.europa.eu/en/efsajournal/doc/1228.pdf"},"eurlex_url":"http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32012R0432:EN:NOT","legislation":"749652","nutrient":"Vitamin K","status":"authorised","type":"Art. 13.1","wording":"Vitamin K contributes to normal blood clotting"},{"code":"POL-HC-6524","conditions_of_use":"The claim may be used only for food which is at least a source of vitamin K as referred to in the claim SOURCE OF [NAME OF VITAMIN/S] AND/OR [NAME OF MINERAL/S] as listed in the Annex to Regulation (EC) No 1924/2006.","efsa":{"question":"2009;7(9):1228","url":"http://www.efsa.europa.eu/en/efsajournal/doc/1228.pdf"},"eurlex_url":"http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX:32012R0432:EN:NOT","legislation":"749652","nutrient":"Vitamin K","status":"authorised","type":"Art. 13.1","wording":"Vitamin K contributes to the maintenance of normal bones"}],"non_authorised_count":0,"nutrient":"vitamin k","verdict":"found"},"provenance":{"fetched_at":"2026-08-01T13:12:40Z","freshness":{"as_of":"2026-08-01T00:00:00Z","kind":"snapshot"},"source":"EU Register on nutrition and health claims"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /label/cosmetic/ingredient Before your agent clears an ingredient for an EU cosmetic label: is it prohibited (Annex II), restricted (Annex III), or authorised as a colorant (IV), preservative (V) or UV filter (VI) under Regulation (EC) No 1223/2009? By CAS, EC number, INCI name or exact chemical name - every published entry with its maximum concentration, conditions of use and the MANDATORY LABEL WORDING served word for word, versioned by amending regulation: the consolidated version in force at the queried date plus the upcoming change when a published but not-yet-applicable one modifies the entry. CosIng is a legally non-binding information tool: only the Annexes are authoritative, and any divergence is reported, never silently resolved. Absence from the Annexes is not an authorisation - the verdict says so explicitly. - URL: https://api.invoket.com/label/cosmetic/ingredient - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/label-cosmetic-ingredient - Example request: GET /label/cosmetic/ingredient?cas=69-72-7&date=2026-06-01&product_type=Rinse-off hair products - Example response: {"data":{"divergences":[{"annex_in_cosing":"III","annex_in_regulation":"V","detail":"…","kind":"annex_mismatch"}],"entries":[{"amending_act":"Commission Regulation (EU) 2022/1176","annex":"III","applicable_from":"2026-05-16","conditions":[{"max_concentration":"3,0 %","product_type_or_body_part":"Rinse-off hair products","required_label_wording":"Not to be used for children under 3 years of age."},{"other_conditions":"Not to be used in oral products"}],"conditions_omitted_by_product_type":1,"entry_number":"98","status":"restricted","upcoming":{"applicable_from":"2027-03-01","change":"modified","consolidated_ref":"CELEX:02009R1223-20270301"}}],"limits":["Absence from Annexes II to VI … is not an authorisation …","This is not a safety assessment …","Maximum concentrations, conditions of use and label wording are served exactly as published …","CosIng is a legally non-binding information tool …"],"note":"This substance is covered by 2 entries (III/98, V/3). The top-level verdict reflects the most restrictive one; each entry carries its own status and conditions, which all apply cumulatively.","source_divergence":true,"substance":{"cas_numbers":["69-72-7"],"chemical_name":"2-Hydroxybenzoic acid","ec_numbers":["200-712-3"],"inci_name":"SALICYLIC ACID","resolved_from":"annexes"},"verdict":"restricted","version":{"applicable_from":"2026-05-16","applicable_to":"2027-03-01","consolidated_ref":"CELEX:02009R1223-20260516"}},"provenance":{"fetched_at":"2026-07-28T22:05:59Z","freshness":{"as_of":"2026-05-16T00:00:00Z","kind":"snapshot"},"source":"Regulation (EC) No 1223/2009 on cosmetic products — consolidated text (EUR-Lex), Annexes II to VI"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### POST /label/cosmetic/ingredient/batch Before your agent clears a cosmetic formulation for the EU market: screen a whole INCI list - up to 200 ingredients in one call - against Annexes II to VI of Regulation (EC) No 1223/2009. One verdict per item (prohibited, restricted, authorised colorant/preservative/UV filter, or not listed) with the published entries, maximum concentrations, conditions and MANDATORY label wording served word for word, plus a summary count per verdict. A malformed item or an unresolved identity is flagged at its position instead of failing the batch; the input order is preserved but no conclusion is drawn from it (an INCI list's descending-concentration order is not exploited). This is not a formulation compliance verdict: no concentration in the finished product is computed. - URL: https://api.invoket.com/label/cosmetic/ingredient/batch - Price: $0.005 base + $0.005 per unit in USDC (min $0.01, up to 200 units) - Docs: https://invoket.com/docs/api/label-cosmetic-ingredient-batch - Example request: POST /label/cosmetic/ingredient/batch {"date":"2026-06-01","items":[{"inci":"SALICYLIC ACID"},{"cas":"56-81-5"}],"product_type":"Rinse-off hair products"} - Example response: {"data":{"count":3,"limits":["Absence from Annexes II to VI … is not an authorisation …","This is not a safety assessment …","Maximum concentrations, conditions of use and label wording are served exactly as published …","CosIng is a legally non-binding information tool …"],"results":[{"entries":[{"annex":"III","applicable_from":"2026-05-16","conditions":[{"max_concentration":"3,0 %","product_type_or_body_part":"Rinse-off hair products","required_label_wording":"Not to be used for children under 3 years of age."}],"conditions_omitted_by_product_type":1,"entry_number":"98","status":"restricted"},{"annex":"V","applicable_from":"2026-05-16","conditions":[{"max_concentration":"0,5 %","required_label_wording":"Not to be used in preparations for children under 3 years of age, except for shampoos."}],"entry_number":"3","status":"authorised_preservative"}],"note":"This substance is covered by 2 entries (III/98, V/3). …","source_divergence":true,"substance":{"cas_numbers":["69-72-7"],"chemical_name":"2-Hydroxybenzoic acid","ec_numbers":["200-712-3"],"inci_name":"SALICYLIC ACID","resolved_from":"annexes"},"verdict":"restricted"},{"entries":[],"note":"Not listed in Annexes II to VI … as in force on 2026-07-28 … This verdict is dated and is not an authorisation …","source_divergence":false,"substance":{"cas_numbers":["56-81-5"],"ec_numbers":["200-289-5"],"inci_name":"GLYCERIN","resolved_from":"cosing_index"},"verdict":"not_listed"},{"code":"NOT_FOUND","error":"cosmetic ingredient identity not resolved: unknown to Annexes II to VI of Regulation (EC) No 1223/2009 and to the CosIng index"}],"summary":{"authorised_colorant":0,"authorised_preservative":0,"authorised_uv_filter":0,"error":1,"not_listed":1,"prohibited":0,"restricted":1},"version":{"applicable_from":"2026-05-16","applicable_to":"2027-03-01","consolidated_ref":"CELEX:02009R1223-20260516"}},"provenance":{"fetched_at":"2026-07-28T22:06:17Z","freshness":{"as_of":"2026-05-16T00:00:00Z","kind":"snapshot"},"source":"Regulation (EC) No 1223/2009 on cosmetic products — consolidated text (EUR-Lex), Annexes II to VI"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review. ### GET /label/food/additive Before your agent validates a recipe, a food label or an import: is this additive authorised in this food category, at what maximum level and under which conditions (Union list, Regulation (EC) No 1333/2008, Annexes II and III)? By E number or exact published name, WITH a food category code - you get an authorised/not_authorised verdict with the maximum level, restrictions and footnotes served word for word ('quantum satis' as published, never converted), and via_group when the authorisation comes from a published group such as 'E 249 - 250'. WITHOUT a food category you get the inventory of categories where it is authorised and NO verdict: an additive has no status in the abstract. A not_authorised verdict is dated - the Union list is positive. Where the text bounds a line by a 'Period of application', the lines that apply at your date come first and each one carries in_force_at_date: an expired line is flagged, never dropped. - URL: https://api.invoket.com/label/food/additive - Price: $0.01 per call in USDC - Trial: 1 free call per day per payer address - Docs: https://invoket.com/docs/api/label-food-additive - Example request: GET /label/food/additive?date=2026-06-01&e_number=E250&food_category=08.3.2 - Example response: {"data":{"additive":{"e_number":"E250","e_number_published":"E 250","functional_classes":["other than colours and sweeteners"],"groups":["E 249–250"],"name":"Sodium nitrite"},"authorisations":[{"amending_act":"COMMISSION REGULATION (EU) 2023/2108 of 6 October 2023","amending_celex":"32023R2108","amending_oj_date":"2023-10-09","annex":"II","footnotes":[{"number":"58","text":"(58): Fo-value 3 is equivalent to 3 minutes heating at 121 °C …"}],"in_force_at_date":true,"max_level":"55","part":"E","period_from":"2025-10-09","published_as":"Nitrites","restrictions":"only sterilised meat products (Fo > 3,00)\nPeriod of application: from 9 October 2025","via_group":{"group_key":"E249-250","group_name":"E 249-250"}},{"amending_act":"COMMISSION REGULATION (EU) 2023/2108 of 6 October 2023","amending_celex":"32023R2108","amending_oj_date":"2023-10-09","annex":"II","footnotes":[{"number":"7","text":"(7): Maximum amount that may be added during the manufacturing, expressed as NaNO2 or NaNO3"}],"in_force_at_date":false,"max_level":"100","part":"E","period_to":"2025-10-09","published_as":"Nitrites","restrictions":"only sterilised meat products (Fo > 3,00)\nPeriod of application: until 9 October 2025","via_group":{"group_key":"E249-250","group_name":"E 249-250"}}],"food_category":{"annex":"II","code":"08.3.2","name":"Heat-treated meat products","parent_code":"08.3"},"limits":["A food additive has no status in the abstract: an authorisation is published for a couple (additive, food category) …","The Union list is positive: a couple with no published authorisation is 'not_authorised' at the queried date …","Maximum levels, restrictions and footnotes are served exactly as published …","Group authorisations … are stored as published and resolved at read time, with 'via_group' reporting the resolution …","Out of scope: flavourings, food enzymes, novel foods, allergen labelling, nutrition declaration, acceptable daily intakes …"],"note":"E 250 is not authorised by name in food category 08.3.2: the authorisation is published for the group(s) E 249-250, of which it is a published member. The group reference is kept as published and resolved at read time.","verdict":"authorised","version":{"applicable_from":"2026-02-18","applicable_to":"2026-08-18","consolidated_ref":"02008R1333 — EN — 18.02.2026"}},"provenance":{"fetched_at":"2026-08-01T17:06:48Z","freshness":{"as_of":"2026-02-18T00:00:00Z","kind":"snapshot"},"source":"Regulation (EC) No 1333/2008 on food additives — consolidated text (EUR-Lex), Annex II (Union list by food category) and Annex III"}} - Feedback: Found a gap, a bug, or a missing case? Send structured feedback (no payment required) via POST /review.