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).
/v1/entreprises/{siren}Clé d'API obligatoireFiche 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
| Nom | Obligatoire | Description |
|---|---|---|
sirenstring · chemin | obligatoire | Numé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,latoulonhors 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.
curl \
-H "Authorization: Bearer lo_votre_cle" \
https://api.legalone.fr/v1/entreprises/552032534{
"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"
}
}/v1/entreprisesClé d'API obligatoireRecherche 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
| Nom | Obligatoire | Description |
|---|---|---|
qstring · requête | obligatoire | Nom de société, SIREN ou SIRET. 200 caractères au plus |
pageinteger · requête | facultatif | Numéro de page, de 1 à 5. de 1 à 5 · par défaut 1 |
per_pageinteger · requête | facultatif | Ré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,latoulonhors 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.
curl -G \
-H "Authorization: Bearer lo_votre_cle" \
--data-urlencode 'q=exemple' \
https://api.legalone.fr/v1/entreprises{
"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).
/v1/etablissements/{siret}Clé d'API obligatoireFiche 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
| Nom | Obligatoire | Description |
|---|---|---|
siretstring · chemin | obligatoire | Numé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,latoulonhors 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.
curl \
-H "Authorization: Bearer lo_votre_cle" \
https://api.legalone.fr/v1/etablissements/55203253400646{
"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).
/v1/entreprises/{siren}/bodaccClé d'API obligatoireAvis 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
| Nom | Obligatoire | Description |
|---|---|---|
sirenstring · chemin | obligatoire | Numéro SIREN à 9 chiffres. Les espaces et points saisis (ex. 552 032 534) sont ignorés. format ^\d{9}$ |
limitinteger · requête | facultatif | Nombre 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,latoulonhors 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.
curl \
-H "Authorization: Bearer lo_votre_cle" \
https://api.legalone.fr/v1/entreprises/552032534/bodacc{
"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"
}
}/v1/bodacc/{id}Clé d'API obligatoireContenu 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
| Nom | Obligatoire | Description |
|---|---|---|
idstring · chemin | obligatoire | Identifiant 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,latoulonhors 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.
curl \
-H "Authorization: Bearer lo_votre_cle" \
https://api.legalone.fr/v1/bodacc/B202601950001{
"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).
/v1/entreprises/{siren}/documentsClé d'API obligatoireDocuments 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
| Nom | Obligatoire | Description |
|---|---|---|
sirenstring · chemin | obligatoire | Numé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,latoulonhors 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.
curl \
-H "Authorization: Bearer lo_votre_cle" \
https://api.legalone.fr/v1/entreprises/552032534/documents{
"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).
/v1/adressesClé d'API obligatoireRecherche 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
| Nom | Obligatoire | Description |
|---|---|---|
qstring · requête | obligatoire | Adresse ou début d'adresse. 200 caractères au plus |
limitinteger · requête | facultatif | Nombre maximal de résultats, de 1 à 10. de 1 à 10 · par défaut 5 |
postcodestring · requête | facultatif | Code postal à 5 chiffres : ne garde que les adresses de ce code postal. format ^\d{5}$ |
citycodestring · requête | facultatif | Code 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})$ |
typestring · requête | facultatif | Ne garder que ce type de résultat : numéro dans une voie, voie, lieu-dit ou commune. Valeurs : housenumber, street, locality, municipality |
autocompletestring · requête | facultatif | 0 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, 1par 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,latoulonhors 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).
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{
"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"
}
}/v1/adresses/normaliserClé d'API obligatoireNormalisation 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
| Nom | Obligatoire | Description |
|---|---|---|
qstring · requête | facultatif | Adresse complète sur une ligne, de 3 à 200 caractères. Obligatoire si line, postcode et city sont absents.200 caractères au plus |
linestring · requête | facultatif | Numéro, voie et complément d'adresse, à la place de q.200 caractères au plus |
postcodestring · requête | facultatif | Code postal à 5 chiffres. Avec line, il s'ajoute à l'adresse cherchée ; il limite aussi les résultats à ce code postal.format ^\d{5}$ |
citystring · requête | facultatif | Commune, avec line.200 caractères au plus |
citycodestring · requête | facultatif | Code 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,latoulonhors 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).
curl -G \
-H "Authorization: Bearer lo_votre_cle" \
--data-urlencode 'q=8 bd du port 80000 amiens' \
https://api.legalone.fr/v1/adresses/normaliser{
"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"
}
}/v1/adresses/inverseClé d'API obligatoireAdresses 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
| Nom | Obligatoire | Description |
|---|---|---|
latnumber · requête | obligatoire | Latitude en degrés décimaux, entre -90 et 90. de -90 à 90 |
lonnumber · requête | obligatoire | Longitude en degrés décimaux, entre -180 et 180. de -180 à 180 |
limitinteger · requête | facultatif | Nombre 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,latoulonhors 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).
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{
"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).
/v1/annonces/prixClé d'API obligatoirePrix 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
| Nom | Obligatoire | Description |
|---|---|---|
formalitystring · requête | obligatoire | Formalité (identifiant du formulaire LegalOne). Valeurs : eurl, sarl, sasu, sas, sa, snc, sc, sci, sccv, scm, scpi, scp … |
departmentstring · requête | obligatoire | Département de publication (75, 2A, 974…). 3 caractères au plus |
textstring · requête | facultatif | Texte 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,latoulonhors 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.
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{
"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"
}
}/v1/annonces/prixClé d'API obligatoirePrix 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
| Nom | Obligatoire | Description |
|---|---|---|
formalitystring · corps JSON | obligatoire | Formalité. Valeurs : eurl, sarl, sasu, sas, sa, snc, sc, sci, sccv, scm, scpi, scp … |
departmentstring · corps JSON | obligatoire | Département de publication. 3 caractères au plus |
textstring · corps JSON | facultatif | Texte 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,latoulonhors 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.
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{
"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"
}
}/v1/annonces/quelle-annonceClé d'API obligatoireAnnonces 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
| Nom | Obligatoire | Description |
|---|---|---|
situationsstring · requête | obligatoire | Événements séparés par des virgules (5 au plus). |
legal_formstring · requête | facultatif | Forme actuelle (obligatoire pour une création ou une transformation). Valeurs : sas, sasu, sarl, eurl, sa, snc, sci, sc, sccv, scm, scp, scpi … |
new_legal_formstring · requête | facultatif | Forme après une transformation. Valeurs : sas, sasu, sarl, eurl, sa, snc, sci, sc, sccv, scm, scp, scpi … |
departmentstring · requête | facultatif | Département du siège (avant un transfert). 3 caractères au plus |
new_departmentstring · requête | facultatif | Département du nouveau siège. 3 caractères au plus |
same_commercial_courtstring · requête | facultatif | Transfert dans un département à plusieurs greffes : le nouveau siège dépend-il du même greffe ? Valeurs : true, false |
sole_shareholder_is_companystring · requête | facultatif | Dissolution 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,latoulonhors 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.
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{
"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"
}
}/v1/annonces/etapesClé d'API obligatoireDé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
| Nom | Obligatoire | Description |
|---|---|---|
formalitystring · requête | obligatoire | Formalité. 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,latoulonhors 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.
curl -G \
-H "Authorization: Bearer lo_votre_cle" \
--data-urlencode 'formality=transfert-siege-dans-departement' \
https://api.legalone.fr/v1/annonces/etapes{
"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"
}
}/v1/annonces/brouillonsClé d'API obligatoirePré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
| Nom | Obligatoire | Description |
|---|---|---|
formalitystring · corps JSON | obligatoire | Formalité : 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 … |
sirenstring · corps JSON | facultatif | SIREN de la société existante (9 chiffres, espaces acceptés). Obligatoire pour une modification ; absent pour une création. 15 caractères au plus |
departmentstring · corps JSON | facultatif | Département de publication, utilisé seulement si le siège ne permet pas de le déduire. 3 caractères au plus |
decisionBodystring · corps JSON | facultatif | Body 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 … |
decisionBodyOtherstring · corps JSON | facultatif | Only 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 |
decisionDatestring · corps JSON | facultatif | Date of the meeting or decision (YYYY-MM-DD). |
effectiveDatestring · corps JSON | facultatif | Date the decision takes effect (YYYY-MM-DD). |
companyDurationYearsinteger · corps JSON | facultatif | Company 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 |
newSeatStreetstring · corps JSON | facultatif | New registered office: number and street. 200 caractères au plus |
newSeatComplementstring · corps JSON | facultatif | New registered office: building, floor (optional). 200 caractères au plus |
newSeatPostalCodestring · corps JSON | facultatif | New registered office: 5-digit postcode. format ^\d{5}$ |
newSeatCitystring · corps JSON | facultatif | New registered office: city. 100 caractères au plus |
newSeatCourtstring · corps JSON | facultatif | Commercial court (greffe) of the new registered office, e.g. Nanterre; deduced when the department has one court. 100 caractères au plus |
representativeRolestring · corps JSON | facultatif | Role of the legal representative named in the arrival notice. Valeurs : manager, president |
representativeCivilitystring · corps JSON | facultatif | representativeCivility Valeurs : mr, mrs |
representativeLastNamestring · corps JSON | facultatif | representativeLastName 100 caractères au plus |
representativeFirstNamestring · corps JSON | facultatif | representativeFirstName 100 caractères au plus |
officerChangestring · corps JSON | facultatif | appointment: a new officer without departure; replacement: one leaves, one arrives; departure: one leaves without replacement. Valeurs : appointment, replacement, departure |
officerRolestring · corps JSON | facultatif | officerRole Valeurs : manager, president, chief_executive |
departureCausestring · corps JSON | facultatif | departureCause Valeurs : resignation, dismissal, death, end_of_term |
departingCivilitystring · corps JSON | facultatif | departingCivility Valeurs : mr, mrs |
departingLastNamestring · corps JSON | facultatif | departingLastName 100 caractères au plus |
departingFirstNamestring · corps JSON | facultatif | departingFirstName 100 caractères au plus |
incomingCivilitystring · corps JSON | facultatif | incomingCivility Valeurs : mr, mrs |
incomingLastNamestring · corps JSON | facultatif | incomingLastName 100 caractères au plus |
incomingFirstNamestring · corps JSON | facultatif | incomingFirstName 100 caractères au plus |
newNamestring · corps JSON | facultatif | New company name. 200 caractères au plus |
newAcronymstring · corps JSON | facultatif | New acronym (optional). 50 caractères au plus |
purposeChangestring · corps JSON | facultatif | purposeChange Valeurs : extension, replacement, removal |
newPurposestring · corps JSON | facultatif | Corporate purpose as written in the decision. 2000 caractères au plus |
capitalChangestring · corps JSON | facultatif | capitalChange Valeurs : increase, decrease |
newCapitalnumber · corps JSON | facultatif | Share capital after the operation, in euros. |
contributionNaturestring · corps JSON | facultatif | contributionNature Valeurs : cash, shareholder_current_account, reserves, real_estate, business, securities |
newDurationYearsinteger · corps JSON | facultatif | New company duration in years. de 1 à 99 |
liquidatorCivilitystring · corps JSON | facultatif | liquidatorCivility Valeurs : mr, mrs |
liquidatorLastNamestring · corps JSON | facultatif | liquidatorLastName 100 caractères au plus |
liquidatorFirstNamestring · corps JSON | facultatif | liquidatorFirstName 100 caractères au plus |
liquidationSeatstring · corps JSON | facultatif | Where the liquidation is based. Valeurs : registered_office, liquidator, other |
deedTypestring · corps JSON | facultatif | Creation: form of the articles of association. Valeurs : private_deed, notarial_deed |
deedDatestring · corps JSON | facultatif | Creation: date the articles of association were signed (YYYY-MM-DD). |
notaryNamestring · corps JSON | facultatif | Creation by notarial deed: name of the notary. 100 caractères au plus |
notaryCitystring · corps JSON | facultatif | Creation by notarial deed: city where the notary practises. 100 caractères au plus |
companyNamestring · corps JSON | facultatif | Creation: name of the company, as in the articles. 200 caractères au plus |
acronymstring · corps JSON | facultatif | Creation: acronym (optional). 50 caractères au plus |
tradeNamestring · corps JSON | facultatif | Creation: trade name (optional). 200 caractères au plus |
purposestring · corps JSON | facultatif | Creation: corporate purpose, as written in the articles. 2000 caractères au plus |
professionstring · corps JSON | facultatif | Creation 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 |
capitalnumber · corps JSON | facultatif | Creation: share capital in euros (fixed capital). |
initialCapitalnumber · corps JSON | facultatif | Creation with a variable capital: initial capital in euros. |
minimumCapitalnumber · corps JSON | facultatif | Creation with a variable capital: minimum capital in euros. |
maximumCapitalnumber · corps JSON | facultatif | Creation with a variable capital: maximum capital in euros. |
seatStreetstring · corps JSON | facultatif | Creation: registered office, number and street. 200 caractères au plus |
seatComplementstring · corps JSON | facultatif | Creation: registered office, building or floor (optional). 200 caractères au plus |
seatPostalCodestring · corps JSON | facultatif | Creation: registered office, 5-digit postcode. format ^\d{5}$ |
seatCitystring · corps JSON | facultatif | Creation: registered office, city. 100 caractères au plus |
seatCourtstring · corps JSON | facultatif | Creation: commercial court (greffe) of registration, e.g. Bobigny; deduced when the department has one court. 100 caractères au plus |
shareTransferClausestring · corps JSON | facultatif | Creation of a share company (SAS, SA…): clause on the transfer of shares, as in the articles. 2000 caractères au plus |
meetingAdmissionClausestring · corps JSON | facultatif | Creation of a share company (SAS, SA…): clause on admission to meetings and voting rights, as in the articles. 2000 caractères au plus |
officersobject[] · corps JSON | facultatif | Cré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,latoulonhors 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.
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{
"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"
}
}/v1/annonces/brouillons/{id}Clé d'API obligatoireModifier 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
| Nom | Obligatoire | Description |
|---|---|---|
idstring · chemin | obligatoire | draftId renvoyé à la création.format ^[a-z0-9]{20,40}$ |
editTokenstring · corps JSON | obligatoire | Jeton de modification renvoyé à la création du brouillon (editToken).format ^[A-Za-z0-9_-]{43}$ |
formalitystring · corps JSON | obligatoire | Formalité 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 … |
departmentstring · corps JSON | facultatif | Département de publication, utilisé seulement si le siège ne permet pas de le déduire. 3 caractères au plus |
decisionBodystring · corps JSON | facultatif | Body 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 … |
decisionBodyOtherstring · corps JSON | facultatif | Only 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 |
decisionDatestring · corps JSON | facultatif | Date of the meeting or decision (YYYY-MM-DD). |
effectiveDatestring · corps JSON | facultatif | Date the decision takes effect (YYYY-MM-DD). |
companyDurationYearsinteger · corps JSON | facultatif | Company 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 |
newSeatStreetstring · corps JSON | facultatif | New registered office: number and street. 200 caractères au plus |
newSeatComplementstring · corps JSON | facultatif | New registered office: building, floor (optional). 200 caractères au plus |
newSeatPostalCodestring · corps JSON | facultatif | New registered office: 5-digit postcode. format ^\d{5}$ |
newSeatCitystring · corps JSON | facultatif | New registered office: city. 100 caractères au plus |
newSeatCourtstring · corps JSON | facultatif | Commercial court (greffe) of the new registered office, e.g. Nanterre; deduced when the department has one court. 100 caractères au plus |
representativeRolestring · corps JSON | facultatif | Role of the legal representative named in the arrival notice. Valeurs : manager, president |
representativeCivilitystring · corps JSON | facultatif | representativeCivility Valeurs : mr, mrs |
representativeLastNamestring · corps JSON | facultatif | representativeLastName 100 caractères au plus |
representativeFirstNamestring · corps JSON | facultatif | representativeFirstName 100 caractères au plus |
officerChangestring · corps JSON | facultatif | appointment: a new officer without departure; replacement: one leaves, one arrives; departure: one leaves without replacement. Valeurs : appointment, replacement, departure |
officerRolestring · corps JSON | facultatif | officerRole Valeurs : manager, president, chief_executive |
departureCausestring · corps JSON | facultatif | departureCause Valeurs : resignation, dismissal, death, end_of_term |
departingCivilitystring · corps JSON | facultatif | departingCivility Valeurs : mr, mrs |
departingLastNamestring · corps JSON | facultatif | departingLastName 100 caractères au plus |
departingFirstNamestring · corps JSON | facultatif | departingFirstName 100 caractères au plus |
incomingCivilitystring · corps JSON | facultatif | incomingCivility Valeurs : mr, mrs |
incomingLastNamestring · corps JSON | facultatif | incomingLastName 100 caractères au plus |
incomingFirstNamestring · corps JSON | facultatif | incomingFirstName 100 caractères au plus |
newNamestring · corps JSON | facultatif | New company name. 200 caractères au plus |
newAcronymstring · corps JSON | facultatif | New acronym (optional). 50 caractères au plus |
purposeChangestring · corps JSON | facultatif | purposeChange Valeurs : extension, replacement, removal |
newPurposestring · corps JSON | facultatif | Corporate purpose as written in the decision. 2000 caractères au plus |
capitalChangestring · corps JSON | facultatif | capitalChange Valeurs : increase, decrease |
newCapitalnumber · corps JSON | facultatif | Share capital after the operation, in euros. |
contributionNaturestring · corps JSON | facultatif | contributionNature Valeurs : cash, shareholder_current_account, reserves, real_estate, business, securities |
newDurationYearsinteger · corps JSON | facultatif | New company duration in years. de 1 à 99 |
liquidatorCivilitystring · corps JSON | facultatif | liquidatorCivility Valeurs : mr, mrs |
liquidatorLastNamestring · corps JSON | facultatif | liquidatorLastName 100 caractères au plus |
liquidatorFirstNamestring · corps JSON | facultatif | liquidatorFirstName 100 caractères au plus |
liquidationSeatstring · corps JSON | facultatif | Where the liquidation is based. Valeurs : registered_office, liquidator, other |
deedTypestring · corps JSON | facultatif | Creation: form of the articles of association. Valeurs : private_deed, notarial_deed |
deedDatestring · corps JSON | facultatif | Creation: date the articles of association were signed (YYYY-MM-DD). |
notaryNamestring · corps JSON | facultatif | Creation by notarial deed: name of the notary. 100 caractères au plus |
notaryCitystring · corps JSON | facultatif | Creation by notarial deed: city where the notary practises. 100 caractères au plus |
companyNamestring · corps JSON | facultatif | Creation: name of the company, as in the articles. 200 caractères au plus |
acronymstring · corps JSON | facultatif | Creation: acronym (optional). 50 caractères au plus |
tradeNamestring · corps JSON | facultatif | Creation: trade name (optional). 200 caractères au plus |
purposestring · corps JSON | facultatif | Creation: corporate purpose, as written in the articles. 2000 caractères au plus |
professionstring · corps JSON | facultatif | Creation 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 |
capitalnumber · corps JSON | facultatif | Creation: share capital in euros (fixed capital). |
initialCapitalnumber · corps JSON | facultatif | Creation with a variable capital: initial capital in euros. |
minimumCapitalnumber · corps JSON | facultatif | Creation with a variable capital: minimum capital in euros. |
maximumCapitalnumber · corps JSON | facultatif | Creation with a variable capital: maximum capital in euros. |
seatStreetstring · corps JSON | facultatif | Creation: registered office, number and street. 200 caractères au plus |
seatComplementstring · corps JSON | facultatif | Creation: registered office, building or floor (optional). 200 caractères au plus |
seatPostalCodestring · corps JSON | facultatif | Creation: registered office, 5-digit postcode. format ^\d{5}$ |
seatCitystring · corps JSON | facultatif | Creation: registered office, city. 100 caractères au plus |
seatCourtstring · corps JSON | facultatif | Creation: commercial court (greffe) of registration, e.g. Bobigny; deduced when the department has one court. 100 caractères au plus |
shareTransferClausestring · corps JSON | facultatif | Creation of a share company (SAS, SA…): clause on the transfer of shares, as in the articles. 2000 caractères au plus |
meetingAdmissionClausestring · corps JSON | facultatif | Creation of a share company (SAS, SA…): clause on admission to meetings and voting rights, as in the articles. 2000 caractères au plus |
officersobject[] · corps JSON | facultatif | Cré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 |
sirenstring · corps JSON | facultatif | SIREN 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,latoulonhors 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.
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{
"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.
/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
| Nom | Obligatoire | Description |
|---|---|---|
emailstring · corps JSON | obligatoire | Adresse e-mail du compte, à laquelle le lien est envoyé. |
contactNamestring · corps JSON | obligatoire | Nom de la personne de contact. 120 caractères au plus |
companyNamestring · corps JSON | obligatoire | Nom de la société ou de l'organisation. 200 caractères au plus |
companySirenstring · corps JSON | facultatif | SIREN de la société (9 chiffres ; les espaces et points sont ignorés). Facultatif. format ^\d{9}$ |
usageCategorystring · corps JSON | obligatoire | Usage 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 |
usageDescriptionstring · corps JSON | obligatoire | Description de l'usage prévu. 500 caractères au plus |
acceptTermsboolean · corps JSON | obligatoire | Doit 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,latoulonhors 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.
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{
"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."
}
}/v1/compte/connexionSans cléLien de connexion à l'espace développeur
Envoie par e-mail un lien de connexion valable 30 minutes vers l'espace développeur (https://api.legalone.fr/compte), pour retrouver ou recréer une clé. L'API répond 202 avec le même message, que l'adresse ait un compte ou non ; 503 si l'envoi d'e-mails est désactivé.
Détails
Utilisez-la quand un développeur a perdu l'accès à son espace. Elle n'exige pas de clé. Au plus 5 demandes par heure et par adresse IP. Ne sert pas à créer un compte : utilisez createDeveloperAccount.
Paramètres
| Nom | Obligatoire | Description |
|---|---|---|
emailstring · corps JSON | obligatoire | Adresse e-mail du compte. |
Réponses
- 202Demande reçue.
- 400Paramètre invalide (SIREN, SIRET, identifiant d'avis,
q,page,per_page,limit,postcode,citycode,type,latoulonhors 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.
curl -X POST \
-H "Content-Type: application/json" \
-d '{"email":"[email protected]"}' \
https://api.legalone.fr/v1/compte/connexion{
"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."
}
}/v1/keys/currentClé d'API obligatoireRé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é.
curl -X DELETE \
-H "Authorization: Bearer lo_votre_cle" \
https://api.legalone.fr/v1/keys/currentOpposition
Demande d'opposition à la diffusion d'une donnée.
/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
| Nom | Obligatoire | Description |
|---|---|---|
targetKindstring · corps JSON | obligatoire | Nature de la donnée visée : une entreprise, un établissement, un dirigeant ou un avis BODACC. Valeurs : COMPANY, ESTABLISHMENT, OFFICER, BODACC_NOTICE |
targetIdstring · corps JSON | obligatoire | Identifiant 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. |
sirenstring · corps JSON | facultatif | SIREN de la société. Obligatoire pour un dirigeant. format ^\d{9}$ |
emailstring · corps JSON | obligatoire | Adresse e-mail à laquelle répondre. |
reasonstring · corps JSON | facultatif | Motif de l'opposition. 1000 caractères au plus |
acceptPrivacyboolean · corps JSON | obligatoire | Doit 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,latoulonhors 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).
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{
"data": {
"status": "received",
"reference": "3F6C1B8E",
"acknowledged": true
}
}Service
Description de l'API et état du service.
/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.
curl \
https://api.legalone.fr/v1/openapi.json{}/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.
curl \
https://api.legalone.fr/v1/health{
"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
}
}
}