Documentation API Registeo
Bienvenue dans la documentation de l'API Registeo. Cette API vous permet d'intégrer le livre de police numérique Registeo directement dans vos outils métier : logiciel de caisse, ERP, application interne, etc.
Accès API
L'accès à l'API est disponible sur demande. Contactez-nous pour activer le mode API sur votre établissement.
Multi-établissement — Une clé API est rattachée à un seul établissement. Si vous gérez plusieurs établissements (multi-SIRET) sur le même compte Registeo, chaque établissement a sa propre clé. Vous basculez entre établissements via le sélecteur dans le header de l'app.
Mode contrôle extérieur
Lorsque l'API est activée pour votre établissement, son registre passe en mode contrôle extérieur :
- Les données du registre (objets, statuts, mouvements) sont mises à jour uniquement via l'API
- L'interface Registeo reste disponible en consultation et pour générer les exports PDF
- La gestion des vendeurs est intégrée aux objets : les informations vendeur sont fournies directement dans chaque objet, pas via un répertoire séparé
- La conformité légale est assurée de la même manière : audit log crypto-chaîné, horodatage, intégrité
Ce mode garantit que votre logiciel métier est la source unique des données du registre, sans risque de double saisie.
Base URL
https://api.registeo.fr/registeo/api
Authentification
Toutes les requêtes doivent inclure deux headers :
X-API-Key: rsk_votre_clé_api
X-Siret: 12345678901234
La clé est générée par l'équipe Registeo lors de l'activation de votre accès API. Une clé donne accès au registre d'un seul établissement : si vous en gérez plusieurs, vous disposez d'une clé par établissement, sans passerelle possible entre eux.
Pourquoi déclarer le SIRET
La clé suffirait techniquement à identifier l'établissement. Le X-Siret est un garde-fou contre l'erreur de configuration : il vous fait déclarer l'établissement que vous croyez viser, et l'API refuse si ce n'est pas celui de la clé.
Sans lui, deux clés interverties dans votre configuration enverraient des écritures dans le registre d'un autre professionnel, avec une réponse 201 et aucun signal d'alerte. Les entrées du livre de police étant scellées cryptographiquement et horodatées, elles ne peuvent pas être déplacées d'un registre à l'autre après coup : les deux registres deviendraient faux durablement. Le contrôle transforme cette erreur silencieuse en refus dès le premier appel.
| Situation | Réponse |
|---|---|
| Header absent | 400 MISSING_SIRET |
| SIRET différent de celui de la clé | 403 ETABLISSEMENT_MISMATCH |
Les espaces, points et tirets sont ignorés dans la comparaison. En cas de changement de SIRET de votre établissement (déménagement notamment), pensez à mettre à jour la valeur dans votre intégration : elle est comparée au SIRET enregistré sur votre fiche Registeo.
Exemple de requête
# Lister les objets du registre
curl https://api.registeo.fr/registeo/api/objets \
-H "X-API-Key: rsk_votre_clé_api" \
-H "X-Siret: 12345678901234"
En écriture, un troisième header est requis — X-Agent, le nom de la personne physique effectuant l'opération. Voir Objets.
Sections de la documentation
- Objets — Enregistrement et gestion des objets du livre de police
- Ventilation — Démontage d'une entrée en entrées filles (module optionnel)
- Export PDF — Génération et envoi du registre en PDF (via l'interface uniquement)
- Audit — Journal d'audit et traçabilité
- Modèles de données — Référence des types et schémas
Hébergement & conformité
- Données hébergées en France
- Conforme aux exigences applicables au livre de police
- Registre traçable avec journal d'audit complet
- Chaque action via l'API est auditée et traçable
Codes d'erreur
| Code | Description |
|---|---|
400 | Requête invalide (champs manquants ou incorrects) |
401 | Clé API manquante ou invalide |
402 | Limite de l'offre gratuite atteinte |
403 | Accès interdit |
404 | Ressource non trouvée |
500 | Erreur serveur |
Les réponses d'erreur portent un champ code identifiant la cause précise. Traitez ce code plutôt que le message, qui peut être reformulé.
code | Statut | Signification |
|---|---|---|
MISSING_AGENT | 400 | Header X-Agent absent — nommez la personne physique ayant effectué l'opération |
AGENT_INTROUVABLE | 400 | X-Agent ne correspond à aucun utilisateur de l'établissement (les noms acceptés sont listés dans la réponse) |
MISSING_SIRET | 400 | Header X-Siret absent — déclarez l'établissement visé |
SIRET_ETABLISSEMENT_ABSENT | 400 | Aucun SIRET n'est renseigné sur l'établissement — complétez-le depuis « Mon compte » |
ETABLISSEMENT_MISMATCH | 403 | Le X-Siret transmis n'est pas celui de la clé API utilisée |
CHAMPS_ACTIVITE_INVALIDES | 400 | Une clé de champsActivite n'appartient pas à l'activité ni aux régimes de l'établissement |
REGIME_NON_ACTIF | 400 | Un régime demandé n'est pas actif sur l'établissement (les régimes actifs sont listés dans la réponse) |
TYPE_OPERATION_INVALIDE | 400 | typeOperation inconnu (achat, dépôt, reprise, échange) |
OPERATION_NON_AUTORISEE | 400 | typeOperation valide mais hors du périmètre de l'activité (les opérations admises sont listées dans la réponse) |
PAIEMENT_ESPECES_INTERDIT | 400 | Règlement en espèces interdit par le régime de l'entrée (métaux ferreux et non ferreux, L112-6 CMF) |
PAIEMENT_ESPECES_PLAFONNE | 400 | Règlement en espèces au-delà du plafond légal face à un particulier (L112-6 CMF) |
DATE_ACHAT_FUTURE | 400 | La date d'achat est postérieure à aujourd'hui |
DATE_MOUVEMENT_ANTERIEURE | 400 | La date du mouvement précède la date d'entrée de l'objet |
DATE_MOUVEMENT_FUTURE | 400 | La date du mouvement est postérieure à aujourd'hui |
DATE_MOUVEMENT_INVALIDE | 400 | Date de mouvement illisible |
STATUT_INCOMPATIBLE_OPERATION | 400 | Statut réservé à d'autres types d'opération (ex. restitué sur un achat) |
FICHIER_INTROUVABLE | 400 | Une clé de pièce jointe ne correspond à aucun fichier de l'établissement |
STATUT_INVALIDE | 400 | Statut inconnu pour l'activité de l'établissement (les statuts valides sont listés dans la réponse) |
STATUT_NON_MOUVEMENT | 400 | Statut valide mais qui ne correspond pas à un mouvement de stock (ex. en_stock) |
QUANTITE_BELOW_ENGAGED | 400 | Quantité inférieure à celle déjà engagée dans des mouvements |
SUBSCRIPTION_INACTIVE | 402 | Abonnement inactif |
FREE_LIMIT_REACHED | 402 | Limite de l'offre gratuite atteinte |
EXTERNAL_MODE | 403 | Écriture tentée depuis l'interface alors que l'établissement est en mode contrôle extérieur |
PROFIL_REQUIRED | 412 | Aucun établissement actif sur le compte |
STOCK_DISABLED | 412 | Module de gestion de stock non activé |
Les modules optionnels portent des codes qui leur sont propres, documentés sur leur page : voir Ventilation.