Référence de l'API LegalOne

Identité, établissements, capital, documents et avis BODACC des entreprises françaises, et adresses normalisées. 20 routes et 21 appels, générés depuis openapi.json (version 0.1.0).

Présentation, inscription gratuite et serveur MCP : API et MCP gratuits des entreprises françaises.

Présentation

API gratuite sur les entreprises françaises, construite sur des données publiques : INSEE Sirene (identité, établissements), INPI RNE (capital, documents déposés) et DILA BODACC (avis). Ces données sont en lecture seule ; seule la préparation d'annonces légales (/v1/annonces/brouillons, quand elle est ouverte) enregistre un brouillon sur legalone.fr, sans paiement ni publication automatiques. Les dirigeants sont limités à leur nom et à leur fonction, plus le mois et l'année de naissance pour une clé d'accès étendu (compte vérifié). Il n'existe aucune recherche de personnes.

Elle sert à pré-remplir et à enrichir l'onboarding de vos clients professionnels : à partir d'un SIREN, vous obtenez la dénomination, la forme juridique, l'adresse du siège (normalisée et géolocalisée), le capital, les dirigeants (nom et fonction) et le code d'activité. Ces données servent à pré-remplir et enrichir ; elles ne remplacent pas la vérification réglementaire (article L.561-5 du code monétaire et financier) : vérifiez sur un extrait Kbis ou RNE.

Les routes /v1/adresses complètent ces données : autocomplétion, normalisation et géolocalisation d'adresses postales françaises, à partir de la Base Adresse Nationale (BAN, Licence Ouverte 2.0). Elles ne disent rien sur les personnes qui habitent ou travaillent à une adresse.

Authentification

Toutes les routes exigent une clé, envoyée dans Authorization: Bearer lo_… (ou X-API-Key), à l'exception de GET /v1/health, GET /v1/openapi.json, de l'inscription (POST /v1/compte, POST /v1/compte/connexion) et de l'opposition (POST /v1/oppositions). Une requête sans clé reçoit un 401. La clé est gratuite : créez un compte développeur sur https://www.legalone.fr/developers#compte (adresse e-mail vérifiée, société, usage prévu, acceptation des conditions), puis générez-la dans l'espace développeur https://api.legalone.fr/compte.

Attribution

