{"openapi":"3.1.0","info":{"title":"Fuentio","summary":"Verify any company in France or Spain in one call, with sources an auditor accepts.","version":"0.1.0"},"paths":{"/health":{"get":{"tags":["health"],"summary":"Service health","description":"`ok` when the service and its database answer, `down` otherwise. Returns HTTP 503 when down, so uptime monitors can alert on the status code alone. `degraded` (HTTP 200): the database misses a migration this version needs.","operationId":"get_health_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Health Health Get"}}}}}}},"/health/details":{"get":{"tags":["health"],"summary":"Detailed health (admin)","description":"Per connector: status with reasons, last success and error, 24h error rate, p95 upstream latency, data freshness, coverage; per ingest source: last run and held days; database and disk. Requires the admin key.","operationId":"get_health_details_health_details_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Health Details Health Details Get"}}}}}}},"/v1/countries":{"get":{"tags":["coverage"],"summary":"Coverage: countries, identifier formats and sources","description":"Call this first when unsure. Lists every country with its coverage status (`available` or `planned`), the identifier formats it accepts with examples, the official sources with licence and update frequency, and the coverage level. Free.","operationId":"list_countries_v1_countries_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Countries V1 Countries Get"}}}}}}},"/v1/sources":{"get":{"tags":["coverage"],"summary":"Official sources: licence, update frequency, last successful fetch","description":"Every official source Fuentio reads, with its licence and attribution, how often it updates, how Fuentio serves it (`live` from the source with a cache, or `local` from daily ingests), and when it last answered. Refreshed every 5 minutes. Free.","operationId":"list_sources_v1_sources_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Sources V1 Sources Get"}}}}}}},"/v1/companies/search":{"get":{"tags":["companies"],"summary":"Search companies by name","description":"Basic name search in one country's official register, newest data first from the official source. Use it when you know a company's name but not its registry number, then call the lookup with an identifier from the results. Costs 2 units. `meta.next_page` is the page to ask for next (null on the last page).\n\nFrance supports `postal_code` and `status` (`active` or `inactive`). Spain searches the companies Fuentio holds from BORME events and supports `postal_code`, `locality` and `status`.","operationId":"search_companies_v1_companies_search_get","parameters":[{"name":"country","in":"query","required":true,"schema":{"type":"string","description":"ISO 3166-1 alpha-2 code, e.g. FR.","examples":["FR"],"title":"Country"},"description":"ISO 3166-1 alpha-2 code, e.g. FR."},{"name":"q","in":"query","required":true,"schema":{"type":"string","description":"Company name (at least 2 characters).","examples":["renault"],"title":"Q"},"description":"Company name (at least 2 characters)."},{"name":"postal_code","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter on the registered office postal code.","title":"Postal Code"},"description":"Filter on the registered office postal code."},{"name":"locality","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Filter on the registered office town.","title":"Locality"},"description":"Filter on the registered office town."},{"name":"status","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"active | inactive | in_liquidation | dissolved | struck_off | unknown","title":"Status"},"description":"active | inactive | in_liquidation | dissolved | struck_off | unknown"},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":10,"title":"Page Size"}},{"name":"jurisdiction","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"ISO 3166-2 region to search in, for countries with regional registers; GET /v1/countries lists them. The country code means no filter.","title":"Jurisdiction"},"description":"ISO 3166-2 region to search in, for countries with regional registers; GET /v1/countries lists them. The country code means no filter."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","csv","tsv","xlsx","markdown","html","xml","ndjson","parquet"],"type":"string","description":"Answer format. `json` (default) is the usual envelope. `csv`, `tsv`, `markdown`, `html` (a table), `xml` and `ndjson` return the file itself, one row per company with its country, source, source_url, fetched_at and last_verified_at. `xlsx` and `parquet` return a download link valid 24 hours (downloading is free). Same units as JSON; at most 100 rows.","default":"json","title":"Format"},"description":"Answer format. `json` (default) is the usual envelope. `csv`, `tsv`, `markdown`, `html` (a table), `xml` and `ndjson` return the file itself, one row per company with its country, source, source_url, fetched_at and last_verified_at. `xlsx` and `parquet` return a download link valid 24 hours (downloading is free). Same units as JSON; at most 100 rows."},{"name":"limit","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","maximum":100,"minimum":1},{"type":"null"}],"description":"Rows in one file (non-JSON formats only, up to 100; JSON keeps `page_size` ≤ 25). Priced like the JSON pages it replaces: 2 units per started 25 rows (100 rows = 8 units).","title":"Limit"},"description":"Rows in one file (non-JSON formats only, up to 100; JSON keeps `page_size` ≤ 25). Priced like the JSON pages it replaces: 2 units per started 25 rows (100 rows = 8 units)."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{},"examples":{"FR":{"value":{"data":[{"id":"FR-SIREN-441639465","schema_version":"1.0","country":"FR","jurisdiction":"FR","identifiers":[{"scheme":"FR_SIREN","value":"441639465","primary":true},{"scheme":"FR_SIRET","value":"44163946500091","primary":false},{"scheme":"EU_VAT","value":"FR63441639465","primary":false}],"name":{"original":"RENAULT","latin":"RENAULT","script":"Latn","language":"fr"},"trade_names":[],"legal_form":{"original_code":"5510","original_label":"SA nationale à conseil d'administration","elf_code":"1NF1","category":"public_limited_company"},"status":{"value":"active","original_label":"Active","as_of":"2025-12-06"},"incorporation_date":"2002-04-01","registered_address":{"original":"122-122 122 B AVENUE DU GENERAL LECLERC 92100 BOULOGNE-BILLANCOURT","street":"122 B AVENUE DU GENERAL LECLERC","postal_code":"92100","locality":"BOULOGNE-BILLANCOURT","country":"FR"},"activity":{"original_scheme":"NAF_REV2","original_code":"64.20Z","original_label":"Activités des sociétés holding","nace_rev2":"64.20","isic_rev4":"6420","label_en":"Activities of holding companies"},"employees":{"band":"1-2","as_of_year":2024},"extensions":{"fr":{"vat_computed":false,"statut_diffusion":"O","region_code":"11","categorie_entreprise":"GE","ess":false,"societe_mission":false}},"provenance":{"source":"fr_recherche_entreprises","source_url":"https://recherche-entreprises.api.gouv.fr/search?q=renault&code_postal=92100&per_page=5&page=1","license":"Licence Ouverte / Etalab 2.0 (Annuaire des Entreprises, INSEE Sirene); officers: INPI RNE reuse licence","country":"FR","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-05","coverage_level":"full"},"match":{"score":1.0,"reasons":["name_exact","postal_code"]}},{"id":"FR-SIREN-312212301","schema_version":"1.0","country":"FR","jurisdiction":"FR","identifiers":[{"scheme":"FR_SIREN","value":"312212301","primary":true},{"scheme":"FR_SIRET","value":"31221230102001","primary":false},{"scheme":"EU_VAT","value":"FR65312212301","primary":false}],"name":{"original":"RENAULT RETAIL GROUP","latin":"RENAULT RETAIL GROUP","script":"Latn","language":"fr"},"trade_names":[],"legal_form":{"original_code":"5599","original_label":"SA à conseil d'administration (s.a.i.)","elf_code":"K65D","category":"public_limited_company"},"status":{"value":"active","original_label":"Active","as_of":"2026-07-01"},"incorporation_date":"1978-01-01","registered_address":{"original":"1ER-2E ETAGE 2 AVENUE DENIS PAPIN 92140 CLAMART","street":"2 AVENUE DENIS PAPIN","postal_code":"92140","locality":"CLAMART","country":"FR"},"activity":{"original_scheme":"NAF_REV2","original_code":"45.11Z","original_label":"Commerce de voitures et de véhicules automobiles légers","nace_rev2":"45.11","isic_rev4":"4510","label_en":"Sale of cars and light motor vehicles"},"employees":{"band":"2000-4999","as_of_year":2024},"extensions":{"fr":{"vat_computed":false,"statut_diffusion":"O","region_code":"11","categorie_entreprise":"GE","ess":false,"societe_mission":false}},"provenance":{"source":"fr_recherche_entreprises","source_url":"https://recherche-entreprises.api.gouv.fr/search?q=renault&code_postal=92100&per_page=5&page=1","license":"Licence Ouverte / Etalab 2.0 (Annuaire des Entreprises, INSEE Sirene); officers: INPI RNE reuse licence","country":"FR","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-05","coverage_level":"full"},"match":{"score":0.68,"reasons":["name_fuzzy"]}}],"meta":{"request_id":"req_example","source":"fr_recherche_entreprises","count":2,"page":1,"page_size":5,"total":112,"next_page":2}}},"ES":{"value":{"data":[{"id":"ES-RMHOJA-VI-23266","schema_version":"1.0","country":"ES","jurisdiction":"ES","identifiers":[{"scheme":"ES_RM_HOJA","value":"VI-23266","primary":true}],"name":{"original":"BAT BATEAN, S.L.","latin":"BAT BATEAN, S.L.","script":"Latn","language":"es"},"trade_names":[],"legal_form":{"original_code":"SL","original_label":"Sociedad de Responsabilidad Limitada","elf_code":"DP3Q","category":"private_limited_company"},"status":{"value":"unknown"},"incorporation_date":"2026-09-25","registered_address":{"original":"C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ)","street":"C/ ALDABE, Nº 34 1º DCHA","postal_code":"01012","locality":"VITORIA-GASTEIZ","region":"ARABA/ÁLAVA","country":"ES"},"capital":{"amount":"3000.00","currency":"EUR"},"extensions":{"es":{"hoja":"VI-23266","hoja_inferred":false,"province":"ARABA/ÁLAVA","corporate_purpose":"La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i","former_names":[],"events_since":"2026-10-02","acts":[{"type":"constitution","label":"Constitución","text":"Comienzo de operaciones: 16.09.26. Objeto social: La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i. Domicilio: C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ). Capital: 3.000,00 Euros.","company_name":"BAT BATEAN, S.L.","people":[],"borme_id":"BORME-A-2026-191-01","entry":439821,"published":"2026-10-02","registry_date":"2026-09-25","url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"},{"type":"appointments","label":"Nombramientos","text":"Adm. Solid.: ARRONIZ NAZABAL IKER;GARCIA OROZCO FRANCISCO JAVIER.","company_name":"BAT BATEAN, S.L.","people":[{"name":"ARRONIZ NAZABAL IKER","role_original":"Adm. Solid."},{"name":"GARCIA OROZCO FRANCISCO JAVIER","role_original":"Adm. Solid."}],"borme_id":"BORME-A-2026-191-01","entry":439821,"published":"2026-10-02","registry_date":"2026-09-25","url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"}]}},"provenance":{"source":"es_borme","source_url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01","license":"Basado en datos de la Agencia Estatal Boletín Oficial del Estado (BORME), https://www.boe.es — reuse conditions: https://www.boe.es/informacion/aviso_legal/","country":"ES","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-02","coverage_level":"events_only"},"match":{"score":0.95,"reasons":["name_normalized_exact"]}}],"meta":{"request_id":"req_example","source":"es_borme","count":1,"page":1,"page_size":10,"total":1}}}}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"},"400":{"content":{"application/json":{"examples":{"invalid_request":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"invalid_request","message":"The query must have at least 2 characters.","docs_url":"https://api.fuentio.com/docs/errors#invalid_request"}}}}}},"description":"Bad Request"}}}},"/v1/companies/{country}/{identifier}":{"get":{"tags":["companies"],"summary":"Look up a company by its official identifier","description":"Verify a company before onboarding, paying or contacting it. Returns the official legal record with status, address, activity and the source it came from. Accepts any identifier the country supports (e.g. SIREN, SIRET or VAT number for France; the Registro Mercantil sheet such as VI-23266 for Spain) or a Fuentio ID; the scheme is detected, or forced with `id_scheme`. Use `max_age` (seconds) to require fresher data than the default. Costs 1 unit.\n\nWhen enabled on the server, `meta.data_quality` adds checkable facts, never a score. For RENAULT (SIREN 441639465, the FR example): `{address_complete: true, has_postal_code: true, source_count: 1, days_since_verified: 0, coverage_note: \"All French companies in the public Sirene directory…\"}`.","operationId":"lookup_company_v1_companies__country___identifier__get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","description":"ISO 3166-1 alpha-2 code, e.g. FR.","examples":["FR"],"title":"Country"},"description":"ISO 3166-1 alpha-2 code, e.g. FR."},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","description":"SIREN, SIRET, VAT number or Fuentio ID.","examples":["441639465"],"title":"Identifier"},"description":"SIREN, SIRET, VAT number or Fuentio ID."},{"name":"id_scheme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Force a scheme, e.g. FR_SIRET.","title":"Id Scheme"},"description":"Force a scheme, e.g. FR_SIRET."},{"name":"max_age","in":"query","required":false,"schema":{"anyOf":[{"type":"integer","minimum":0},{"type":"null"}],"description":"Maximum data age in seconds.","title":"Max Age"},"description":"Maximum data age in seconds."},{"name":"format","in":"query","required":false,"schema":{"enum":["json","csv","tsv","xlsx","markdown","html","xml","ndjson","parquet"],"type":"string","description":"Answer format. `json` (default) is the usual envelope. `csv`, `tsv`, `markdown`, `html` (a table), `xml` and `ndjson` return the file itself, one row per company with its country, source, source_url, fetched_at and last_verified_at. `xlsx` and `parquet` return a download link valid 24 hours (downloading is free). Same units as JSON; at most 100 rows.","default":"json","title":"Format"},"description":"Answer format. `json` (default) is the usual envelope. `csv`, `tsv`, `markdown`, `html` (a table), `xml` and `ndjson` return the file itself, one row per company with its country, source, source_url, fetched_at and last_verified_at. `xlsx` and `parquet` return a download link valid 24 hours (downloading is free). Same units as JSON; at most 100 rows."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{},"examples":{"FR":{"value":{"data":{"id":"FR-SIREN-441639465","schema_version":"1.0","country":"FR","jurisdiction":"FR","identifiers":[{"scheme":"FR_SIREN","value":"441639465","primary":true},{"scheme":"FR_SIRET","value":"44163946500091","primary":false},{"scheme":"EU_VAT","value":"FR63441639465","primary":false}],"name":{"original":"RENAULT","latin":"RENAULT","script":"Latn","language":"fr"},"trade_names":[],"legal_form":{"original_code":"5510","original_label":"SA nationale à conseil d'administration","elf_code":"1NF1","category":"public_limited_company"},"status":{"value":"active","original_label":"Active","as_of":"2025-12-06"},"incorporation_date":"2002-04-01","registered_address":{"original":"122-122 122 B AVENUE DU GENERAL LECLERC 92100 BOULOGNE-BILLANCOURT","street":"122 B AVENUE DU GENERAL LECLERC","postal_code":"92100","locality":"BOULOGNE-BILLANCOURT","country":"FR"},"activity":{"original_scheme":"NAF_REV2","original_code":"64.20Z","original_label":"Activités des sociétés holding","nace_rev2":"64.20","isic_rev4":"6420","label_en":"Activities of holding companies"},"employees":{"band":"1-2","as_of_year":2024},"extensions":{"fr":{"vat_computed":false,"statut_diffusion":"O","region_code":"11","categorie_entreprise":"GE","ess":false,"societe_mission":false}},"provenance":{"source":"fr_recherche_entreprises","source_url":"https://recherche-entreprises.api.gouv.fr/search?q=441639465&per_page=1","license":"Licence Ouverte / Etalab 2.0 (Annuaire des Entreprises, INSEE Sirene); officers: INPI RNE reuse licence","country":"FR","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-05","coverage_level":"full"}},"meta":{"request_id":"req_example","source":"fr_recherche_entreprises","fetched_at":"2026-10-05T14:02:11+00:00","last_verified_at":"2026-10-05T14:02:11+00:00","count":1,"stale":false,"receipt":{"request_id":"req_example","served_at":"2026-10-05T14:02:11+00:00","data_sha256":"54ddd1deb0a49b40283f47cd5cbde8085c3a2939f55dd1b516fb3caf2befe20d","snapshot_id":"FR-SIREN-441639465@2026-10-05T14:02:11+00:00"}}}},"ES":{"value":{"data":{"id":"ES-RMHOJA-VI-23266","schema_version":"1.0","country":"ES","jurisdiction":"ES","identifiers":[{"scheme":"ES_RM_HOJA","value":"VI-23266","primary":true}],"name":{"original":"BAT BATEAN, S.L.","latin":"BAT BATEAN, S.L.","script":"Latn","language":"es"},"trade_names":[],"legal_form":{"original_code":"SL","original_label":"Sociedad de Responsabilidad Limitada","elf_code":"DP3Q","category":"private_limited_company"},"status":{"value":"unknown"},"incorporation_date":"2026-09-25","registered_address":{"original":"C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ)","street":"C/ ALDABE, Nº 34 1º DCHA","postal_code":"01012","locality":"VITORIA-GASTEIZ","region":"ARABA/ÁLAVA","country":"ES"},"capital":{"amount":"3000.00","currency":"EUR"},"extensions":{"es":{"hoja":"VI-23266","hoja_inferred":false,"province":"ARABA/ÁLAVA","corporate_purpose":"La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i","former_names":[],"events_since":"2026-10-02","acts":[{"type":"constitution","label":"Constitución","text":"Comienzo de operaciones: 16.09.26. Objeto social: La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i. Domicilio: C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ). Capital: 3.000,00 Euros.","company_name":"BAT BATEAN, S.L.","people":[],"borme_id":"BORME-A-2026-191-01","entry":439821,"published":"2026-10-02","registry_date":"2026-09-25","url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"},{"type":"appointments","label":"Nombramientos","text":"Adm. Solid.: ARRONIZ NAZABAL IKER;GARCIA OROZCO FRANCISCO JAVIER.","company_name":"BAT BATEAN, S.L.","people":[{"name":"ARRONIZ NAZABAL IKER","role_original":"Adm. Solid."},{"name":"GARCIA OROZCO FRANCISCO JAVIER","role_original":"Adm. Solid."}],"borme_id":"BORME-A-2026-191-01","entry":439821,"published":"2026-10-02","registry_date":"2026-09-25","url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"}]}},"provenance":{"source":"es_borme","source_url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01","license":"Basado en datos de la Agencia Estatal Boletín Oficial del Estado (BORME), https://www.boe.es — reuse conditions: https://www.boe.es/informacion/aviso_legal/","country":"ES","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-02","coverage_level":"events_only"}},"meta":{"request_id":"req_example","source":"es_borme","fetched_at":"2026-10-05T14:02:11+00:00","last_verified_at":"2026-10-05T14:02:11+00:00","count":1,"stale":false,"receipt":{"request_id":"req_example","served_at":"2026-10-05T14:02:11+00:00","data_sha256":"a8aa8f4148f2dbc1f62b2ba5baf8486067011fa0834ef01b1cf730c56edf942d","snapshot_id":"ES-RMHOJA-VI-23266@2026-10-05T14:02:11+00:00"}}}}}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"},"400":{"content":{"application/json":{"examples":{"invalid_identifier":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"invalid_identifier","message":"'441639466' has the format of a SIREN but its check digits are wrong.","docs_url":"https://api.fuentio.com/docs/errors#invalid_identifier","details":{"check":"checksum","scheme":"FR_SIREN"}}}}}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"not_found":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"not_found","message":"No company found for SIREN 732829320.","docs_url":"https://api.fuentio.com/docs/errors#not_found"}}},"coverage_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"coverage_unavailable","message":"Spain (BORME company events) is being added.","docs_url":"https://api.fuentio.com/docs/errors#coverage_unavailable"}}}}}},"description":"Not Found"}}}},"/v1/companies/{country}/{identifier}/history":{"get":{"tags":["companies"],"summary":"What changed at a company, and when","description":"Use this to see what changed at a company (directors, address, status) and when, with the official source of each change. Returns the versions Fuentio stored, newest first: when each was seen, its source, and the fields that changed since the version before (old → new; lists as added/removed). Spain also returns the BORME acts as dated events with the original text and document. **France's history starts the first time Fuentio fetched the company; Spain's at the BORME import start** — both given in `meta.history_since`. Same identifiers as the lookup. Costs 1 unit.","operationId":"company_history_v1_companies__country___identifier__history_get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","description":"ISO 3166-1 alpha-2 code, e.g. FR.","examples":["FR"],"title":"Country"},"description":"ISO 3166-1 alpha-2 code, e.g. FR."},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","description":"Any identifier the lookup accepts.","examples":["441639465"],"title":"Identifier"},"description":"Any identifier the lookup accepts."},{"name":"id_scheme","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Force a scheme, e.g. FR_SIRET.","title":"Id Scheme"},"description":"Force a scheme, e.g. FR_SIRET."},{"name":"page","in":"query","required":false,"schema":{"type":"integer","minimum":1,"default":1,"title":"Page"}},{"name":"page_size","in":"query","required":false,"schema":{"type":"integer","maximum":25,"minimum":1,"default":10,"title":"Page Size"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Company History V1 Companies  Country   Identifier  History Get"},"examples":{"FR":{"value":{"data":{"company_id":"FR-SIREN-441639465","name":"RENAULT","snapshots":[{"snapshot_id":"FR-SIREN-441639465@2026-10-05T14:02:11+00:00","valid_from":"2026-10-05T14:02:11+00:00","provenance":{"source":"fr_recherche_entreprises","source_url":"https://recherche-entreprises.api.gouv.fr/search?q=441639465&per_page=1","fetched_at":"2026-10-05T14:02:11Z"}}]},"meta":{"request_id":"req_example","source":"fr_recherche_entreprises","history_since":"2026-10-05","history_note":"History starts the first time Fuentio fetched this company.","count":1,"page":1,"page_size":10,"total":1}}},"ES":{"value":{"data":{"company_id":"ES-RMHOJA-VI-23266","name":"BAT BATEAN, S.L.","snapshots":[{"snapshot_id":"ES-RMHOJA-VI-23266@2026-10-05T14:02:11+00:00","valid_from":"2026-10-05T14:02:11+00:00","provenance":{"source":"es_borme","source_url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01","fetched_at":"2026-10-05T14:02:11Z"}}],"events":[{"date":"2026-10-02","registry_date":"2026-09-25","type":"constitution","label":"Constitución","text":"Comienzo de operaciones: 16.09.26. Objeto social: La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i. Domicilio: C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ). Capital: 3.000,00 Euros.","people":[],"company_name":"BAT BATEAN, S.L.","source":{"borme_id":"BORME-A-2026-191-01","entry":439821,"url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"}},{"date":"2026-10-02","registry_date":"2026-09-25","type":"appointments","label":"Nombramientos","text":"Adm. Solid.: ARRONIZ NAZABAL IKER;GARCIA OROZCO FRANCISCO JAVIER.","people":[{"name":"ARRONIZ NAZABAL IKER","role_original":"Adm. Solid."},{"name":"GARCIA OROZCO FRANCISCO JAVIER","role_original":"Adm. Solid."}],"company_name":"BAT BATEAN, S.L.","source":{"borme_id":"BORME-A-2026-191-01","entry":439821,"url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"}}]},"meta":{"request_id":"req_example","source":"es_borme","history_since":"2025-10-06","history_note":"History starts at the start of Fuentio's import of this source; earlier events are not covered.","count":1,"page":1,"page_size":10,"total":1}}}}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"},"400":{"content":{"application/json":{"examples":{"invalid_identifier":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"invalid_identifier","message":"'441639466' has the format of a SIREN but its check digits are wrong.","docs_url":"https://api.fuentio.com/docs/errors#invalid_identifier","details":{"check":"checksum","scheme":"FR_SIREN"}}}}}}},"description":"Bad Request"},"404":{"content":{"application/json":{"examples":{"not_found":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"not_found","message":"No company found for SIREN 732829320.","docs_url":"https://api.fuentio.com/docs/errors#not_found"}}}}}},"description":"Not Found"}}}},"/v1/keys":{"post":{"tags":["keys"],"summary":"Create a free API key","description":"Creates a key on the Free plan (100 units a month, 2 requests per second, 5 monitors) instantly. The key is emailed to that address (on the production server; the answer then says \"Check your email\" and holds no key), or shown **once** here where email is off. **One free key per person:** `email` is required; an email that already has an active free key, or an address that created a free key in the last 30 days, gets 409 `already_exists`. `label` is optional. Send the key as `Authorization: Bearer <key>` or `X-API-Key`. Free.","operationId":"create_key_v1_keys_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyRequest"}}},"required":true},"responses":{"201":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Key V1 Keys Post"}}}},"409":{"description":"You already have a free key (one per person).","content":{"application/json":{"example":{"meta":{"request_id":"req_example"},"error":{"code":"already_exists","message":"You already have a free key. Lost it? Write to hello@fuentio.com.","hint":"Use the free key you already have. Lost it? Write to hello@fuentio.com.","docs_url":"https://api.fuentio.com/docs/errors#already_exists"}}}}}}}},"/v1/usage":{"get":{"tags":["keys"],"summary":"Plan, quota and usage for the calling key","description":"Your plan, the current period, units used and remaining, your rate limit, and monitors used and allowed. Without a key it reports the keyless trial for your address. Free.","operationId":"get_usage_v1_usage_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Usage V1 Usage Get"}}}}}}},"/v1/keys/me":{"delete":{"tags":["keys"],"summary":"Revoke the calling key","description":"Revokes **the key sent with this request**, at once and for good (a leaked key, an app you stop using). Later calls with it answer `unauthorized`. Create a new key with POST /v1/keys. Free.","operationId":"revoke_own_key_v1_keys_me_delete","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Revoke Own Key V1 Keys Me Delete"}}}}}}},"/v1/keys/me/rotate":{"post":{"tags":["keys"],"summary":"Replace the calling key with a new one","description":"Returns a **new key** on the same plan, with the same usage, receipts and subscription. The key sent with this request keeps working for 24 hours (time to deploy the new one), then stops. The new key is shown once: store it. Free.","operationId":"rotate_own_key_v1_keys_me_rotate_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Rotate Own Key V1 Keys Me Rotate Post"}}}}}}},"/v1/resolve":{"post":{"tags":["resolve"],"summary":"Is this the same company? Candidates with match decisions","description":"Matches what you know about a company (an official ID, or a name with a postcode or town) against the records Fuentio holds, and returns the candidates with a decision each: `linked` (an official ID proves it), `possible` (band `strong` or `possible`: a name, maybe with an address; never proof) or `rejected`, with reason codes and evidence (docs/matching.md). `outcome`: linked, possible_match or no_match; `uncertainty` says what the answer can't tell you. Nothing is stored. Costs `STARTAPI_RESOLVE_UNITS` units (2 by default).","operationId":"resolve_company_v1_resolve_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ResolveRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Resolve Company V1 Resolve Post"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"examples":{"invalid_request":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"invalid_request","message":"Give an official identifier or a company name.","docs_url":"https://api.fuentio.com/docs/errors#invalid_request"}}}}}}}}}},"/v1/match/explain":{"post":{"tags":["resolve"],"summary":"Why two records are (or aren't) the same company","description":"Two Fuentio record IDs side by side: the decision under today's rules (with reason codes and evidence, not stored), the decisions stored for the pair, the links between them, and whether they are one Fuentio entity. Use it to answer \"why are these linked?\" or \"why are these not the same company?\". Costs `STARTAPI_EXPLAIN_UNITS` units (1 by default).","operationId":"explain_match_v1_match_explain_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ExplainRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Explain Match V1 Match Explain Post"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}}}}}},"/v1/entities/{entity_id}":{"get":{"tags":["resolve"],"summary":"One Fuentio entity, reconciled across its sources","description":"The entity's records reconciled field by field (name, status, address, legal form, creation date, activity): each field has the value served, the value as published, its source, record, retrieval time and record hash, and every competing value another source gives (ADR-054 source priority). `conflicting_sources` lists the fields where sources disagree; `uncertainty` says what the answer can't tell you. `as_of=YYYY-MM-DD` shows each record as it stood that day (stored history). A merged entity's old ID still answers. Costs `STARTAPI_LOOKUP_UNITS` units (1).","operationId":"get_entity_v1_entities__entity_id__get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"examples":["fu_7K3M9Q2XH4PZ"],"title":"Entity Id"}},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"YYYY-MM-DD: records as they stood then.","title":"As Of"},"description":"YYYY-MM-DD: records as they stood then."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Entity V1 Entities  Entity Id  Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/entities/{entity_id}/changes":{"get":{"tags":["resolve"],"summary":"What changed at an entity since a date","description":"Dated changes from every record the entity holds: fields that changed between two stored versions (`observed_at`: when Fuentio saw it) and the source's own dated events (Spain: BORME acts, `effective_date`), each with its source and evidence (version hash or document link). `gaps` lists what the sources can't tell for the window (days not loaded, or a live source not checked since); a quiet window with gaps is never \"no change\". Costs `STARTAPI_HISTORY_UNITS` units (1).","operationId":"get_entity_changes_v1_entities__entity_id__changes_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"examples":["fu_7K3M9Q2XH4PZ"],"title":"Entity Id"}},{"name":"since","in":"query","required":true,"schema":{"type":"string","format":"date","description":"YYYY-MM-DD: changes on or after this day.","title":"Since"},"description":"YYYY-MM-DD: changes on or after this day."},{"name":"until","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"YYYY-MM-DD; default today.","title":"Until"},"description":"YYYY-MM-DD; default today."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Entity Changes V1 Entities  Entity Id  Changes Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/entities/{entity_id}/evidence":{"get":{"tags":["resolve"],"summary":"Why Fuentio says what it says about an entity","description":"For each field (or one `field`): the value served and every competing value, each with its source, record, retrieval time, source link and the SHA-256 of the stored record version; then the links between the entity's records with the stored match decision behind each. `as_of` reads the records as they stood that day. Costs `STARTAPI_EVIDENCE_UNITS` units (1).","operationId":"get_entity_evidence_v1_entities__entity_id__evidence_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"examples":["fu_7K3M9Q2XH4PZ"],"title":"Entity Id"}},{"name":"field","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"One field, e.g. status.","title":"Field"},"description":"One field, e.g. status."},{"name":"as_of","in":"query","required":false,"schema":{"anyOf":[{"type":"string","format":"date"},{"type":"null"}],"description":"YYYY-MM-DD.","title":"As Of"},"description":"YYYY-MM-DD."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Entity Evidence V1 Entities  Entity Id  Evidence Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/entities/{entity_id}/graph":{"get":{"tags":["graph"],"summary":"The company graph around an entity","description":"A company's group around one Fuentio entity: company-to-company links from GLEIF only (direct and ultimate parents, children), every edge with its source and the record that proves it, and ownership signals (beneficial owners not covered). `depth` 1 or 2; no people, no director links (ADR-065). Needs an API key. Costs `STARTAPI_GRAPH_UNITS` units (2).","operationId":"get_entity_graph_v1_entities__entity_id__graph_get","parameters":[{"name":"entity_id","in":"path","required":true,"schema":{"type":"string","maxLength":20,"examples":["fu_7K3M9Q2XH4PZ"],"title":"Entity Id"}},{"name":"depth","in":"query","required":false,"schema":{"type":"integer","maximum":2,"minimum":1,"description":"1 or 2.","default":1,"title":"Depth"},"description":"1 or 2."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Entity Graph V1 Entities  Entity Id  Graph Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/watches":{"get":{"tags":["watches"],"summary":"Your watches","description":"The key's watches. Free.","operationId":"get_watches_route_v1_watches_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Watches Route V1 Watches Get"}}}}}},"post":{"tags":["watches"],"summary":"Watch a company: changes are POSTed to your endpoint, signed","description":"Watches one Fuentio entity. When it changes, Fuentio POSTs the changes (as `what_changed` returns them, with gaps) to your https `callback_url`, signed: `Fuentio-Signature: t=<unix seconds>,v1=<hex HMAC-SHA256(signing_secret, '<t>.<body>')>`; reject `t` older than 5 minutes. `Fuentio-Delivery-Id` identifies retries. Retries: 1 min, 5 min, 30 min, 2 h, 12 h. The `signing_secret` is shown once. An API key is required; private or local callback addresses are refused. Costs 1 unit.","operationId":"post_watch_v1_watches_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WatchRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Watch V1 Watches Post"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}}}}}},"/v1/watches/{watch_id}":{"delete":{"tags":["watches"],"summary":"Stop a watch","description":"Free.","operationId":"delete_watch_route_v1_watches__watch_id__delete","parameters":[{"name":"watch_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Watch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Watch Route V1 Watches  Watch Id  Delete"}}}}}}},"/v1/watches/{watch_id}/deliveries":{"get":{"tags":["watches"],"summary":"A watch's delivery log","description":"Every delivery: status, attempts, next try, last HTTP status or error. Free.","operationId":"get_deliveries_v1_watches__watch_id__deliveries_get","parameters":[{"name":"watch_id","in":"path","required":true,"schema":{"type":"string","maxLength":40,"title":"Watch Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Deliveries V1 Watches  Watch Id  Deliveries Get"}}}}}}},"/v1/companies/{country}/{identifier}/screen":{"get":{"tags":["screening"],"summary":"Screen a company against sanctions lists","description":"Compares the company's own names with the EU Financial Sanctions File, the UK Sanctions List, the OFAC SDN list and France's registre national des gels. `result` is `possible_match` (each with the list, entry, score, reasons, listing date, legal act and official link) or `no_match_found`: \"no match found in these lists at this time\", or `not_checked` when no list could be read. Never \"clear\", never \"sanctioned\": a name match needs a human check. `lists` gives each list's version, or says it was not checked. Needs an API key. Costs `STARTAPI_SCREEN_UNITS` units (2).","operationId":"get_screen_v1_companies__country___identifier__screen_get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","maxLength":2,"examples":["FR"],"title":"Country"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","maxLength":64,"examples":["441639465"],"title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Screen V1 Companies  Country   Identifier  Screen Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/companies/{country}/{identifier}/insolvency":{"get":{"tags":["screening"],"summary":"Insolvency notices and state of a company","description":"France: BODACC A insolvency notices (DILA), linked by SIREN; `state` is `in_procedure`, `under_plan`, `closed`, `notice_found` (a notice whose opening came before the loaded years), `none_found` (BODACC loaded for the company's whole life) or `not_covered`, with `procedure` (safeguard, reorganisation, liquidation), dates and each notice's official citation and file. Spain: BORME 'Situación concursal' acts; `notice_found` (BORME doesn't say when a procedure ends), `none_found` or `not_covered`. `covered_since` gives the first day loaded. Costs `STARTAPI_INSOLVENCY_UNITS` units (1).","operationId":"get_insolvency_v1_companies__country___identifier__insolvency_get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","maxLength":2,"examples":["FR"],"title":"Country"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","maxLength":64,"examples":["441639465"],"title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Insolvency V1 Companies  Country   Identifier  Insolvency Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/companies/{country}/{identifier}/address":{"get":{"tags":["screening"],"summary":"Validate a company's registered address","description":"France: the registered address checked against the Base Adresse Nationale (API Adresse, IGN): `validated` true only when the best answer has the record's postal code and a score of at least 0.6; then the official form, BAN identifiers, coordinates, `precision` and `confidence`. `same_address.active_companies`: active companies Fuentio holds at the same postal code and street line. Spain: `validated: null` (the Spanish service isn't available yet). Costs `STARTAPI_ADDRESS_UNITS` units (1).","operationId":"get_address_v1_companies__country___identifier__address_get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","maxLength":2,"examples":["FR"],"title":"Country"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","maxLength":64,"examples":["441639465"],"title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Address V1 Companies  Country   Identifier  Address Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/companies/{country}/{identifier}/vat":{"get":{"tags":["screening"],"summary":"A company's EU VAT number, registration not checked","description":"France: the VAT number the register publishes, or the one computed from the SIREN (standard key; a few companies have a letter key). `registration_checked` is always false: check the registration on the official VIES page (`check_url`). Spain: BORME doesn't publish VAT numbers. Costs `STARTAPI_VAT_UNITS` units (1).","operationId":"get_vat_v1_companies__country___identifier__vat_get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","maxLength":2,"examples":["FR"],"title":"Country"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","maxLength":64,"examples":["441639465"],"title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Vat V1 Companies  Country   Identifier  Vat Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/companies/{country}/{identifier}/review":{"get":{"tags":["screening"],"summary":"A review-ready report on a company (JSON + Markdown)","description":"Identity (record, entity, links with reasons), reconciled facts with their sources, the last year's changes and gaps, and every check at once: insolvency, sanctions screen, address, VAT. A module that fails is reported as such. `markdown` is the same report ready to paste; `sha256` is the hash of the JSON report. Needs an API key. Costs `STARTAPI_REVIEW_UNITS` units (8).","operationId":"get_review_v1_companies__country___identifier__review_get","parameters":[{"name":"country","in":"path","required":true,"schema":{"type":"string","maxLength":2,"examples":["FR"],"title":"Country"}},{"name":"identifier","in":"path","required":true,"schema":{"type":"string","maxLength":64,"examples":["441639465"],"title":"Identifier"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Review V1 Companies  Country   Identifier  Review Get"}}}},"401":{"content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}},"description":"Unauthorized"},"402":{"content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}},"description":"Payment Required"},"429":{"content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}},"description":"Too Many Requests"},"500":{"content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}},"description":"Internal Server Error"},"503":{"content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}},"description":"Service Unavailable"}}}},"/v1/issues":{"post":{"tags":["issues"],"summary":"Report a wrong or missing answer","description":"Stores the report for review. Each one is checked against the official source; a confirmed one becomes a test case. Needs an API key; at most 20 reports per key per day. Free.","operationId":"post_issue_v1_issues_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IssueRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Post Issue V1 Issues Post"}}}},"401":{"description":"Unauthorized","content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}}}}}},"/llms.txt":{"get":{"tags":["discovery"],"summary":"Guide for AI agents","operationId":"get_llms_txt_llms_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/llms-full.txt":{"get":{"tags":["discovery"],"summary":"Full reference for AI agents","operationId":"get_llms_full_txt_llms_full_txt_get","responses":{"200":{"description":"Successful Response","content":{"text/plain":{"schema":{"type":"string"}}}}}}},"/v1/plans":{"get":{"tags":["discovery"],"summary":"Plans and prices","description":"Every plan with its monthly price (euros, VAT excluded), units, rate limit and notes, from the same table the API enforces. Free, no key. `meta.payments` says how to subscribe.","operationId":"get_plans_v1_plans_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Get Plans V1 Plans Get"}}}}}}},"/v1/receipts/{receipt_id}":{"get":{"tags":["proof"],"summary":"Proof of an answer: the exact record served, and its hash","description":"Every lookup returns `meta.receipt` (`request_id`, `served_at`, `data_sha256`, `snapshot_id`). Later — for an auditor — fetch the receipt with the **same key** to get the exact record served at that time, its provenance, and `verified: true` when re-hashing it gives the same `data_sha256` (SHA-256 of the canonical JSON of `data`: keys sorted, separators `,` and `:`, UTF-8). Kept 24 months by default. Free.","operationId":"get_receipt_v1_receipts__receipt_id__get","parameters":[{"name":"receipt_id","in":"path","required":true,"schema":{"type":"string","description":"The `meta.receipt.request_id` of the answer.","title":"Receipt Id"},"description":"The `meta.receipt.request_id` of the answer."}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Receipt V1 Receipts  Receipt Id  Get"}}}}}}},"/v1/verifications":{"post":{"tags":["verification"],"summary":"Verify a company (KYB-lite check)","description":"Checks one company by official ID against its official source and stores the answer with a proof code: outcome (`verified`, `partial`, `unverified`, `insufficient_data`) with reasons, the checks run, signals the source carries (`present`, `none_found`, `not_covered`), recent changes, provenance and a receipt. Rules: docs/verification.md. Costs 5 units (1 when a well-formed ID isn't found; errors 0). Spain: BORME events since 2 January 2009, no NIF/CIF lookup — search by name first.","operationId":"create_verification_v1_verifications_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerifyRequest"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Create Verification V1 Verifications Post"},"examples":{"FR":{"value":{"data":{"verification_id":"ver_example","proof_code":"FUE-FR-20261005-K7Q2MX","reference":"onboarding-2026-0042","checked_at":"2026-10-05T14:02:11+00:00","country":"FR","identifier":{"scheme":"FR_SIREN","value":"441639465"},"coverage":{"country":"FR","status":"available","level":"full","jurisdictions":[],"all_states_via":[],"note":"All French companies in the public Sirene directory, live from the official Annuaire des Entreprises API (refreshed after 7 days)."},"company":{"id":"FR-SIREN-441639465","schema_version":"1.0","country":"FR","jurisdiction":"FR","identifiers":[{"scheme":"FR_SIREN","value":"441639465","primary":true},{"scheme":"FR_SIRET","value":"44163946500091","primary":false},{"scheme":"EU_VAT","value":"FR63441639465","primary":false}],"name":{"original":"RENAULT","latin":"RENAULT","script":"Latn","language":"fr"},"trade_names":[],"legal_form":{"original_code":"5510","original_label":"SA nationale à conseil d'administration","elf_code":"1NF1","category":"public_limited_company"},"status":{"value":"active","original_label":"Active","as_of":"2025-12-06"},"incorporation_date":"2002-04-01","registered_address":{"original":"122-122 122 B AVENUE DU GENERAL LECLERC 92100 BOULOGNE-BILLANCOURT","street":"122 B AVENUE DU GENERAL LECLERC","postal_code":"92100","locality":"BOULOGNE-BILLANCOURT","country":"FR"},"activity":{"original_scheme":"NAF_REV2","original_code":"64.20Z","original_label":"Activités des sociétés holding","nace_rev2":"64.20","isic_rev4":"6420","label_en":"Activities of holding companies"},"employees":{"band":"1-2","as_of_year":2024},"extensions":{"fr":{"vat_computed":false,"statut_diffusion":"O","region_code":"11","categorie_entreprise":"GE","ess":false,"societe_mission":false}},"provenance":{"source":"fr_recherche_entreprises","source_url":"https://recherche-entreprises.api.gouv.fr/search?q=441639465&per_page=1","license":"Licence Ouverte / Etalab 2.0 (Annuaire des Entreprises, INSEE Sirene); officers: INPI RNE reuse licence","country":"FR","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-05","coverage_level":"full"}},"changes_summary":{"last_12_months":0,"latest_change_types":[],"history_since":"2026-10-05"},"signals":{"closure":{"value":"none_found","evidence":[]},"dissolution":{"value":"not_covered","evidence":[]},"extinction":{"value":"not_covered","evidence":[]},"insolvency":{"value":"not_covered","evidence":[]}},"checks":[{"check":"identifier_valid","result":"pass","detail":"The ID has a valid format."},{"check":"record_found","result":"pass","detail":"Found in the official source."},{"check":"status_active","result":"pass","detail":"Register status: active."},{"check":"address_present","result":"pass","detail":"Registered address published."},{"check":"fresh","result":"pass","detail":"Checked against the source within its refresh window."}],"result":{"outcome":"verified","reasons":["company_active"],"summary":"RENAULT (FR, SIREN 441639465): verified, active per Annuaire des Entreprises (API Recherche d'entreprises), checked 2026-10-05. Proof FUE-FR-20261005-K7Q2MX."},"provenance":{"source":"fr_recherche_entreprises","source_url":"https://recherche-entreprises.api.gouv.fr/search?q=441639465&per_page=1","licence":"Licence Ouverte / Etalab 2.0 (Annuaire des Entreprises, INSEE Sirene); officers: INPI RNE reuse licence","fetched_at":"2026-10-05T14:02:11+00:00","last_verified_at":"2026-10-05T14:02:11+00:00","coverage_level":"full"},"receipt":{"request_id":"req_example","served_at":"2026-10-05T14:02:11+00:00","data_sha256":"4ad2c81bad431424fbc987e040d218a4d9e0bcf33b787d8cb861027bb3c6cea5","snapshot_id":"FR-SIREN-441639465@2026-10-05T14:02:11+00:00"}},"meta":{"request_id":"req_example","cost":{"units":5,"remaining":15},"coverage":{"country":"FR","status":"available","level":"full","jurisdictions":[],"all_states_via":[],"note":"All French companies in the public Sirene directory, live from the official Annuaire des Entreprises API (refreshed after 7 days)."}}}},"ES":{"value":{"data":{"verification_id":"ver_example","proof_code":"FUE-ES-20261005-K7Q2MX","reference":"onboarding-2026-0042","checked_at":"2026-10-05T14:02:11+00:00","country":"ES","identifier":{"scheme":"ES_RM_HOJA","value":"VI-23266"},"coverage":{"country":"ES","status":"available","level":"events_only","jurisdictions":[],"all_states_via":[],"note":"Spanish companies with an act published in BORME (Registro Mercantil gazette) since 2 January 2009: events only, not every company. Status is derived from dissolution and extinction acts, otherwise 'unknown'. No NIF/CIF lookup."},"company":{"id":"ES-RMHOJA-VI-23266","schema_version":"1.0","country":"ES","jurisdiction":"ES","identifiers":[{"scheme":"ES_RM_HOJA","value":"VI-23266","primary":true}],"name":{"original":"BAT BATEAN, S.L.","latin":"BAT BATEAN, S.L.","script":"Latn","language":"es"},"trade_names":[],"legal_form":{"original_code":"SL","original_label":"Sociedad de Responsabilidad Limitada","elf_code":"DP3Q","category":"private_limited_company"},"status":{"value":"unknown"},"incorporation_date":"2026-09-25","registered_address":{"original":"C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ)","street":"C/ ALDABE, Nº 34 1º DCHA","postal_code":"01012","locality":"VITORIA-GASTEIZ","region":"ARABA/ÁLAVA","country":"ES"},"capital":{"amount":"3000.00","currency":"EUR"},"extensions":{"es":{"hoja":"VI-23266","hoja_inferred":false,"province":"ARABA/ÁLAVA","corporate_purpose":"La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i","former_names":[],"events_since":"2026-10-02","acts":[{"type":"constitution","label":"Constitución","text":"Comienzo de operaciones: 16.09.26. Objeto social: La organización, promoción y contratación de conciertos musicales, festivales musicales y otros espectáculos, así como la organización y promoción de exposiciones y actos culturales. Las actividades integrantes del objeto social podrán ser desarrolladas por la Sociedad total o parcialmente de modo i. Domicilio: C/ ALDABE, Nº 34 1º DCHA 01012 (VITORIA-GASTEIZ). Capital: 3.000,00 Euros.","company_name":"BAT BATEAN, S.L.","people":[],"borme_id":"BORME-A-2026-191-01","entry":439821,"published":"2026-10-02","registry_date":"2026-09-25","url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"},{"type":"appointments","label":"Nombramientos","text":"Adm. Solid.: ARRONIZ NAZABAL IKER;GARCIA OROZCO FRANCISCO JAVIER.","company_name":"BAT BATEAN, S.L.","people":[{"name":"ARRONIZ NAZABAL IKER","role_original":"Adm. Solid."},{"name":"GARCIA OROZCO FRANCISCO JAVIER","role_original":"Adm. Solid."}],"borme_id":"BORME-A-2026-191-01","entry":439821,"published":"2026-10-02","registry_date":"2026-09-25","url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01"}]}},"provenance":{"source":"es_borme","source_url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01","license":"Basado en datos de la Agencia Estatal Boletín Oficial del Estado (BORME), https://www.boe.es — reuse conditions: https://www.boe.es/informacion/aviso_legal/","country":"ES","fetched_at":"2026-10-05T14:02:11Z","last_verified_at":"2026-10-05T14:02:11Z","source_updated_at":"2026-10-02","coverage_level":"events_only"}},"changes_summary":{"last_12_months":0,"latest_change_types":[],"history_since":"2025-10-06"},"signals":{"closure":{"value":"none_found","evidence":[]},"dissolution":{"value":"none_found","evidence":[]},"extinction":{"value":"none_found","evidence":[]},"insolvency":{"value":"none_found","evidence":[]}},"checks":[{"check":"identifier_valid","result":"pass","detail":"The ID has a valid format."},{"check":"record_found","result":"pass","detail":"Found in the official source."},{"check":"status_active","result":"unknown","detail":"Register status: unknown."},{"check":"address_present","result":"pass","detail":"Registered address published."},{"check":"fresh","result":"pass","detail":"Checked against the source within its refresh window."}],"result":{"outcome":"partial","reasons":["status_unknown","events_only_coverage"],"summary":"BAT BATEAN, S.L. (ES, Registro Mercantil sheet (hoja) VI-23266): partial, status unknown per BORME — Boletín Oficial del Registro Mercantil (Sección A), checked 2026-10-05. Proof FUE-ES-20261005-K7Q2MX."},"provenance":{"source":"es_borme","source_url":"https://www.boe.es/diario_borme/txt.php?id=BORME-A-2026-191-01","licence":"Basado en datos de la Agencia Estatal Boletín Oficial del Estado (BORME), https://www.boe.es — reuse conditions: https://www.boe.es/informacion/aviso_legal/","fetched_at":"2026-10-05T14:02:11+00:00","last_verified_at":"2026-10-05T14:02:11+00:00","coverage_level":"events_only"},"receipt":{"request_id":"req_example","served_at":"2026-10-05T14:02:11+00:00","data_sha256":"a8aa8f4148f2dbc1f62b2ba5baf8486067011fa0834ef01b1cf730c56edf942d","snapshot_id":"ES-RMHOJA-VI-23266@2026-10-05T14:02:11+00:00"}},"meta":{"request_id":"req_example","cost":{"units":5,"remaining":15},"coverage":{"country":"ES","status":"available","level":"events_only","jurisdictions":[],"all_states_via":[],"note":"Spanish companies with an act published in BORME (Registro Mercantil gazette) since 2 January 2009: events only, not every company. Status is derived from dissolution and extinction acts, otherwise 'unknown'. No NIF/CIF lookup."}}}}}}}},"401":{"description":"Unauthorized","content":{"application/json":{"examples":{"unauthorized":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"unauthorized","message":"This API key is unknown or revoked.","hint":"Get a free key with POST /v1/keys, or call without a key for the keyless trial (20 units a day).","docs_url":"https://api.fuentio.com/docs/errors#unauthorized"}}}}}}},"402":{"description":"Payment Required","content":{"application/json":{"examples":{"quota_exceeded":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"quota_exceeded","message":"Quota used up: 20 of 20 units today.","hint":"Get a free key (100 units a month) with POST /v1/keys.","docs_url":"https://api.fuentio.com/docs/errors#quota_exceeded","details":{"limit":20,"used":20,"resets":"2026-10-06"}}}}}}}},"429":{"description":"Too Many Requests","content":{"application/json":{"examples":{"rate_limited":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"rate_limited","message":"Too many requests: the Trial (no key) plan allows 1 per second.","hint":"Retry after 0.4 seconds.","docs_url":"https://api.fuentio.com/docs/errors#rate_limited","details":{"retry_after":1}}}}}}}},"500":{"description":"Internal Server Error","content":{"application/json":{"examples":{"internal_error":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"internal_error","message":"Something went wrong on our side.","hint":"Retry later; quote the request_id if you contact support.","docs_url":"https://api.fuentio.com/docs/errors#internal_error"}}}}}}},"503":{"description":"Service Unavailable","content":{"application/json":{"examples":{"upstream_unavailable":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"upstream_unavailable","message":"The official source (Annuaire des Entreprises (API Recherche d'entreprises)) is not answering right now.","hint":"Retry in a minute.","docs_url":"https://api.fuentio.com/docs/errors#upstream_unavailable","details":{"source":"fr_recherche_entreprises","reason":"timeout"}}}}}}}},"400":{"description":"Bad Request","content":{"application/json":{"examples":{"id_scheme_not_supported":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"id_scheme_not_supported","message":"Spain lookups by NIF/CIF aren't covered yet.","docs_url":"https://api.fuentio.com/docs/errors#id_scheme_not_supported"}}}}}}}}}},"/v1/verifications/{verification}":{"get":{"tags":["verification"],"summary":"A stored verification, by id or proof code","description":"Returns a verification exactly as it was served (it is a receipt), for the key that ran it. `unchanged` says whether the stored answer still hashes to the value recorded then. Free.","operationId":"get_verification_v1_verifications__verification__get","parameters":[{"name":"verification","in":"path","required":true,"schema":{"type":"string","description":"ver_… or FUE-…","title":"Verification"},"description":"ver_… or FUE-…"}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Verification V1 Verifications  Verification  Get"}}}},"404":{"content":{"application/json":{"examples":{"not_found":{"value":{"meta":{"request_id":"req_example"},"error":{"code":"not_found","message":"No verification 'FUE-FR-20261005-K7Q2MX' for this caller.","docs_url":"https://api.fuentio.com/docs/errors#not_found"}}}}}},"description":"Not Found"}}}},"/v1/exports/{token}":{"get":{"tags":["exports"],"summary":"Download an exported file","description":"The `download_url` of an `xlsx` or `parquet` answer. The link is signed and valid 24 hours from the answer; then `not_found`. Free, no key needed: the link itself is the secret.","operationId":"download_export_v1_exports__token__get","parameters":[{"name":"token","in":"path","required":true,"schema":{"type":"string","description":"From download_url.","title":"Token"},"description":"From download_url."}],"responses":{"200":{"description":"Successful Response"}}}}},"components":{"schemas":{"ExplainRequest":{"properties":{"left":{"type":"string","title":"Left","description":"A Fuentio record ID.","examples":["FR-SIREN-441639465"]},"right":{"type":"string","title":"Right","description":"Another record ID.","examples":["FR-LEI-969500F7JLTX36OUI695"]}},"additionalProperties":false,"type":"object","required":["left","right"],"title":"ExplainRequest"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"IssueRequest":{"properties":{"subject":{"type":"string","maxLength":80,"title":"Subject","description":"What the issue is about: a Fuentio entity ID, a record ID or a tool name.","examples":["FR-SIREN-441639465"]},"category":{"type":"string","enum":["wrong_data","wrong_link","missing_data","wrong_status","other"],"title":"Category","examples":["wrong_status"]},"message":{"type":"string","maxLength":2000,"title":"Message","description":"What you expected and what you got (10 to 2,000 characters).","examples":["The company is shown active but BODACC published a liquidation in 2026."]}},"additionalProperties":false,"type":"object","required":["subject","category","message"],"title":"IssueRequest"},"KeyRequest":{"properties":{"email":{"type":"string","maxLength":254,"pattern":"^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$","title":"Email","description":"Required: one free key per person.","examples":["dev@example.com"]},"label":{"anyOf":[{"type":"string","maxLength":80},{"type":"null"}],"title":"Label"}},"additionalProperties":false,"type":"object","required":["email"],"title":"KeyRequest"},"ResolveRequest":{"properties":{"country":{"type":"string","title":"Country","description":"ISO country code: FR or ES.","examples":["FR"]},"name":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Name","description":"The company's name as you have it."},"identifier":{"anyOf":[{"type":"string","maxLength":64},{"type":"null"}],"title":"Identifier","description":"An official ID if you have one (SIREN, SIRET, VAT, LEI, Registro Mercantil sheet): the only thing that links exactly.","examples":["441639465"]},"id_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Scheme","description":"Force the ID type, e.g. LEI."},"postal_code":{"anyOf":[{"type":"string","maxLength":20},{"type":"null"}],"title":"Postal Code","examples":["92100"]},"locality":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Locality","examples":["Boulogne-Billancourt"]},"limit":{"type":"integer","maximum":10.0,"minimum":1.0,"title":"Limit","description":"Candidates returned.","default":5}},"additionalProperties":false,"type":"object","required":["country"],"title":"ResolveRequest"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerifyRequest":{"properties":{"country":{"type":"string","title":"Country","description":"ISO country code: FR or ES.","examples":["FR"]},"identifier":{"type":"string","title":"Identifier","description":"Official ID: FR SIREN or SIRET; ES Registro Mercantil sheet (from search_companies) or Fuentio ID.","examples":["441639465"]},"id_scheme":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Id Scheme","description":"Force the ID type, e.g. FR_SIRET."},"reference":{"anyOf":[{"type":"string","maxLength":200},{"type":"null"}],"title":"Reference","description":"Your own case id, stored with the result."}},"additionalProperties":false,"type":"object","required":["country","identifier"],"title":"VerifyRequest"},"WatchRequest":{"properties":{"entity_id":{"type":"string","maxLength":20,"title":"Entity Id","description":"A Fuentio entity ID.","examples":["fu_7K3M9Q2XH4PZ"]},"callback_url":{"type":"string","maxLength":500,"title":"Callback Url","description":"Your https endpoint. Each POST is signed (Fuentio-Signature header).","examples":["https://hooks.example.com/fuentio"]}},"additionalProperties":false,"type":"object","required":["entity_id","callback_url"],"title":"WatchRequest"}}}}