# Vérif Entreprise FR > Verify a French company in one call: legal identity, active/closed status, insolvency proceedings (BODACC), RGE certifications, and an explained verdict with stable signal codes. Pay per call in USDC with x402 — no account, no API key. Data: Annuaire des Entreprises (DINUM), BODACC (DILA), ADEME — Licence Ouverte Etalab 2.0. Informations issues de sources publiques, fournies à titre indicatif. Ne constitue pas un conseil. ## Endpoints (x402, USDC on Base mainnet (eip155:8453) or Solana) - GET https://api-production-24833.up.railway.app/v1/verify?siren=552032534 — $0.01. Full check + verdict (favorable | vigilance | defavorable | indetermine) + signaux[]. Optional &nom=Jean%20Dupont → correspondanceNom (exacte | partielle | aucune) without disclosing the official name. - GET https://api-production-24833.up.railway.app/v1/search?q=boulangerie&code_postal=69003 — $0.002. Find a SIREN by name (max 10 results). Optional: commune (INSEE code), code_postal. - GET https://api-production-24833.up.railway.app/v1/rge?siret=34758223100226 — $0.01. RGE qualifications of an establishment (domains, certifying body, validity). - POST https://api-production-24833.up.railway.app/v1/verify/batch {"sirens":["552032534","508927373"]} — scheme "upto": authorize up to $0.008 x n (n <= 50); only successful checks are charged. ## How to pay 1. Call the endpoint. Invalid input returns 400 with no payment request. 2. You get HTTP 402 with a base64 JSON PAYMENT-REQUIRED header (x402 v2: scheme, network, amount, payTo). 3. Sign with an x402 client (e.g. @x402/fetch wrapFetchWithPayment) and retry with the PAYMENT-SIGNATURE header. 4. 200 = data + PAYMENT-RESPONSE receipt. Payment is settled ONLY if the response status is < 400 (404 / 5xx are never charged). ## Reading the result - verdict.niveau: favorable, vigilance, defavorable, indetermine (BODACC unreachable). verdict.confiance: complete | partielle. - signaux[].code is stable (never renamed): e.g. LIQUIDATION_JUDICIAIRE_EN_COURS, REDRESSEMENT_JUDICIAIRE_EN_COURS, PLAN_REDRESSEMENT_EN_COURS, ENTREPRISE_CESSEE, ENTREPRISE_RECENTE, AUCUNE_PROCEDURE_COLLECTIVE, QUALIFICATION_RGE. - fraicheur: temps_reel | cache | degradee (a source is down, data < 7 days old). - No personal data: no director names, no sole-trader names or home addresses. ## MCP server POST https://api-production-24833.up.railway.app/mcp (Streamable HTTP, stateless). Tools: verifier_entreprise ($0.01), rechercher_entreprise ($0.002), qualifications_rge ($0.01). Each tool call is paid with x402-in-MCP (e.g. @x402/mcp client); errors are never charged. ## More - OpenAPI 3.1: https://api-production-24833.up.railway.app/openapi.json - Full documentation for LLMs (signal codes, errors, example responses): https://api-production-24833.up.railway.app/llms-full.txt - Health: https://api-production-24833.up.railway.app/health ## Parameters - /v1/verify: siren (required, 9 digits, Luhn-valid; spaces, dots and dashes accepted), nom (optional, 2-100 characters). - /v1/search: q (required, 3-100 characters), code_postal (optional, 5 digits), commune (optional, INSEE commune code such as 69383 or 2A004, not a city name). At most 10 results, no pagination. - /v1/rge: siret (required, 14 digits). - /v1/verify/batch: JSON body {"sirens": [...]} with 1 to 50 SIREN; duplicates are removed before pricing. ## Errors (never charged) - 400 PARAMETRE_INVALIDE: invalid input, returned before any payment request. A request with no parameter at all gets the 402 so crawlers can see the price; if paid anyway, it returns 400 and is not settled. - 404 NON_TROUVE: unknown or non-public company or establishment. The payment is verified but never settled. - 502 SOURCE_INDISPONIBLE: an official source is down and no cached data under 7 days is usable. Not settled. - 429 TROP_DE_REQUETES: rate limit (30 unpaid or 300 paid requests per minute per IP). - Every error body is {"erreur": {"code", "message"}, "requestId"}. ## Verdict rules - defavorable: at least one critique signal. - vigilance: no critique signal, at least one eleve or moyen signal. - indetermine: no alert, but BODACC could not be checked (verdict.confiance = partielle). - favorable: no alert and BODACC was checked. ## Signal codes (stable: never renamed or removed; ignore unknown codes and rely on niveau) - ENTREPRISE_CESSEE (critique): Company closed in the SIRENE register. - LIQUIDATION_JUDICIAIRE_EN_COURS (critique): Latest judgment opens, extends, converts to or resumes a judicial liquidation. - LIQUIDATION_CLOTUREE_INSUFFISANCE_ACTIF (critique): Liquidation closed for insufficient assets: creditors were not paid. - RADIATION_RCS (eleve): Deregistration notice published in BODACC. - REDRESSEMENT_JUDICIAIRE_EN_COURS (eleve): Judicial receivership opened (or converted to), no plan adopted since. - SAUVEGARDE_EN_COURS (moyen): Safeguard procedure opened (difficulties without cessation of payments). - PLAN_REDRESSEMENT_EN_COURS (moyen): Receivership plan adopted less than 10 years ago: debts repaid on a schedule. - PLAN_SAUVEGARDE_EN_COURS (moyen): Safeguard plan adopted less than 10 years ago. - ENTREPRISE_RECENTE (moyen): Created less than one year ago. - SIEGE_FERME (moyen): Active company whose head office is closed. - AUCUN_ETABLISSEMENT_OUVERT (moyen): Active company without any open establishment. - ENTREPRISE_JEUNE (faible): Created 1 to 3 years ago. - PROCEDURE_COLLECTIVE_PASSEE (faible): Procedure ended, or plan adopted more than 10 years ago. - PROCEDURE_CLOTUREE_EXTINCTION_PASSIF (info): Procedure closed because all debts were paid. - DECISION_INFIRMEE_EN_APPEL (info): A decision was overturned on appeal: check procedures.historique. - ENTREPRENEUR_INDIVIDUEL (info): Sole trader (business and personal assets may be linked). - MULTI_ETABLISSEMENTS (info): At least 2 open establishments. - SOURCE_BODACC_INDISPONIBLE (info): BODACC unreachable: insolvency proceedings were not checked. - ENTREPRISE_ETABLIE (positif): Created 10 years ago or more and not closed. - AUCUNE_PROCEDURE_COLLECTIVE (positif): No insolvency notice in BODACC. - QUALIFICATION_RGE (positif): At least one establishment holds an RGE qualification (details: /v1/rge). - CERTIFICATION_QUALIOPI (positif): Training body certified Qualiopi. - LABEL_BIO (positif): Certified organic operator. - ENTREPRISE_ESS (positif): Social and solidarity economy company. - SOCIETE_A_MISSION (positif): Mission-driven company (société à mission). ## Example: GET /v1/verify?siren=552032534 ```json { "siren": "552032534", "entreprise": { "siren": "552032534", "denomination": "DANONE", "sigle": null, "entrepreneurIndividuel": false, "natureJuridique": { "code": "5599", "libelle": "SA à conseil d'administration" }, "activite": { "codeNaf": "70.10Z", "section": "M" }, "categorie": { "code": "GE", "libelle": "Grande entreprise" }, "dateCreation": "1955-01-01", "ancienneteAnnees": 71.7, "etat": "active", "dateCessation": null, "effectif": { "code": "42", "libelle": "1 000 à 1 999 salariés", "min": 1000, "max": 1999, "annee": "2024" }, "employeur": null, "siege": { "siret": "55203253400703", "commune": "PARIS", "codeCommune": "75109", "codePostal": "75009", "departement": "75", "adresse": "59-61 RUE LA FAYETTE 75009 PARIS", "etat": "ouvert" }, "etablissements": { "total": 19, "ouverts": 3 }, "labels": { "rge": false, "qualiopi": false, "bio": false, "ess": false, "societeMission": false }, "miseAJour": "2026-10-04T09:53:11" }, "procedures": { "etat": "aucune", "libelle": "Aucune procédure collective publiée", "depuis": null, "dateOuverture": null, "radiation": null, "historique": [] }, "correspondanceNom": null, "verdict": { "niveau": "favorable", "resume": "Favorable : entreprise active, sans procédure collective publiée ni signal d'alerte.", "confiance": "complete" }, "signaux": [ { "code": "MULTI_ETABLISSEMENTS", "niveau": "info", "message": "3 établissements ouverts (sur 19 au total).", "source": "annuaire", "date": null, "preuve": null }, { "code": "AUCUNE_PROCEDURE_COLLECTIVE", "niveau": "positif", "message": "Aucune procédure collective publiée au BODACC.", "source": "bodacc", "date": null, "preuve": null }, { "code": "ENTREPRISE_ETABLIE", "niveau": "positif", "message": "Entreprise créée il y a 71 ans (1955-01-01).", "source": "annuaire", "date": "1955-01-01", "preuve": null } ], "fraicheur": "temps_reel", "sources": { "mention": "Annuaire des Entreprises (DINUM), BODACC (DILA), ADEME — Licence Ouverte Etalab 2.0", "detail": [ { "id": "recherche_entreprises", "nom": "Annuaire des Entreprises (DINUM)", "statut": "ok" }, { "id": "bodacc", "nom": "BODACC (DILA)", "statut": "ok" } ] }, "verifieLe": "2026-10-04T17:27:18.050Z", "avertissement": "Informations issues de sources publiques, fournies à titre indicatif. Ne constitue pas un conseil.", "requestId": "00000000-0000-4000-8000-000000000000" } ``` ## Example: GET /v1/rge?siret=34758223100226 ```json { "siret": "34758223100226", "siren": "347582231", "denomination": "URBANIS", "etablissement": { "etat": "ouvert", "commune": "NIMES", "codePostal": "30900" }, "rge": { "qualifie": true, "nombreQualificationsValides": 2, "qualifications": [ { "code": "1911", "nom": "Audit énergétique “maisons individuelles” (1911)", "domaines": [ "Audit énergétique Maison individuelle" ], "metaDomaine": "Etudes énergétiques", "organisme": "opqibi", "certificat": "Certificat OPQIBI", "dateDebut": "2025-12-01", "dateFin": "2029-12-01", "valide": true, "particuliers": true, "url": "http://opqibi.com/fiche/4772" }, { "code": "1905", "nom": "Audit énergétique des bâtiments (tertiaires et/ou habitations collectives) (1905)", "domaines": [ "Audit énergétique Maison individuelle", "Audit énergétique Logement collectif" ], "metaDomaine": "Etudes énergétiques", "organisme": "opqibi", "certificat": "Certificat OPQIBI", "dateDebut": "2025-12-01", "dateFin": "2026-12-01", "valide": true, "particuliers": true, "url": "http://opqibi.com/fiche/4772" } ] }, "fraicheur": "temps_reel", "sources": { "mention": "Annuaire des Entreprises (DINUM), BODACC (DILA), ADEME — Licence Ouverte Etalab 2.0", "detail": [ { "id": "recherche_entreprises", "nom": "Annuaire des Entreprises (DINUM)", "statut": "ok" }, { "id": "ademe_rge", "nom": "Liste des entreprises RGE (ADEME)", "statut": "ok" } ] }, "verifieLe": "2026-10-04T17:27:18.065Z", "avertissement": "Informations issues de sources publiques, fournies à titre indicatif. Ne constitue pas un conseil.", "requestId": "00000000-0000-4000-8000-000000000000" } ``` ## Example: GET /v1/search?q=boulangerie&code_postal=69003 (truncated to 3 results) ```json { "requete": { "q": "boulangerie", "commune": null, "codePostal": "69003" }, "resultats": [ { "siren": "403052111", "siret": "40305211101964", "denomination": "BOULANGERIES PAUL", "entrepreneurIndividuel": false, "etat": "active", "codeNaf": "10.71A", "commune": "LYON 3EME", "codePostal": "69003", "dateCreation": "1995-12-07" }, { "siren": "508565421", "siret": "50856542100023", "denomination": "BOULANGERIE MALATIER", "entrepreneurIndividuel": false, "etat": "active", "codeNaf": "10.71C", "commune": "LYON", "codePostal": "69003", "dateCreation": "2008-10-15" }, { "siren": "499211340", "siret": "49921134000058", "denomination": "BOULANGERIE DES ROCHES", "entrepreneurIndividuel": false, "etat": "active", "codeNaf": "10.71C", "commune": "LYON", "codePostal": "69003", "dateCreation": "2007-07-17" } ], "nombreResultats": 3, "plusDeResultats": true, "fraicheur": "temps_reel", "sources": { "mention": "Annuaire des Entreprises (DINUM), BODACC (DILA), ADEME — Licence Ouverte Etalab 2.0", "detail": [ { "id": "recherche_entreprises", "nom": "Annuaire des Entreprises (DINUM)", "statut": "ok" } ] }, "verifieLe": "2026-10-04T17:27:18.059Z", "avertissement": "Informations issues de sources publiques, fournies à titre indicatif. Ne constitue pas un conseil.", "requestId": "00000000-0000-4000-8000-000000000000" } ```