Affichez près des données le texte Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, mise à jour le {date}, où {date} est meta.updatedAt au format JJ/MM/AAAA et « LegalOne » un lien vers data.links.legalone (ou https://www.legalone.fr). Le texte prêt à afficher est dans meta.attribution. Seules les sources de meta.sources sont à citer : quand elles incluent la Base Adresse Nationale (adresse normalisée d'un établissement), meta.attribution l'ajoute à la liste. Les routes /v1/adresses n'ont pas de date de mise à jour : leur mention est Adresses : Base Adresse Nationale (BAN), Licence Ouverte 2.0 — via LegalOne.

Quotas

Il n'existe pas de quota sans clé. Un compte standard a 60 requêtes par minute, 5 000 par jour et 100 000 par mois, pour toutes ses clés ensemble ; la recherche est limitée à 20 requêtes par minute. Un quota supérieur, accordé gratuitement sur demande depuis l'espace développeur, donne 300 requêtes par minute, 25 000 par jour et 500 000 par mois, dont 60 par minute pour la recherche. Les routes d'adresses partagent ces quotas. Les en-têtes X-RateLimit-* indiquent l'état du quota et Retry-After le délai avant de réessayer après un 429. Le serveur MCP (https://mcp.legalone.fr/mcp) reste utilisable sans clé, avec un quota par adresse IP plus bas (60 requêtes par minute, 1 000 par jour) ; une clé envoyée avec la requête applique le quota de son compte (toutes ses clés ensemble).

Annonces légales

Les routes /v1/annonces donnent le prix réglementé d'une annonce légale (fixé par arrêté, identique dans tous les journaux habilités du département), les annonces qu'exige un événement (table de règles, base légale citée), les démarches qui suivent, et préparent un brouillon sur legalone.fr : le lien renvoyé (valable 7 jours) ouvre le formulaire pré-rempli, où l'utilisateur relit, complète et paie. Aucun paiement ne passe par l'API. Mention : Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne.

Cache

Ne conservez pas une réponse plus de 7 jours sans la rafraîchir : une société ou un avis peut disparaître après une opposition ou un retrait à la source, et un 404 vaut demande de retrait. Utilisez ETag et If-None-Match pour revalider à moindre coût. Les réponses portent Cache-Control: private (max-age=3600 pour les fiches, 600 pour la recherche, 86400 pour les adresses) : elles ne doivent pas être mises en cache par un cache partagé, qui contournerait la clé.

Erreurs

Toutes les erreurs suivent la RFC 9457 (application/problem+json).

Conditions d'utilisation : https://www.legalone.fr/developers/conditions. Politique de confidentialité : https://www.legalone.fr/developers/conditions#confidentialite

Entreprises

Identité officielle et recherche d'entreprises (INSEE Sirene, INPI RNE).

GET/v1/entreprises/{siren}Clé d'API obligatoire

Fiche d'identité officielle d'une entreprise à partir de son SIREN

Renvoie l'identité officielle d'une entreprise française : dénomination, état (en activité ou cessée), forme juridique, activité (NAF), date de création, siège, établissements, capital social et dirigeants (nom et fonction uniquement). Utilisez-la quand vous connaissez le SIREN (9 chiffres) et voulez des faits vérifiables sur la société.

Détails

Si vous n'avez que le nom, appelez d'abord searchCompanies. Ne sert pas à rechercher des personnes, ni à obtenir des coordonnées de contact, des adresses personnelles ou, sauf accès étendu, des dates de naissance. Idéale pour pré-remplir un formulaire d'onboarding à partir du SIREN (dénomination, forme juridique, adresse du siège normalisée, capital, dirigeants, code d'activité) ; ces données servent à pré-remplir et enrichir, elles ne remplacent pas la vérification réglementaire (article L.561-5 du code monétaire et financier) : vérifiez sur un extrait Kbis ou RNE. Accès étendu (conditions d'utilisation, article 4 bis) : pour une clé portant le scope officers:birth, accordée par l'équipe à un compte vérifié, chaque dirigeant personne physique dont la date est connue porte en plus birth (mois et année de naissance, AAAA-MM, tels que publiés par le RNE) ; la réponse est alors Cache-Control: private, no-store avec Vary: Authorization, meta.warnings l'indique, meta.coverage.officerBirth est présent et l'INPI RNE figure dans meta.sources. Cette donnée n'existe ni en recherche, ni dans les établissements ou les listes, ni dans le serveur MCP. Jamais le jour ni le lieu de naissance, la nationalité ou le domicile. commercialProspectingAllowed vaut faux quand la prospection est interdite ou inconnue. Chaque établissement porte, quand elle est connue, son adresse normalisée et géolocalisée dans address.normalized (Base Adresse Nationale) ; meta.attribution cite alors aussi la BAN. Affichez l'attribution de meta.attribution.

Paramètres

NomObligatoireDescription
siren
string · chemin
obligatoireNuméro SIREN à 9 chiffres. Les espaces et points saisis (ex. 552 032 534) sont ignorés.
format ^\d{9}$

Réponses

  • 200Fiche de l'entreprise.
  • 304Non modifié : la ressource correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl \
  -H "Authorization: Bearer lo_votre_cle" \
  https://api.legalone.fr/v1/entreprises/552032534
Réponse 200
{
  "data": {
    "siren": "552032534",
    "name": "Exemple SAS",
    "acronym": null,
    "status": "active",
    "legalFormCode": "5710",
    "activityCode": "62.01Z",
    "creationDate": "2010-01-15",
    "cessationDate": null,
    "headOffice": {
      "siret": "55203253400646",
      "siren": "552032534",
      "name": "Exemple SAS",
      "status": "active",
      "isHeadOffice": true,
      "address": {
        "line": "8 boulevard du Port",
        "postalCode": "80000",
        "city": "Amiens",
        "countryCode": null,
        "normalized": {
          "id": "80021_6590_00008",
          "label": "8 Boulevard du Port 80000 Amiens",
          "kind": "housenumber",
          "houseNumber": "8",
          "street": "Boulevard du Port",
          "postalCode": "80000",
          "city": "Amiens",
          "cityCode": "80021",
          "latitude": 49.897443,
          "longitude": 2.290084,
          "score": 0.97,
          "geocodedAt": "2026-10-24T01:30:00.000Z"
        }
      },
      "activityCode": "62.01Z",
      "creationDate": "2010-01-15",
      "closureDate": null,
      "links": {
        "self": "https://api.legalone.fr/v1/etablissements/55203253400646",
        "company": "https://api.legalone.fr/v1/entreprises/552032534",
        "legalone": "https://www.legalone.fr/etablissement/55203253400646"
      }
    },
    "establishments": {
      "total": 1,
      "open": 1,
      "items": [
        {
          "siret": "55203253400646",
          "siren": "552032534",
          "name": "Exemple SAS",
          "status": "active",
          "isHeadOffice": true,
          "address": {
            "line": "8 boulevard du Port",
            "postalCode": "80000",
            "city": "Amiens",
            "countryCode": null,
            "normalized": {
              "id": "80021_6590_00008",
              "label": "8 Boulevard du Port 80000 Amiens",
              "kind": "housenumber",
              "houseNumber": "8",
              "street": "Boulevard du Port",
              "postalCode": "80000",
              "city": "Amiens",
              "cityCode": "80021",
              "latitude": 49.897443,
              "longitude": 2.290084,
              "score": 0.97,
              "geocodedAt": "2026-10-24T01:30:00.000Z"
            }
          },
          "activityCode": "62.01Z",
          "creationDate": "2010-01-15",
          "closureDate": null,
          "links": {
            "self": "https://api.legalone.fr/v1/etablissements/55203253400646",
            "company": "https://api.legalone.fr/v1/entreprises/552032534",
            "legalone": "https://www.legalone.fr/etablissement/55203253400646"
          }
        }
      ]
    },
    "capital": {
      "amount": 10000,
      "currency": "EUR",
      "variable": false,
      "minimum": null
    },
    "officers": [
      {
        "id": "dirigeant-1",
        "name": "Exemple Holding",
        "role": "Président",
        "type": "company"
      }
    ],
    "commercialProspectingAllowed": false,
    "links": {
      "self": "https://api.legalone.fr/v1/entreprises/552032534",
      "legalone": "https://www.legalone.fr/entreprise/exemple-sas-552032534",
      "bodacc": "https://api.legalone.fr/v1/entreprises/552032534/bodacc",
      "documents": "https://api.legalone.fr/v1/entreprises/552032534/documents",
      "inpi": "https://data.inpi.fr/entreprises/552032534",
      "officialDirectory": "https://annuaire-entreprises.data.gouv.fr/entreprise/552032534"
    }
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-10-23T04:12:00.000Z",
    "sources": [
      {
        "name": "INSEE Sirene",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/",
        "updatedAt": "2026-10-23T04:12:00.000Z"
      },
      {
        "name": "Base Adresse Nationale",
        "licence": "Licence Ouverte 2.0",
        "url": "https://adresse.data.gouv.fr/",
        "updatedAt": "2026-10-24T01:30:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, Base Adresse Nationale, mise à jour le 23/10/2026",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite",
    "coverage": {
      "establishments": "complete",
      "capital": "available",
      "officers": "available",
      "prospectingFlag": "unknown"
    }
  },
  "links": {
    "self": "https://api.legalone.fr/v1/entreprises/552032534",
    "documentation": "https://www.legalone.fr/developers"
  }
}
GET/v1/entreprisesClé d'API obligatoire

Recherche d'entreprises par nom, SIREN ou SIRET

Renvoie la liste des entreprises dont la dénomination correspond à q, avec leur SIREN, état, forme juridique, activité et commune du siège. Utilisez-la pour retrouver le SIREN d'une société dont vous connaissez le nom, puis appelez getCompany.

Détails

Un SIREN ou un SIRET saisi dans q déclenche une recherche exacte. Limites : q de 2 à 200 caractères, 5 pages au plus, 20 résultats par page. Cette route a son propre quota (20 requêtes par minute pour un compte standard, toutes ses clés ensemble, 60 avec un quota supérieur). Réponse Cache-Control: private, max-age=600. Ne sert pas à rechercher des personnes physiques (par nom de dirigeant, par exemple) ni à constituer des listes de prospection.

Paramètres

NomObligatoireDescription
q
string · requête
obligatoireNom de société, SIREN ou SIRET.
200 caractères au plus
page
integer · requête
facultatifNuméro de page, de 1 à 5.
de 1 à 5 · par défaut 1
per_page
integer · requête
facultatifRésultats par page, de 1 à 20.
de 1 à 20 · par défaut 20

Réponses

  • 200Page de résultats.
  • 304Non modifié : la ressource correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'q=exemple' \
  https://api.legalone.fr/v1/entreprises
Réponse 200
{
  "data": [
    {
      "siren": "552032534",
      "name": "Exemple SAS",
      "status": "active",
      "legalFormCode": "5710",
      "activityCode": "62.01Z",
      "postalCode": "75001",
      "city": "Paris",
      "links": {
        "self": "https://api.legalone.fr/v1/entreprises/552032534",
        "legalone": "https://www.legalone.fr/entreprise/exemple-sas-552032534"
      }
    }
  ],
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-10-23T04:12:00.000Z",
    "sources": [
      {
        "name": "INSEE Sirene",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/",
        "updatedAt": "2026-10-23T04:12:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, mise à jour le 23/10/2026",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite",
    "page": 1,
    "perPage": 20,
    "hasMore": false
  },
  "links": {
    "self": "https://api.legalone.fr/v1/entreprises?q=exemple",
    "documentation": "https://www.legalone.fr/developers"
  }
}

Établissements

Lieux d'activité des entreprises (INSEE Sirene).

GET/v1/etablissements/{siret}Clé d'API obligatoire

Fiche d'un établissement à partir de son SIRET

Renvoie un établissement précis : adresse d'activité, état (ouvert ou fermé), code d'activité, dates de création et de fermeture, et un lien vers l'entreprise. Utilisez-la quand vous avez un SIRET (14 chiffres) et que l'adresse ou l'état d'un lieu d'activité compte.

Détails

Pour l'entreprise entière, utilisez getCompany avec les 9 premiers chiffres. address.normalized donne l'adresse normalisée et ses coordonnées (Base Adresse Nationale) quand elle est connue, sinon null. Ne sert pas à trouver des personnes ni leur domicile.

Paramètres

NomObligatoireDescription
siret
string · chemin
obligatoireNuméro SIRET à 14 chiffres. Les espaces et points saisis sont ignorés.
format ^\d{14}$

Réponses

  • 200Fiche de l'établissement.
  • 304Non modifié : la ressource correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl \
  -H "Authorization: Bearer lo_votre_cle" \
  https://api.legalone.fr/v1/etablissements/55203253400646
Réponse 200
{
  "data": {
    "siret": "99205213400010",
    "siren": "992052134",
    "name": null,
    "status": "active",
    "isHeadOffice": true,
    "address": {
      "line": "32 RUE DE PARIS",
      "postalCode": "92100",
      "city": "BOULOGNE-BILLANCOURT",
      "countryCode": "FR",
      "normalized": null
    },
    "activityCode": "58.29C",
    "creationDate": "2025-09-11",
    "closureDate": null,
    "links": {
      "self": "https://api.legalone.fr/v1/etablissements/99205213400010",
      "company": "https://api.legalone.fr/v1/entreprises/992052134",
      "legalone": "https://legalone.fr/etablissement/99205213400010"
    }
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2025-10-02T09:01:31.000Z",
    "sources": [
      {
        "name": "INSEE Sirene",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.data.gouv.fr/fr/datasets/base-sirene-des-entreprises-et-de-leurs-etablissements-siren-siret/",
        "updatedAt": "2025-10-02T09:01:31.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, mise à jour le 02/10/2025",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/etablissements/99205213400010",
    "documentation": "https://www.legalone.fr/developers"
  }
}

BODACC

Avis du Bulletin officiel des annonces civiles et commerciales (DILA).

GET/v1/entreprises/{siren}/bodaccClé d'API obligatoire

Avis du BODACC concernant une entreprise

Renvoie les avis récents du BODACC (annonces civiles et commerciales : immatriculations, modifications, procédures collectives, comptes) qui citent le SIREN, du plus récent au plus ancien. Utilisez-la pour vérifier si une entreprise a fait l'objet d'annonces officielles.

Détails

Appelez getBodaccNotice pour le contenu d'un avis. Limitée à 20 avis. Ne sert pas à rechercher des personnes ni à évaluer leur situation personnelle ; pour toute décision, vérifiez l'avis original sur bodacc.fr.

Paramètres

NomObligatoireDescription
siren
string · chemin
obligatoireNuméro SIREN à 9 chiffres. Les espaces et points saisis (ex. 552 032 534) sont ignorés.
format ^\d{9}$
limit
integer · requête
facultatifNombre maximal d'avis, de 1 à 20.
de 1 à 20 · par défaut 20

Réponses

  • 200Avis de l'entreprise (liste éventuellement vide).
  • 304Non modifié : la ressource correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl \
  -H "Authorization: Bearer lo_votre_cle" \
  https://api.legalone.fr/v1/entreprises/552032534/bodacc
Réponse 200
{
  "data": [
    {
      "id": "B202601950001",
      "publicationDate": "2026-10-09",
      "companyName": "Exemple SAS",
      "sirens": [
        "552032534"
      ],
      "family": {
        "code": "modification",
        "label": "Modifications"
      },
      "noticeType": {
        "code": "annonce",
        "label": "Avis initial"
      },
      "department": {
        "code": "75",
        "name": "Paris"
      },
      "city": "Paris",
      "postalCode": "75002",
      "court": "Greffe du tribunal de commerce de Paris",
      "bulletin": "B",
      "noticeNumber": 1,
      "publicationReference": "BODACC B n° 20260195 du 09/10/2026, annonce n° 1",
      "links": {
        "self": "https://api.legalone.fr/v1/bodacc/B202601950001",
        "official": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:B202601950001",
        "legalone": "https://legalone.fr/annonces-legales/avis/B202601950001"
      }
    }
  ],
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-10-09T00:00:00.000Z",
    "sources": [
      {
        "name": "DILA BODACC",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.bodacc.fr/",
        "updatedAt": "2026-10-09T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, mise à jour le 09/10/2026",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/entreprises/552032534/bodacc",
    "documentation": "https://www.legalone.fr/developers"
  }
}
GET/v1/bodacc/{id}Clé d'API obligatoire

Contenu d'un avis du BODACC

Renvoie un avis du BODACC : famille et type d'avis, date de parution, tribunal, localisation, lien vers le PDF officiel et contenu structuré limité aux champs publics. Utilisez-la quand vous avez l'identifiant d'un avis (ex.

Détails

A202601950001), obtenu via listCompanyBodaccNotices. Ne sert pas à rechercher des personnes. Les identifiants sont insensibles à la casse.

Paramètres

NomObligatoireDescription
id
string · chemin
obligatoireIdentifiant de l'avis BODACC : une lettre A, B ou C suivie de 9 à 13 chiffres.
format ^[ABC]\d{9,13}$

Réponses

  • 200Avis complet.
  • 304Non modifié : la ressource correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl \
  -H "Authorization: Bearer lo_votre_cle" \
  https://api.legalone.fr/v1/bodacc/B202601950001
Réponse 200
{
  "data": {
    "id": "B202601950001",
    "publicationDate": "2026-10-09",
    "companyName": "Exemple SAS",
    "sirens": [
      "552032534"
    ],
    "family": {
      "code": "modification",
      "label": "Modifications"
    },
    "noticeType": {
      "code": "annonce",
      "label": "Avis initial"
    },
    "department": {
      "code": "75",
      "name": "Paris"
    },
    "city": "Paris",
    "postalCode": "75002",
    "court": "Greffe du tribunal de commerce de Paris",
    "bulletin": "B",
    "noticeNumber": 1,
    "publicationReference": "BODACC B n° 20260195 du 09/10/2026, annonce n° 1",
    "links": {
      "self": "https://api.legalone.fr/v1/bodacc/B202601950001",
      "official": "https://www.bodacc.fr/pages/annonces-commerciales-detail/?q.id=id:B202601950001",
      "legalone": "https://legalone.fr/annonces-legales/avis/B202601950001"
    },
    "pdfUrl": null,
    "sections": [
      {
        "kind": "person",
        "title": "Entreprise et immatriculation",
        "fields": [
          {
            "key": "typePersonne",
            "label": "Type de personne",
            "value": "Personne morale"
          },
          {
            "key": "numeroImmatriculation",
            "label": "N° RCS",
            "value": "552 032 534 RCS Paris"
          }
        ]
      },
      {
        "kind": "modification",
        "title": "Modification",
        "fields": [
          {
            "key": "descriptif",
            "label": "Descriptif",
            "value": "Modification de l'objet social."
          }
        ]
      }
    ]
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-10-09T00:00:00.000Z",
    "sources": [
      {
        "name": "DILA BODACC",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.bodacc.fr/",
        "updatedAt": "2026-10-09T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, mise à jour le 09/10/2026",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/bodacc/B202601950001",
    "documentation": "https://www.legalone.fr/developers"
  }
}

Documents

Métadonnées des documents déposés au registre national des entreprises (INPI).

GET/v1/entreprises/{siren}/documentsClé d'API obligatoire

Documents déposés au RNE par une entreprise

Renvoie les métadonnées (type, intitulé, date de dépôt, clôture de l'exercice) des actes et comptes annuels déposés au registre national des entreprises par l'entreprise, jusqu'à 50 documents. Utilisez-la pour savoir quels documents existent.

Détails

Ne sert pas à télécharger les fichiers : ils se téléchargent sur data.inpi.fr via links.inpi.

Paramètres

NomObligatoireDescription
siren
string · chemin
obligatoireNuméro SIREN à 9 chiffres. Les espaces et points saisis (ex. 552 032 534) sont ignorés.
format ^\d{9}$

Réponses

  • 200Documents déposés (liste éventuellement vide).
  • 304Non modifié : la ressource correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl \
  -H "Authorization: Bearer lo_votre_cle" \
  https://api.legalone.fr/v1/entreprises/552032534/documents
Réponse 200
{
  "data": [
    {
      "id": "68de475a3ed118998d0b07ae",
      "kind": "act",
      "title": "Copie des statuts",
      "filingDate": "2025-09-30",
      "closingDate": null,
      "links": {
        "inpi": "https://data.inpi.fr/entreprises/992052134"
      }
    },
    {
      "id": "68de475a3ed118998d0b07b1",
      "kind": "act",
      "title": "Attestation de dépôt des fonds",
      "filingDate": "2025-09-30",
      "closingDate": null,
      "links": {
        "inpi": "https://data.inpi.fr/entreprises/992052134"
      }
    }
  ],
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2025-10-02T09:35:22.000Z",
    "sources": [
      {
        "name": "INPI RNE",
        "licence": "Licence INPI de réutilisation du RNE (2024)",
        "url": "https://data.inpi.fr/",
        "updatedAt": "2025-10-02T09:35:22.000Z"
      }
    ],
    "warnings": [
      "Métadonnées seulement : les documents se téléchargent sur data.inpi.fr."
    ],
    "attribution": "Données : LegalOne — sources INSEE Sirene, INPI RNE, DILA BODACC, mise à jour le 02/10/2025",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/entreprises/992052134/documents",
    "documentation": "https://www.legalone.fr/developers"
  }
}

Adresses

Autocomplétion, normalisation et géolocalisation d'adresses postales françaises (Base Adresse Nationale).

GET/v1/adressesClé d'API obligatoire

Recherche et autocomplétion d'adresses postales françaises

Renvoie les adresses de la Base Adresse Nationale (BAN) qui correspondent à q, de la plus à la moins pertinente, avec numéro, voie, code postal, commune, code INSEE, coordonnées et score. Utilisez-la pour compléter une saisie au fil de la frappe (par défaut, le dernier mot est traité comme un début de mot : autocomplete=0 le désactive) ou pour chercher une voie, un lieu-dit ou une commune avec type.

Détails

Pour vérifier une adresse complète, préférez normalizeAddress. Limites : q de 3 à 200 caractères, 10 résultats au plus. Adresses de France uniquement. Même clé et mêmes quotas que les autres routes. Réponse mise en cache 24 heures chez le client (Cache-Control: private, max-age=86400). Ne sert pas à savoir qui habite ou travaille à une adresse, ni à lister les entreprises d'une adresse. Affichez l'attribution de meta.attribution.

Paramètres

NomObligatoireDescription
q
string · requête
obligatoireAdresse ou début d'adresse.
200 caractères au plus
limit
integer · requête
facultatifNombre maximal de résultats, de 1 à 10.
de 1 à 10 · par défaut 5
postcode
string · requête
facultatifCode postal à 5 chiffres : ne garde que les adresses de ce code postal.
format ^\d{5}$
citycode
string · requête
facultatifCode commune INSEE (5 caractères, 2A ou 2B pour la Corse) : ne garde que les adresses de cette commune.
format ^(\d{5}|2[ABab]\d{3})$
type
string · requête
facultatifNe garder que ce type de résultat : numéro dans une voie, voie, lieu-dit ou commune.
Valeurs : housenumber, street, locality, municipality
autocomplete
string · requête
facultatif0 désactive l'autocomplétion (le dernier mot est alors cherché en entier) ; toute autre valeur, ou l'absence du paramètre, la laisse active.
Valeurs : 0, 1
par défaut 1

Réponses

  • 200Adresses trouvées (liste éventuellement vide).
  • 304Non modifié : la réponse correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Adresses momentanément indisponibles : la Base Adresse Nationale ne répond pas (Retry-After: 30) ou le service d'adresses est très sollicité (Retry-After: 5).
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'q=8 bd du port amiens' \
  --data-urlencode 'limit=2' \
  https://api.legalone.fr/v1/adresses
Réponse 200
{
  "data": [
    {
      "id": "80021_6590_00008",
      "label": "8 Boulevard du Port 80000 Amiens",
      "kind": "housenumber",
      "houseNumber": "8",
      "street": "Boulevard du Port",
      "postalCode": "80000",
      "city": "Amiens",
      "cityCode": "80021",
      "context": "80, Somme, Hauts-de-France",
      "latitude": 49.897443,
      "longitude": 2.290084,
      "score": 0.97
    },
    {
      "id": "80021_6590",
      "label": "Boulevard du Port 80000 Amiens",
      "kind": "street",
      "houseNumber": null,
      "street": "Boulevard du Port",
      "postalCode": "80000",
      "city": "Amiens",
      "cityCode": "80021",
      "context": "80, Somme, Hauts-de-France",
      "latitude": 49.89798,
      "longitude": 2.29055,
      "score": 0.82
    }
  ],
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": null,
    "sources": [
      {
        "name": "Base Adresse Nationale",
        "licence": "Licence Ouverte 2.0",
        "url": "https://adresse.data.gouv.fr/",
        "updatedAt": null
      }
    ],
    "warnings": [],
    "attribution": "Adresses : Base Adresse Nationale (BAN), Licence Ouverte 2.0 — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/adresses?q=8+bd+du+port+amiens&limit=2",
    "documentation": "https://www.legalone.fr/developers"
  }
}
GET/v1/adresses/normaliserClé d'API obligatoire

Normalisation d'une adresse postale française

Renvoie la meilleure correspondance de la Base Adresse Nationale (BAN) pour une adresse complète, avec un statut : matched (correspondance fiable, score d'au moins 0.5), low_confidence (des candidats, aucun fiable : address est null et les candidats sont dans alternatives) ou not_found. Utilisez-la pour corriger, compléter, uniformiser ou géolocaliser une adresse saisie librement ou issue d'un fichier.

Détails

Fournissez soit q (adresse sur une ligne), soit line avec postcode et city ; citycode lève une ambiguïté de commune. Pour une saisie en cours de frappe, utilisez searchAddresses. Au plus 3 candidats sont examinés. Adresses de France uniquement. Même clé et mêmes quotas que les autres routes, réponse mise en cache 24 heures chez le client (Cache-Control: private, max-age=86400). Ne sert pas à savoir qui habite ou travaille à une adresse. Un statut matched n'est pas une preuve d'existence légale : vérifiez toute décision sur la source officielle. Affichez l'attribution de meta.attribution.

Paramètres

NomObligatoireDescription
q
string · requête
facultatifAdresse complète sur une ligne, de 3 à 200 caractères. Obligatoire si line, postcode et city sont absents.
200 caractères au plus
line
string · requête
facultatifNuméro, voie et complément d'adresse, à la place de q.
200 caractères au plus
postcode
string · requête
facultatifCode postal à 5 chiffres. Avec line, il s'ajoute à l'adresse cherchée ; il limite aussi les résultats à ce code postal.
format ^\d{5}$
city
string · requête
facultatifCommune, avec line.
200 caractères au plus
citycode
string · requête
facultatifCode commune INSEE (5 caractères, 2A ou 2B pour la Corse) : ne garde que les adresses de cette commune.
format ^(\d{5}|2[ABab]\d{3})$

Réponses

  • 200Résultat de la normalisation.
  • 304Non modifié : la réponse correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Adresses momentanément indisponibles : la Base Adresse Nationale ne répond pas (Retry-After: 30) ou le service d'adresses est très sollicité (Retry-After: 5).
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'q=8 bd du port 80000 amiens' \
  https://api.legalone.fr/v1/adresses/normaliser
Réponse 200
{
  "data": {
    "status": "matched",
    "address": {
      "id": "80021_6590_00008",
      "label": "8 Boulevard du Port 80000 Amiens",
      "kind": "housenumber",
      "houseNumber": "8",
      "street": "Boulevard du Port",
      "postalCode": "80000",
      "city": "Amiens",
      "cityCode": "80021",
      "context": "80, Somme, Hauts-de-France",
      "latitude": 49.897443,
      "longitude": 2.290084,
      "score": 0.97
    },
    "alternatives": []
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": null,
    "sources": [
      {
        "name": "Base Adresse Nationale",
        "licence": "Licence Ouverte 2.0",
        "url": "https://adresse.data.gouv.fr/",
        "updatedAt": null
      }
    ],
    "warnings": [],
    "attribution": "Adresses : Base Adresse Nationale (BAN), Licence Ouverte 2.0 — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/adresses/normaliser?q=8+bd+du+port+80000+amiens",
    "documentation": "https://www.legalone.fr/developers"
  }
}
GET/v1/adresses/inverseClé d'API obligatoire

Adresses les plus proches d'un point géographique

Renvoie les adresses de la Base Adresse Nationale (BAN) les plus proches d'un point donné par sa latitude et sa longitude, de la plus proche à la plus éloignée. Utilisez-la pour retrouver une adresse postale à partir de coordonnées (géocodage inverse). 10 résultats au plus, 1 par défaut.

Détails

Points en France uniquement. Même clé et mêmes quotas que les autres routes, réponse mise en cache 24 heures chez le client (Cache-Control: private, max-age=86400). Ne sert pas à localiser une personne ni à savoir qui habite ou travaille à un endroit. Affichez l'attribution de meta.attribution.

Paramètres

NomObligatoireDescription
lat
number · requête
obligatoireLatitude en degrés décimaux, entre -90 et 90.
de -90 à 90
lon
number · requête
obligatoireLongitude en degrés décimaux, entre -180 et 180.
de -180 à 180
limit
integer · requête
facultatifNombre maximal d'adresses, de 1 à 10.
de 1 à 10 · par défaut 1

Réponses

  • 200Adresses proches du point (liste éventuellement vide).
  • 304Non modifié : la réponse correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Adresses momentanément indisponibles : la Base Adresse Nationale ne répond pas (Retry-After: 30) ou le service d'adresses est très sollicité (Retry-After: 5).
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'lat=49.897443' \
  --data-urlencode 'lon=2.290084' \
  https://api.legalone.fr/v1/adresses/inverse
Réponse 200
{
  "data": [
    {
      "id": "80021_6590_00008",
      "label": "8 Boulevard du Port 80000 Amiens",
      "kind": "housenumber",
      "houseNumber": "8",
      "street": "Boulevard du Port",
      "postalCode": "80000",
      "city": "Amiens",
      "cityCode": "80021",
      "context": "80, Somme, Hauts-de-France",
      "latitude": 49.897442,
      "longitude": 2.290084,
      "score": 1
    }
  ],
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": null,
    "sources": [
      {
        "name": "Base Adresse Nationale",
        "licence": "Licence Ouverte 2.0",
        "url": "https://adresse.data.gouv.fr/",
        "updatedAt": null
      }
    ],
    "warnings": [],
    "attribution": "Adresses : Base Adresse Nationale (BAN), Licence Ouverte 2.0 — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/adresses/inverse?lat=49.897443&lon=2.290084",
    "documentation": "https://www.legalone.fr/developers"
  }
}

Annonces légales

Annonces légales : prix réglementé, annonces exigées par un événement, démarches suivantes, brouillon sur legalone.fr (relu et payé sur le site).

GET/v1/annonces/prixClé d'API obligatoire

Prix réglementé d'une annonce légale

Renvoie le prix HT, la TVA et le prix TTC d'une annonce légale pour une formalité et un département, selon le barème fixé par arrêté (le même dans tous les journaux habilités du département ; La Réunion et Mayotte ont leurs propres forfaits). Les annonces au caractère (vente de fonds, location-gérance, modifications multiples…) ont besoin de leur texte (text, ou POST pour un texte long) ; sans texte, la réponse donne le prix du caractère.

Détails

Ne sert ni à payer ni à commander : la publication et le paiement se font sur legalone.fr.

Paramètres

NomObligatoireDescription
formality
string · requête
obligatoireFormalité (identifiant du formulaire LegalOne).
Valeurs : eurl, sarl, sasu, sas, sa, snc, sc, sci, sccv, scm, scpi, scp …
department
string · requête
obligatoireDépartement de publication (75, 2A, 974…).
3 caractères au plus
text
string · requête
facultatifTexte court d'une annonce au caractère. Préférez POST /v1/annonces/prix : un texte d'annonce (noms, adresses) n'a pas sa place dans une URL, que les journaux de serveurs conservent.
10000 caractères au plus

Réponses

  • 200Prix réglementé.
  • 304Non modifié : la réponse correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'formality=transfert-siege-dans-departement' \
  --data-urlencode 'department=75' \
  https://api.legalone.fr/v1/annonces/prix
Réponse 200
{
  "data": {
    "formality": "transfert-siege-dans-departement",
    "label": "Transfert de siège social dans le département",
    "category": "Modifications",
    "pricing": "flat",
    "department": "75",
    "annex": "V",
    "currency": "EUR",
    "vatRate": 0.2,
    "schedule": {
      "version": "2026-01-01",
      "year": 2026,
      "label": "Arrêté du 19 novembre 2021 modifié (tarifs 2026 des annonces légales)",
      "url": "https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000053177549"
    },
    "amountExclTax": 109,
    "vat": 21.8,
    "amountInclTax": 130.8,
    "characterCount": null,
    "ratePerCharacter": null,
    "notes": [
      "Tarif réglementé par arrêté : le même prix dans tous les journaux habilités du département, sans frais ajoutés par LegalOne."
    ],
    "reviewNotice": "Préparé à partir de vos réponses : relisez l'annonce sur legalone.fr et corrigez-la si besoin avant de payer. Les informations sur les règles et les démarches sont indicatives ; en cas de doute, demandez conseil à un professionnel du droit."
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "sources": [
      {
        "name": "Légifrance",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.legifrance.gouv.fr/",
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/annonces/prix?formality=transfert-siege-dans-departement&department=75",
    "documentation": "https://www.legalone.fr/developers"
  }
}
POST/v1/annonces/prixClé d'API obligatoire

Prix réglementé d'une annonce au caractère (texte long)

Même réponse que GET /v1/annonces/prix, pour un texte trop long pour une URL. Le texte est compté comme sur legalone.fr (caractères et espaces), 10000 caractères au plus.

Détails

Ne publie rien et n'enregistre pas le texte.

Paramètres

NomObligatoireDescription
formality
string · corps JSON
obligatoireFormalité.
Valeurs : eurl, sarl, sasu, sas, sa, snc, sc, sci, sccv, scm, scpi, scp …
department
string · corps JSON
obligatoireDépartement de publication.
3 caractères au plus
text
string · corps JSON
facultatifTexte de l'annonce.
10000 caractères au plus

Réponses

  • 200Prix réglementé.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -X POST \
  -H "Authorization: Bearer lo_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{"formality":"location-gerance","department":"75","text":"Suivant acte sous seing privé…"}' \
  https://api.legalone.fr/v1/annonces/prix
Réponse 200
{
  "data": {
    "formality": "location-gerance",
    "label": "Location-gérance",
    "category": "Fonds de commerce",
    "pricing": "character",
    "department": "75",
    "annex": "V",
    "currency": "EUR",
    "vatRate": 0.2,
    "schedule": {
      "version": "2026-01-01",
      "year": 2026,
      "label": "Arrêté du 19 novembre 2021 modifié (tarifs 2026 des annonces légales)",
      "url": "https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000053177549"
    },
    "amountExclTax": 7.17,
    "vat": 1.43,
    "amountInclTax": 8.6,
    "characterCount": 30,
    "ratePerCharacter": 0.239,
    "notes": [
      "Tarif réglementé par arrêté : le même prix dans tous les journaux habilités du département, sans frais ajoutés par LegalOne."
    ],
    "reviewNotice": "Préparé à partir de vos réponses : relisez l'annonce sur legalone.fr et corrigez-la si besoin avant de payer. Les informations sur les règles et les démarches sont indicatives ; en cas de doute, demandez conseil à un professionnel du droit."
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "sources": [
      {
        "name": "Légifrance",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.legifrance.gouv.fr/",
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/annonces/prix",
    "documentation": "https://www.legalone.fr/developers"
  }
}
GET/v1/annonces/quelle-annonceClé d'API obligatoire

Annonces légales qu'exige un événement de la vie d'une société

À partir d'un ou plusieurs événements décidés ensemble (création, transfert de siège, changement de dirigeant, de dénomination, d'objet, de capital, de forme, de durée, dissolution, clôture de liquidation, vente de fonds…), indique les annonces obligatoires, leur nombre, leur département, leur délai, leur base légale et leur prix. La réponse vient d'une table de règles fixe ; quand il manque une information (greffe d'un département qui en compte plusieurs), elle renvoie une question au lieu de deviner.

Détails

Ne remplace pas un conseil juridique sur l'opportunité de la décision.

Paramètres

NomObligatoireDescription
situations
string · requête
obligatoireÉvénements séparés par des virgules (5 au plus).
legal_form
string · requête
facultatifForme actuelle (obligatoire pour une création ou une transformation).
Valeurs : sas, sasu, sarl, eurl, sa, snc, sci, sc, sccv, scm, scp, scpi …
new_legal_form
string · requête
facultatifForme après une transformation.
Valeurs : sas, sasu, sarl, eurl, sa, snc, sci, sc, sccv, scm, scp, scpi …
department
string · requête
facultatifDépartement du siège (avant un transfert).
3 caractères au plus
new_department
string · requête
facultatifDépartement du nouveau siège.
3 caractères au plus
same_commercial_court
string · requête
facultatifTransfert dans un département à plusieurs greffes : le nouveau siège dépend-il du même greffe ?
Valeurs : true, false
sole_shareholder_is_company
string · requête
facultatifDissolution sans liquidation : l'associé unique est-il une société ?
Valeurs : true, false

Réponses

  • 200Annonces à publier, ou question à poser.
  • 304Non modifié : la réponse correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'situations=seat_transfer,officer_change' \
  --data-urlencode 'legal_form=sas' \
  --data-urlencode 'department=75' \
  --data-urlencode 'new_department=92' \
  https://api.legalone.fr/v1/annonces/quelle-annonce
Réponse 200
{
  "data": {
    "noticeCount": 3,
    "notices": [
      {
        "situation": "seat_transfer",
        "formality": "transfert-siege-hors-departement-depart",
        "title": "Avis de départ (ancien siège)",
        "department": "75",
        "when": "Dans le mois de la décision, avant la déclaration au guichet unique.",
        "legalBasis": [
          {
            "label": "Article R210-9 du code de commerce",
            "url": "https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006260074"
          },
          {
            "label": "Transfert du siège social (service-public F31479)",
            "url": "https://entreprendre.service-public.gouv.fr/vosdroits/F31479"
          }
        ],
        "price": {
          "formality": "transfert-siege-hors-departement-depart",
          "label": "Transfert de siège social hors département (départ)",
          "category": "Modifications",
          "pricing": "flat",
          "department": "75",
          "annex": "V",
          "currency": "EUR",
          "vatRate": 0.2,
          "schedule": {
            "version": "2026-01-01",
            "year": 2026,
            "label": "Arrêté du 19 novembre 2021 modifié (tarifs 2026 des annonces légales)",
            "url": "https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000053177549"
          },
          "amountExclTax": 109,
          "vat": 21.8,
          "amountInclTax": 130.8,
          "characterCount": null,
          "ratePerCharacter": null
        },
        "formUrl": "https://legalone.fr/annonces-legales/nouveau/transfert-siege-hors-departement-depart#departement=75",
        "canPrepare": true
      },
      {
        "situation": "seat_transfer",
        "formality": "transfert-siege-hors-departement-arrivee",
        "title": "Avis d'arrivée (nouveau siège)",
        "department": "92",
        "when": "Dans le mois de la décision, avant la déclaration au guichet unique.",
        "legalBasis": [
          {
            "label": "Article R210-11 du code de commerce",
            "url": "https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000041564084"
          }
        ],
        "price": {
          "formality": "transfert-siege-hors-departement-arrivee",
          "label": "Transfert de siège social hors département (arrivée)",
          "category": "Modifications",
          "pricing": "flat",
          "department": "92",
          "annex": "V",
          "currency": "EUR",
          "vatRate": 0.2,
          "schedule": {
            "version": "2026-01-01",
            "year": 2026,
            "label": "Arrêté du 19 novembre 2021 modifié (tarifs 2026 des annonces légales)",
            "url": "https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000053177549"
          },
          "amountExclTax": 109,
          "vat": 21.8,
          "amountInclTax": 130.8,
          "characterCount": null,
          "ratePerCharacter": null
        },
        "formUrl": "https://legalone.fr/annonces-legales/nouveau/transfert-siege-hors-departement-arrivee#departement=92",
        "canPrepare": true
      }
    ],
    "combinedOption": null,
    "question": null,
    "notes": [
      "Transfert hors du ressort du greffe : un avis dans le département de l'ancien siège et un dans celui du nouveau, comme l'exige la fiche officielle service-public F31479 et la pratique des greffes ; le code de commerce (R210-11, avec R210-9 et R210-3) n'impose expressément que l'avis du nouveau siège. Chaque avis a son forfait. La déclaration se fait ensuite au greffe du nouveau siège.",
      "Chaque avis paraît dans un journal habilité du département indiqué ; le greffe publie ensuite au BODACC après la déclaration au guichet unique (sauf vente de fonds : l'acquéreur le demande)."
    ],
    "reviewNotice": "Préparé à partir de vos réponses : relisez l'annonce sur legalone.fr et corrigez-la si besoin avant de payer. Les informations sur les règles et les démarches sont indicatives ; en cas de doute, demandez conseil à un professionnel du droit."
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "sources": [
      {
        "name": "Légifrance",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.legifrance.gouv.fr/",
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/annonces/quelle-annonce?situations=seat_transfer%2Cofficer_change&legal_form=sas&department=75&new_department=92",
    "documentation": "https://www.legalone.fr/developers"
  }
}
GET/v1/annonces/etapesClé d'API obligatoire

Démarches après une annonce légale

Pour une formalité, renvoie les étapes après la publication (déclaration au guichet unique de l'INPI, délais, publication au BODACC par le greffe) et les pièces à préparer. Texte fixe, rédigé à partir des fiches service-public.gouv.fr ; indicatif : le guichet unique affiche la liste exacte des pièces au moment du dépôt.

Paramètres

NomObligatoireDescription
formality
string · requête
obligatoireFormalité.
Valeurs : transfert-siege-dans-departement, transfert-siege-hors-departement-depart, transfert-siege-hors-departement-arrivee, changement-gerant-president-nomination, changement-denomination, modification-objet-social, modification-capital, prorogation-duree, poursuite-activite-malgre-pertes, dissolution-anticipee, cloture-liquidation, dissolution-sans-liquidation-tup …

Réponses

  • 200Étapes et pièces.
  • 304Non modifié : la réponse correspond à l'ETag envoyé dans If-None-Match.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -G \
  -H "Authorization: Bearer lo_votre_cle" \
  --data-urlencode 'formality=transfert-siege-dans-departement' \
  https://api.legalone.fr/v1/annonces/etapes
Réponse 200
{
  "data": {
    "formality": "transfert-siege-dans-departement",
    "title": "Transfert de siège dans le ressort du même greffe",
    "deadline": "Annonce puis déclaration dans le mois de la décision.",
    "steps": [
      {
        "title": "Relire et payer l'annonce sur legalone.fr",
        "text": "Vous relisez le formulaire, choisissez le journal habilité, puis payez sur legalone.fr ; l'attestation de parution est disponible dans votre espace client après la parution, dès que le journal la délivre."
      },
      {
        "title": "Déclarer la formalité au guichet unique",
        "text": "Dans le mois, déposez sur le guichet unique la déclaration de modification avec les pièces ci-dessous et l'attestation de parution."
      }
    ],
    "documents": [
      "procès-verbal de la décision de transfert (copie certifiée conforme)",
      "statuts mis à jour, datés et certifiés conformes"
    ],
    "bodacc": "Rien à faire : le greffe publie l'avis au BODACC après l'inscription de la formalité.",
    "legalBasis": [
      {
        "label": "Article R210-9 du code de commerce",
        "url": "https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000006260074"
      },
      {
        "label": "Article R123-66 du code de commerce",
        "url": "https://www.legifrance.gouv.fr/codes/article_lc/LEGIARTI000043292382"
      }
    ],
    "onlineFiling": {
      "label": "Guichet unique des formalités d'entreprises (INPI)",
      "url": "https://formalites.entreprises.gouv.fr"
    },
    "reviewNotice": "Préparé à partir de vos réponses : relisez l'annonce sur legalone.fr et corrigez-la si besoin avant de payer. Les informations sur les règles et les démarches sont indicatives ; en cas de doute, demandez conseil à un professionnel du droit."
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "sources": [
      {
        "name": "Légifrance",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.legifrance.gouv.fr/",
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/annonces/etapes?formality=transfert-siege-dans-departement",
    "documentation": "https://www.legalone.fr/developers"
  }
}
POST/v1/annonces/brouillonsClé d'API obligatoire

Préparer une annonce légale sur legalone.fr

Crée un brouillon sur legalone.fr, pour une modification à partir du SIREN de la société et des faits de la décision, ou pour une création (SAS, SASU, SARL, EURL, SCI…) à partir des statuts, sans SIREN, et renvoie le texte de l'annonce, ce qui reste à compléter et un lien (valable 7 jours) qui ouvre le formulaire pré-rempli. missing liste tout ce que le formulaire exige encore : le brouillon n'est complet que si la liste est vide.

Détails

meta.warnings signale une date d'effet antérieure à la décision, une décision datée dans le futur et, pour une modification, rappelle de vérifier dans les statuts que l'organe était compétent. Chaque appel crée un nouveau brouillon : réunissez tous les faits avant l'appel ; pour ajouter ou corriger un fait ensuite, utilisez PATCH /v1/annonces/brouillons/{id} avec le draftId et le editToken renvoyés, plutôt que de rappeler cette route. L'utilisateur relit, complète et paie sur legalone.fr ; rien n'est publié ni payé par l'API. Ne pas envoyer de date de naissance, de nationalité ni de coordonnées ; une adresse personnelle seulement pour les dirigeants d'une société en création. Quota propre : 10 brouillons par minute et 500 par jour et par compte développeur. Route active seulement quand le service est ouvert (sinon 404).

Paramètres

NomObligatoireDescription
formality
string · corps JSON
obligatoireFormalité : modification d'une société existante, ou création (sas, sasu, sarl, eurl, sci…).
Valeurs : transfert-siege-dans-departement, transfert-siege-hors-departement-depart, transfert-siege-hors-departement-arrivee, changement-gerant-president-nomination, changement-denomination, modification-objet-social, modification-capital, prorogation-duree, dissolution-anticipee, cloture-liquidation, eurl, sarl …
siren
string · corps JSON
facultatifSIREN de la société existante (9 chiffres, espaces acceptés). Obligatoire pour une modification ; absent pour une création.
15 caractères au plus
department
string · corps JSON
facultatifDépartement de publication, utilisé seulement si le siège ne permet pas de le déduire.
3 caractères au plus
decisionBody
string · corps JSON
facultatifBody that took the decision: a general meeting; the partners or shareholders deciding collectively (meeting not specified or written consultation) or unanimously (act signed by all); the sole partner; the manager or the management (several managers); the president or the managing director (SAS, SA); the board of directors, the management board (directoire) or the supervisory board (SA, SCA). other: any other body, named in decisionBodyOther.
Valeurs : ordinary_general_meeting, extraordinary_general_meeting, combined_general_meeting, shareholders_collective_decision, shareholders_unanimous_decision, sole_shareholder, manager, management, president, chief_executive, board_of_directors, management_board …
decisionBodyOther
string · corps JSON
facultatifOnly when decisionBody is other (sent alone, it implies other): the body as the notice prints it after « Par décision », in French, starting with du, de la, de l' or des, e.g. « du comité de direction ».
200 caractères au plus
decisionDate
string · corps JSON
facultatifDate of the meeting or decision (YYYY-MM-DD).
effectiveDate
string · corps JSON
facultatifDate the decision takes effect (YYYY-MM-DD).
companyDurationYears
integer · corps JSON
facultatifCompany duration in years, as in the articles of association. Required for a creation, an extension of duration and a transfer to another registry (the notice prints it), otherwise optional: send it whenever the user knows it; when required and absent, it comes back in missing.
de 1 à 99
newSeatStreet
string · corps JSON
facultatifNew registered office: number and street.
200 caractères au plus
newSeatComplement
string · corps JSON
facultatifNew registered office: building, floor (optional).
200 caractères au plus
newSeatPostalCode
string · corps JSON
facultatifNew registered office: 5-digit postcode.
format ^\d{5}$
newSeatCity
string · corps JSON
facultatifNew registered office: city.
100 caractères au plus
newSeatCourt
string · corps JSON
facultatifCommercial court (greffe) of the new registered office, e.g. Nanterre; deduced when the department has one court.
100 caractères au plus
representativeRole
string · corps JSON
facultatifRole of the legal representative named in the arrival notice.
Valeurs : manager, president
representativeCivility
string · corps JSON
facultatifrepresentativeCivility
Valeurs : mr, mrs
representativeLastName
string · corps JSON
facultatifrepresentativeLastName
100 caractères au plus
representativeFirstName
string · corps JSON
facultatifrepresentativeFirstName
100 caractères au plus
officerChange
string · corps JSON
facultatifappointment: a new officer without departure; replacement: one leaves, one arrives; departure: one leaves without replacement.
Valeurs : appointment, replacement, departure
officerRole
string · corps JSON
facultatifofficerRole
Valeurs : manager, president, chief_executive
departureCause
string · corps JSON
facultatifdepartureCause
Valeurs : resignation, dismissal, death, end_of_term
departingCivility
string · corps JSON
facultatifdepartingCivility
Valeurs : mr, mrs
departingLastName
string · corps JSON
facultatifdepartingLastName
100 caractères au plus
departingFirstName
string · corps JSON
facultatifdepartingFirstName
100 caractères au plus
incomingCivility
string · corps JSON
facultatifincomingCivility
Valeurs : mr, mrs
incomingLastName
string · corps JSON
facultatifincomingLastName
100 caractères au plus
incomingFirstName
string · corps JSON
facultatifincomingFirstName
100 caractères au plus
newName
string · corps JSON
facultatifNew company name.
200 caractères au plus
newAcronym
string · corps JSON
facultatifNew acronym (optional).
50 caractères au plus
purposeChange
string · corps JSON
facultatifpurposeChange
Valeurs : extension, replacement, removal
newPurpose
string · corps JSON
facultatifCorporate purpose as written in the decision.
2000 caractères au plus
capitalChange
string · corps JSON
facultatifcapitalChange
Valeurs : increase, decrease
newCapital
number · corps JSON
facultatifShare capital after the operation, in euros.
contributionNature
string · corps JSON
facultatifcontributionNature
Valeurs : cash, shareholder_current_account, reserves, real_estate, business, securities
newDurationYears
integer · corps JSON
facultatifNew company duration in years.
de 1 à 99
liquidatorCivility
string · corps JSON
facultatifliquidatorCivility
Valeurs : mr, mrs
liquidatorLastName
string · corps JSON
facultatifliquidatorLastName
100 caractères au plus
liquidatorFirstName
string · corps JSON
facultatifliquidatorFirstName
100 caractères au plus
liquidationSeat
string · corps JSON
facultatifWhere the liquidation is based.
Valeurs : registered_office, liquidator, other
deedType
string · corps JSON
facultatifCreation: form of the articles of association.
Valeurs : private_deed, notarial_deed
deedDate
string · corps JSON
facultatifCreation: date the articles of association were signed (YYYY-MM-DD).
notaryName
string · corps JSON
facultatifCreation by notarial deed: name of the notary.
100 caractères au plus
notaryCity
string · corps JSON
facultatifCreation by notarial deed: city where the notary practises.
100 caractères au plus
companyName
string · corps JSON
facultatifCreation: name of the company, as in the articles.
200 caractères au plus
acronym
string · corps JSON
facultatifCreation: acronym (optional).
50 caractères au plus
tradeName
string · corps JSON
facultatifCreation: trade name (optional).
200 caractères au plus
purpose
string · corps JSON
facultatifCreation: corporate purpose, as written in the articles.
2000 caractères au plus
profession
string · corps JSON
facultatifCreation of a société d'exercice libéral (seleurl, selarl, selas, selasu, selafa), optional: profession practised, as in the articles, e.g. avocat. The notice prints it when given.
200 caractères au plus
capital
number · corps JSON
facultatifCreation: share capital in euros (fixed capital).
initialCapital
number · corps JSON
facultatifCreation with a variable capital: initial capital in euros.
minimumCapital
number · corps JSON
facultatifCreation with a variable capital: minimum capital in euros.
maximumCapital
number · corps JSON
facultatifCreation with a variable capital: maximum capital in euros.
seatStreet
string · corps JSON
facultatifCreation: registered office, number and street.
200 caractères au plus
seatComplement
string · corps JSON
facultatifCreation: registered office, building or floor (optional).
200 caractères au plus
seatPostalCode
string · corps JSON
facultatifCreation: registered office, 5-digit postcode.
format ^\d{5}$
seatCity
string · corps JSON
facultatifCreation: registered office, city.
100 caractères au plus
seatCourt
string · corps JSON
facultatifCreation: commercial court (greffe) of registration, e.g. Bobigny; deduced when the department has one court.
100 caractères au plus
shareTransferClause
string · corps JSON
facultatifCreation of a share company (SAS, SA…): clause on the transfer of shares, as in the articles.
2000 caractères au plus
meetingAdmissionClause
string · corps JSON
facultatifCreation of a share company (SAS, SA…): clause on admission to meetings and voting rights, as in the articles.
2000 caractères au plus
officers
object[] · corps JSON
facultatifCréation seulement : dirigeants et commissaires aux comptes que l'avis nomme, avec le domicile d'une personne physique tel que l'avis le publie. Rôles par formalité : eurl/sarl/sc/sci/sccv/scm/scpi/scp/seleurl/selarl: manager; sasu: president, chief_executive, deputy_chief_executive, other_chief_executive, auditor, substitute_auditor; sas: president, chief_executive, deputy_chief_executive, director, other_chief_executive, auditor, substitute_auditor; snc: manager, partner, co_manager, auditor, substitute_auditor; sa: president, chief_executive, deputy_chief_executive, director, management_board_member, auditor, substitute_auditor; selas/selasu: president, chief_executive, deputy_chief_executive, auditor, substitute_auditor; selafa: president, chief_executive, deputy_chief_executive, director, auditor, substitute_auditor.
20 valeurs au plus

Réponses

  • 201Brouillon créé sur legalone.fr.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 422Refusé par legalone.fr (SIREN inconnu, valeur hors des choix du formulaire, formalité incohérente avec les greffes).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -X POST \
  -H "Authorization: Bearer lo_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{"formality":"transfert-siege-dans-departement","siren":"552032534","decisionBody":"sole_shareholder","decisionDate":"2026-10-20","newSeatStreet":"12 avenue de l'\''Opéra","newSeatPostalCode":"75001","newSeatCity":"Paris"}' \
  https://api.legalone.fr/v1/annonces/brouillons
Réponse 201
{
  "data": {
    "formality": "transfert-siege-dans-departement",
    "companyName": "Exemple SAS",
    "department": "75",
    "preview": "Exemple SAS\n\nSociété par actions simplifiée au capital de [capital]\n\nSiège : 8 RUE DE LA PAIX 75002 PARIS\n\n552032534 RCS de Paris\n\nPar décision de l'associé unique du 20-10-2026, il a été décidé de transférer le siège social à compter du 20-10-2026 au 12 avenue de l'Opéra 75001 Paris. Mention au RCS de Paris",
    "missing": [
      "Société : capital"
    ],
    "url": "https://legalone.fr/annonces-legales/brouillon#t=Zx1vQe8LkP3mN6sT9wYbC2dF5gH7jK0aR4uV8xA1BcE",
    "expiresAt": "2026-11-05T13:17:35.409Z",
    "draftId": "ckmcpdraft000000000000001",
    "editToken": "Qm9uam91ci1jZWNpLWVzdC11bi1leGVtcGxlLWRlLWp",
    "price": {
      "formality": "transfert-siege-dans-departement",
      "label": "Transfert de siège social dans le département",
      "category": "Modifications",
      "pricing": "flat",
      "department": "75",
      "annex": "V",
      "currency": "EUR",
      "vatRate": 0.2,
      "schedule": {
        "version": "2026-01-01",
        "year": 2026,
        "label": "Arrêté du 19 novembre 2021 modifié (tarifs 2026 des annonces légales)",
        "url": "https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000053177549"
      },
      "amountExclTax": 109,
      "vat": 21.8,
      "amountInclTax": 130.8,
      "characterCount": null,
      "ratePerCharacter": null
    },
    "reviewNotice": "Préparé à partir de vos réponses : relisez l'annonce sur legalone.fr et corrigez-la si besoin avant de payer. Les informations sur les règles et les démarches sont indicatives ; en cas de doute, demandez conseil à un professionnel du droit."
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "sources": [
      {
        "name": "Légifrance",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.legifrance.gouv.fr/",
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/annonces/brouillons",
    "documentation": "https://www.legalone.fr/developers"
  }
}
PATCH/v1/annonces/brouillons/{id}Clé d'API obligatoire

Modifier un brouillon d'annonce préparé par l'API

Modifie un brouillon créé par POST /v1/annonces/brouillons, au lieu d'en créer un autre : ajouter un fait oublié (la durée de la société), corriger une date ou un nom. Envoyez le editToken reçu à la création, la formalité et seulement les champs à changer ; les autres restent.

Détails

Seul le client qui a reçu le jeton peut modifier le brouillon, et seulement tant que l'utilisateur ne l'a pas enregistré sur legalone.fr (409 ensuite) ni laissé expirer (410). Le brouillon reste un brouillon anonyme, sans paiement ; le lien donné à la création l'ouvre toujours. Même quota que la création.

Paramètres

NomObligatoireDescription
id
string · chemin
obligatoiredraftId renvoyé à la création.
format ^[a-z0-9]{20,40}$
editToken
string · corps JSON
obligatoireJeton de modification renvoyé à la création du brouillon (editToken).
format ^[A-Za-z0-9_-]{43}$
formality
string · corps JSON
obligatoireFormalité du brouillon, comme à la création (elle ne change pas).
Valeurs : transfert-siege-dans-departement, transfert-siege-hors-departement-depart, transfert-siege-hors-departement-arrivee, changement-gerant-president-nomination, changement-denomination, modification-objet-social, modification-capital, prorogation-duree, dissolution-anticipee, cloture-liquidation, eurl, sarl …
department
string · corps JSON
facultatifDépartement de publication, utilisé seulement si le siège ne permet pas de le déduire.
3 caractères au plus
decisionBody
string · corps JSON
facultatifBody that took the decision: a general meeting; the partners or shareholders deciding collectively (meeting not specified or written consultation) or unanimously (act signed by all); the sole partner; the manager or the management (several managers); the president or the managing director (SAS, SA); the board of directors, the management board (directoire) or the supervisory board (SA, SCA). other: any other body, named in decisionBodyOther.
Valeurs : ordinary_general_meeting, extraordinary_general_meeting, combined_general_meeting, shareholders_collective_decision, shareholders_unanimous_decision, sole_shareholder, manager, management, president, chief_executive, board_of_directors, management_board …
decisionBodyOther
string · corps JSON
facultatifOnly when decisionBody is other (sent alone, it implies other): the body as the notice prints it after « Par décision », in French, starting with du, de la, de l' or des, e.g. « du comité de direction ».
200 caractères au plus
decisionDate
string · corps JSON
facultatifDate of the meeting or decision (YYYY-MM-DD).
effectiveDate
string · corps JSON
facultatifDate the decision takes effect (YYYY-MM-DD).
companyDurationYears
integer · corps JSON
facultatifCompany duration in years, as in the articles of association. Required for a creation, an extension of duration and a transfer to another registry (the notice prints it), otherwise optional: send it whenever the user knows it; when required and absent, it comes back in missing.
de 1 à 99
newSeatStreet
string · corps JSON
facultatifNew registered office: number and street.
200 caractères au plus
newSeatComplement
string · corps JSON
facultatifNew registered office: building, floor (optional).
200 caractères au plus
newSeatPostalCode
string · corps JSON
facultatifNew registered office: 5-digit postcode.
format ^\d{5}$
newSeatCity
string · corps JSON
facultatifNew registered office: city.
100 caractères au plus
newSeatCourt
string · corps JSON
facultatifCommercial court (greffe) of the new registered office, e.g. Nanterre; deduced when the department has one court.
100 caractères au plus
representativeRole
string · corps JSON
facultatifRole of the legal representative named in the arrival notice.
Valeurs : manager, president
representativeCivility
string · corps JSON
facultatifrepresentativeCivility
Valeurs : mr, mrs
representativeLastName
string · corps JSON
facultatifrepresentativeLastName
100 caractères au plus
representativeFirstName
string · corps JSON
facultatifrepresentativeFirstName
100 caractères au plus
officerChange
string · corps JSON
facultatifappointment: a new officer without departure; replacement: one leaves, one arrives; departure: one leaves without replacement.
Valeurs : appointment, replacement, departure
officerRole
string · corps JSON
facultatifofficerRole
Valeurs : manager, president, chief_executive
departureCause
string · corps JSON
facultatifdepartureCause
Valeurs : resignation, dismissal, death, end_of_term
departingCivility
string · corps JSON
facultatifdepartingCivility
Valeurs : mr, mrs
departingLastName
string · corps JSON
facultatifdepartingLastName
100 caractères au plus
departingFirstName
string · corps JSON
facultatifdepartingFirstName
100 caractères au plus
incomingCivility
string · corps JSON
facultatifincomingCivility
Valeurs : mr, mrs
incomingLastName
string · corps JSON
facultatifincomingLastName
100 caractères au plus
incomingFirstName
string · corps JSON
facultatifincomingFirstName
100 caractères au plus
newName
string · corps JSON
facultatifNew company name.
200 caractères au plus
newAcronym
string · corps JSON
facultatifNew acronym (optional).
50 caractères au plus
purposeChange
string · corps JSON
facultatifpurposeChange
Valeurs : extension, replacement, removal
newPurpose
string · corps JSON
facultatifCorporate purpose as written in the decision.
2000 caractères au plus
capitalChange
string · corps JSON
facultatifcapitalChange
Valeurs : increase, decrease
newCapital
number · corps JSON
facultatifShare capital after the operation, in euros.
contributionNature
string · corps JSON
facultatifcontributionNature
Valeurs : cash, shareholder_current_account, reserves, real_estate, business, securities
newDurationYears
integer · corps JSON
facultatifNew company duration in years.
de 1 à 99
liquidatorCivility
string · corps JSON
facultatifliquidatorCivility
Valeurs : mr, mrs
liquidatorLastName
string · corps JSON
facultatifliquidatorLastName
100 caractères au plus
liquidatorFirstName
string · corps JSON
facultatifliquidatorFirstName
100 caractères au plus
liquidationSeat
string · corps JSON
facultatifWhere the liquidation is based.
Valeurs : registered_office, liquidator, other
deedType
string · corps JSON
facultatifCreation: form of the articles of association.
Valeurs : private_deed, notarial_deed
deedDate
string · corps JSON
facultatifCreation: date the articles of association were signed (YYYY-MM-DD).
notaryName
string · corps JSON
facultatifCreation by notarial deed: name of the notary.
100 caractères au plus
notaryCity
string · corps JSON
facultatifCreation by notarial deed: city where the notary practises.
100 caractères au plus
companyName
string · corps JSON
facultatifCreation: name of the company, as in the articles.
200 caractères au plus
acronym
string · corps JSON
facultatifCreation: acronym (optional).
50 caractères au plus
tradeName
string · corps JSON
facultatifCreation: trade name (optional).
200 caractères au plus
purpose
string · corps JSON
facultatifCreation: corporate purpose, as written in the articles.
2000 caractères au plus
profession
string · corps JSON
facultatifCreation of a société d'exercice libéral (seleurl, selarl, selas, selasu, selafa), optional: profession practised, as in the articles, e.g. avocat. The notice prints it when given.
200 caractères au plus
capital
number · corps JSON
facultatifCreation: share capital in euros (fixed capital).
initialCapital
number · corps JSON
facultatifCreation with a variable capital: initial capital in euros.
minimumCapital
number · corps JSON
facultatifCreation with a variable capital: minimum capital in euros.
maximumCapital
number · corps JSON
facultatifCreation with a variable capital: maximum capital in euros.
seatStreet
string · corps JSON
facultatifCreation: registered office, number and street.
200 caractères au plus
seatComplement
string · corps JSON
facultatifCreation: registered office, building or floor (optional).
200 caractères au plus
seatPostalCode
string · corps JSON
facultatifCreation: registered office, 5-digit postcode.
format ^\d{5}$
seatCity
string · corps JSON
facultatifCreation: registered office, city.
100 caractères au plus
seatCourt
string · corps JSON
facultatifCreation: commercial court (greffe) of registration, e.g. Bobigny; deduced when the department has one court.
100 caractères au plus
shareTransferClause
string · corps JSON
facultatifCreation of a share company (SAS, SA…): clause on the transfer of shares, as in the articles.
2000 caractères au plus
meetingAdmissionClause
string · corps JSON
facultatifCreation of a share company (SAS, SA…): clause on admission to meetings and voting rights, as in the articles.
2000 caractères au plus
officers
object[] · corps JSON
facultatifCréation seulement : les dirigeants à modifier, chacun avec son rôle, son type et son numéro. Rôles par formalité : eurl/sarl/sc/sci/sccv/scm/scpi/scp/seleurl/selarl: manager; sasu: president, chief_executive, deputy_chief_executive, other_chief_executive, auditor, substitute_auditor; sas: president, chief_executive, deputy_chief_executive, director, other_chief_executive, auditor, substitute_auditor; snc: manager, partner, co_manager, auditor, substitute_auditor; sa: president, chief_executive, deputy_chief_executive, director, management_board_member, auditor, substitute_auditor; selas/selasu: president, chief_executive, deputy_chief_executive, auditor, substitute_auditor; selafa: president, chief_executive, deputy_chief_executive, director, auditor, substitute_auditor.
20 valeurs au plus
siren
string · corps JSON
facultatifSIREN de la société existante, comme à la création ; absent pour une création.
15 caractères au plus

Réponses

  • 200Brouillon modifié.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 401Clé d'API absente, inconnue ou révoquée.
  • 404Ressource introuvable ou non diffusable (diffusion restreinte, opposition).
  • 409Le brouillon a déjà été enregistré sur legalone.fr : la suite se fait sur le formulaire.
  • 410Le brouillon a expiré.
  • 422Refusé par legalone.fr (valeur hors des choix du formulaire…).
  • 429Quota dépassé.
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -X PATCH \
  -H "Authorization: Bearer lo_votre_cle" \
  -H "Content-Type: application/json" \
  -d '{"editToken":"Qm9uam91ci1jZWNpLWVzdC11bi1leGVtcGxlLWRlLWp","formality":"transfert-siege-dans-departement","siren":"552032534","companyDurationYears":99}' \
  https://api.legalone.fr/v1/annonces/brouillons/ckmcpdraft000000000000001
Réponse 200
{
  "data": {
    "formality": "transfert-siege-dans-departement",
    "companyName": "Exemple SAS",
    "department": "75",
    "preview": "Exemple SAS\n\nSociété par actions simplifiée au capital de [capital]\n\nSiège : 8 RUE DE LA PAIX 75002 PARIS\n\n552032534 RCS de Paris\n\nPar décision de l'associé unique du 20-10-2026, il a été décidé de transférer le siège social à compter du 20-10-2026 au 12 avenue de l'Opéra 75001 Paris. Mention au RCS de Paris",
    "missing": [],
    "expiresAt": "2026-11-05T13:17:35.409Z",
    "draftId": "ckmcpdraft000000000000001",
    "price": {
      "formality": "transfert-siege-dans-departement",
      "label": "Transfert de siège social dans le département",
      "category": "Modifications",
      "pricing": "flat",
      "department": "75",
      "annex": "V",
      "currency": "EUR",
      "vatRate": 0.2,
      "schedule": {
        "version": "2026-01-01",
        "year": 2026,
        "label": "Arrêté du 19 novembre 2021 modifié (tarifs 2026 des annonces légales)",
        "url": "https://www.legifrance.gouv.fr/jorf/id/JORFTEXT000053177549"
      },
      "amountExclTax": 109,
      "vat": 21.8,
      "amountInclTax": 130.8,
      "characterCount": null,
      "ratePerCharacter": null
    },
    "reviewNotice": "Préparé à partir de vos réponses : relisez l'annonce sur legalone.fr et corrigez-la si besoin avant de payer. Les informations sur les règles et les démarches sont indicatives ; en cas de doute, demandez conseil à un professionnel du droit."
  },
  "meta": {
    "requestId": "3f6c1b8e-6f0a-4c77-9a45-2d1f0f6f8a11",
    "updatedAt": "2026-01-01T00:00:00.000Z",
    "sources": [
      {
        "name": "Légifrance",
        "licence": "Licence Ouverte 2.0",
        "url": "https://www.legifrance.gouv.fr/",
        "updatedAt": "2026-01-01T00:00:00.000Z"
      }
    ],
    "warnings": [],
    "attribution": "Tarifs et règles : textes officiels (Légifrance, service-public.gouv.fr) — via LegalOne",
    "privacy": "https://www.legalone.fr/developers/conditions#confidentialite"
  },
  "links": {
    "self": "https://api.legalone.fr/v1/annonces/brouillons",
    "documentation": "https://www.legalone.fr/developers"
  }
}

Compte développeur

Inscription d'un compte développeur et révocation d'une clé. Les clés se créent dans l'espace développeur (HTML), hors de ce contrat.

POST/v1/compteSans clé

Inscription d'un compte développeur gratuit

Demande la création d'un compte développeur, qui donne accès aux clés d'API. L'API répond 202 avec le même message, que l'adresse soit connue ou non : si elle peut recevoir un lien, un e-mail valable 30 minutes lui est envoyé.

Détails

Si l'e-mail n'a pas pu partir, elle répond 503 (« L'e-mail n'a pas pu être envoyé, réessayez plus tard. »). Un compte par boîte e-mail : une autre forme d'une adresse déjà inscrite (avec « +… », ou avec des points pour Gmail) ne crée pas de second compte. Le lien ouvre l'espace développeur (https://api.legalone.fr/compte, pages HTML qui ne font pas partie de ce contrat), où l'on crée ses clés, suit sa consommation et demande un quota supérieur. Utilisez-la depuis un formulaire d'inscription ; elle n'exige pas de clé. Le compte est soumis aux conditions d'utilisation : acceptTerms doit valoir true. Au plus 5 demandes par heure et 10 inscriptions par jour (UTC) par adresse IP. Ne sert pas à créer une clé directement.

Paramètres

NomObligatoireDescription
email
string · corps JSON
obligatoireAdresse e-mail du compte, à laquelle le lien est envoyé.
contactName
string · corps JSON
obligatoireNom de la personne de contact.
120 caractères au plus
companyName
string · corps JSON
obligatoireNom de la société ou de l'organisation.
200 caractères au plus
companySiren
string · corps JSON
facultatifSIREN de la société (9 chiffres ; les espaces et points sont ignorés). Facultatif.
format ^\d{9}$
usageCategory
string · corps JSON
obligatoireUsage prévu, parmi : kyc, fraud, compliance, suppliers, crm, accounting, legal, research, other. Les libellés figurent dans le formulaire d'inscription.
Valeurs : kyc, fraud, compliance, suppliers, crm, accounting, legal, research, other
usageDescription
string · corps JSON
obligatoireDescription de l'usage prévu.
500 caractères au plus
acceptTerms
boolean · corps JSON
obligatoireDoit valoir true : acceptation des conditions d'utilisation (https://www.legalone.fr/developers/conditions).

Réponses

  • 202Demande reçue.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 429Trop de demandes depuis cette adresse IP (5 par heure).
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
  • 503Service momentanément indisponible.
Requête curl
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"email":"[email protected]","contactName":"Camille Exemple","companyName":"Exemple SAS","companySiren":"552032534","usageCategory":"crm","usageDescription":"Pré-remplir la fiche société lors de l'\''inscription de nos clients professionnels.","acceptTerms":true}' \
  https://api.legalone.fr/v1/compte
Réponse 202
{
  "data": {
    "status": "email_sent",
    "detail": "Si l'adresse peut recevoir un lien, il vient d'y être envoyé ; il est valable 30 minutes. Pensez aux courriers indésirables."
  }
}
DELETE/v1/keys/currentClé d'API obligatoire

Révocation de la clé utilisée pour la requête

Révoque immédiatement la clé envoyée avec la requête, sans avoir à se connecter à l'espace développeur : à utiliser si une clé a fuité. La révocation est effective en moins d'une minute.

Détails

Les clés se créent et se gèrent dans l'espace développeur (https://api.legalone.fr/compte). Ne sert pas à lister ni à créer des clés.

Paramètres

Aucun paramètre.

Réponses

  • 204Clé révoquée.
  • 401Clé d'API absente, inconnue ou révoquée.
  • 429Quota dépassé.
Requête curl
curl -X DELETE \
  -H "Authorization: Bearer lo_votre_cle" \
  https://api.legalone.fr/v1/keys/current

Opposition

Demande d'opposition à la diffusion d'une donnée.

POST/v1/oppositionsSans clé

Demande d'opposition à la diffusion d'une donnée

Enregistre une demande d'opposition (droit d'opposition RGPD, article 21) à la diffusion d'une entreprise, d'un établissement, d'un dirigeant ou d'un avis BODACC. Un accusé de réception est envoyé par e-mail ; une personne examine chaque demande sous 5 jours ouvrés et rien n'est masqué automatiquement.

Détails

Si elle est acceptée, la donnée disparaît de l'API et du serveur MCP en moins d'une heure. Utilisez-la pour le compte d'une personne ou d'une société concernée ; elle n'exige pas de clé. Au plus 5 demandes par heure et par adresse IP. Ne sert pas à signaler une erreur de la source (corrigez-la auprès de l'INSEE, de l'INPI ou de la DILA).

Paramètres

NomObligatoireDescription
targetKind
string · corps JSON
obligatoireNature de la donnée visée : une entreprise, un établissement, un dirigeant ou un avis BODACC.
Valeurs : COMPANY, ESTABLISHMENT, OFFICER, BODACC_NOTICE
targetId
string · corps JSON
obligatoireIdentifiant de la donnée : SIREN (9 chiffres), SIRET (14 chiffres), identifiant du dirigeant (32 caractères hexadécimaux, officers[].id) ou identifiant de l'avis BODACC.
siren
string · corps JSON
facultatifSIREN de la société. Obligatoire pour un dirigeant.
format ^\d{9}$
email
string · corps JSON
obligatoireAdresse e-mail à laquelle répondre.
reason
string · corps JSON
facultatifMotif de l'opposition.
1000 caractères au plus
acceptPrivacy
boolean · corps JSON
obligatoireDoit valoir true : traitement de l'adresse e-mail pour répondre (https://www.legalone.fr/developers/conditions#confidentialite).

Réponses

  • 202Demande enregistrée.
  • 400Paramètre invalide (SIREN, SIRET, identifiant d'avis, q, page, per_page, limit, postcode, citycode, type, lat ou lon hors format ou hors bornes).
  • 429Trop de demandes depuis cette adresse IP (5 par heure).
  • 500Erreur interne, y compris une réponse bloquée par le contrôle de confidentialité (type response-blocked).
Requête curl
curl -X POST \
  -H "Content-Type: application/json" \
  -d '{"targetKind":"COMPANY","targetId":"552032534","email":"[email protected]","reason":"Motif tenant à ma situation particulière.","acceptPrivacy":true}' \
  https://api.legalone.fr/v1/oppositions
Réponse 202
{
  "data": {
    "status": "received",
    "reference": "3F6C1B8E",
    "acknowledged": true
  }
}

Service

Description de l'API et état du service.

GET/v1/openapi.jsonSans clé

Description OpenAPI de l'API

Renvoie ce document OpenAPI 3.1. Utilisez-le pour générer un client ou décrire les outils d'un assistant. Cette route ne consomme pas de quota et n'exige pas de clé.

Paramètres

Aucun paramètre.

Réponses

  • 200Document OpenAPI 3.1.
Requête curl
curl \
  https://api.legalone.fr/v1/openapi.json
Réponse 200 · générée depuis le schéma
{}
GET/v1/healthSans clé

État du service et fraîcheur des données

Renvoie l'état du service (ok, degraded ou starting), sa version et la fraîcheur des données copiées depuis les sources. Utilisez-la pour surveiller l'API ou savoir si les données ont du retard.

Détails

Ne sert pas à interroger des entreprises. Cette route ne consomme pas de quota et n'exige pas de clé.

Paramètres

Aucun paramètre.

Réponses

  • 200État du service.
  • 503Service momentanément indisponible.
Requête curl
curl \
  https://api.legalone.fr/v1/health
Réponse 200
{
  "data": {
    "status": "ok",
    "version": "0.1.0",
    "freshness": {
      "catalogUpdatedAt": "2026-10-29T13:00:24.699Z",
      "mainUpdatedAt": "2026-10-29T12:43:32.035Z",
      "catalogSnapshotDate": "2026-09-01",
      "lagSeconds": 1293,
      "replicaReady": true
    }
  }
}