Aller au contenu principal

Poser une question juridique

POST /public/legal/ask

Posez une question en français sur la fiscalité, la comptabilité SYSCOHADA, le droit du travail ou la CNSS au Bénin. La réponse est rédigée à partir du corpus juridique indexé et cite les articles sur lesquels elle s'appuie. Si les textes indexés ne répondent pas, la réponse le dit.

Authentification : aucune. Portée : Bénin (BJ) uniquement.

Requête​

curl -X POST "https://api.paienova.com/ai-platform-service/api/v1/public/legal/ask" \
-H "Content-Type: application/json" \
-d '{
"question": "Quel est le taux de TVA au Bénin et quel article du Code général des impôts le fixe ?",
"country_iso": "BJ"
}'
ChampTypeObligatoireDescription
questiontexteouiLa question, en français, de 3 à 2000 caractères.
country_isotextenon (BJ)Code pays ISO à 2 lettres. Seul BJ dispose d'un corpus (voir pays).

Aucun autre champ n'est accepté : un champ inconnu est rejeté avec un code 422 (voir erreurs de format). L'API ne reçoit donc jamais d'identité ni de donnée d'entreprise.

Réponse​

Une réponse fondée sur le corpus​

Réponse réelle à la requête ci-dessus (HTTP 200, serveur de développement, 24/09/2026 ; extraits abrégés) :

{
"success": true,
"data": {
"answer": "# Taux de TVA au Bénin\n\nLe taux de la TVA au Bénin est **unique et fixé à 18%**.\n\nLa TVA béninoise est mono-taux, il n'existe pas de taux réduit.\n\n**Référence légale :** Art. 241 CGI",
"citations": [
{
"id": "CGI:Art. 241 CGI@2085ed91",
"article_code": "Art. 241 CGI",
"title": "Art. 241 CGI (Code General des Impots BJ 2026)",
"excerpt": "Art. 241) - Taux de la TVA au Benin: Taux UNIQUE = 18% (la TVA beninoise est mono-taux, pas de taux reduit). L...",
"document_type": "CGI",
"page": 1,
"source_url": null,
"effective_date": "2026-01-01",
"legal_status": "in_force",
"superseded_by": null,
"source_law_ref": null,
"source_type": "synthese_attestee"
}
],
"confidence": 0.75,
"model_used": "eu.anthropic.claude-sonnet-4-5-20250929-v1:0",
"not_found": false,
"narrowing_suggestions": [],
"disclaimer": "⚠️ Information juridique générale fournie à titre informatif, sur la base du corpus légal indexé (...). Elle ne constitue pas un conseil juridique, fiscal ou comptable personnalisé. (...)"
},
"error": null
}
Lire le texte officiel d'une citation

L'extrait d'une citation peut venir du texte officiel ou d'une synthèse attestée par l'équipe PaieNova (source_type). Pour lire l'article, ouvrez la citation avec /doc/{id}.

Champ de dataDescription
answerLa réponse rédigée, en français, au format Markdown.
citationsLes articles sur lesquels la réponse s'appuie. Vide si not_found vaut true.
confidenceScore de confiance du grounding, entre 0 et 1.
model_usedLe modèle qui a rédigé la réponse.
not_foundtrue quand les textes indexés ne répondent pas (voir ci-dessous).
disclaimerRappel juridique, toujours présent. À afficher avec la réponse.
Champ d'une citationDescription
idIdentifiant <document_type>:<article_code>@<version>, par exemple CGI:Art. 241 CGI@2085ed91. À passer tel quel à /doc/{id}.
article_codeL'article cité.
titleTitre de l'article.
excerptL'extrait du corpus sur lequel la réponse s'appuie.
document_typeLe corpus source : CGI, CODE_TRAVAIL, CNSS (Loi 98-019), SYSCOHADA, AUDCIF, DGI_INSTRUCTION...
pagePage de la source quand elle est connue, sinon null.
source_urlLien vers la source officielle quand il existe. Souvent null aujourd'hui.
Champs de version : présents, pas encore contractuels

Les citations portent aussi des champs décrivant la version des textes (legal_status, effective_date, superseded_by, source_law_ref, source_type). Ils sont en cours de fiabilisation avec le travail sur la version en vigueur du corpus : ne construisez pas de logique qui en dépend pour l'instant. source_type distingue le texte officiel (officiel) d'une synthèse attestée par l'équipe PaieNova (synthese_attestee).

Quand les textes ne répondent pas : not_found​

Une question hors du corpus renvoie HTTP 200 avec not_found: true : c'est une réponse normale, pas une erreur. Réponse réelle à une question sur les brevets d'invention (hors corpus) :

{
"success": true,
"data": {
"answer": "Je ne trouve pas cette information dans le corpus legal indexe. Reformulez votre question ou contactez le support PaieNova.",
"citations": [],
"confidence": 0.0,
"model_used": "...",
"not_found": true,
"disclaimer": "⚠️ Information juridique générale fournie à titre informatif..."
},
"error": null
}

Traitez not_found comme un résultat à part entière : affichez-le tel quel, n'y substituez pas une réponse d'un autre modèle. Pour améliorer vos chances de réponse, formulez avec les mots de la loi (ITS, TVA, préavis, sanctions) plutôt qu'avec des montants.

Pays​

country_iso accepte tout code ISO à 2 lettres, mais seul le Bénin (BJ) dispose aujourd'hui d'un corpus indexé. Un autre code valide ne renvoie pas d'erreur : la réponse arrive avec not_found: true. Un code mal formé (pas 2 lettres) renvoie une erreur PUBLIC_LEGAL_INVALID_COUNTRY.

Erreurs​

HTTPerror.codeCause
400PUBLIC_LEGAL_QUESTION_TOO_SHORTQuestion de moins de 3 caractères.
400PUBLIC_LEGAL_QUESTION_TOO_LONGQuestion de plus de 2000 caractères.
400PUBLIC_LEGAL_INVALID_COUNTRYcountry_iso mal formé.
422(forme différente)JSON non conforme au schéma, par exemple un champ inconnu. Voir erreurs de format.
429PUBLIC_LEGAL_RATE_LIMITEDLimite d'usage atteinte. Attendez la durée de l'en-tête Retry-After.
503PUBLIC_LEGAL_PROVIDER_5XXService momentanément indisponible. Réessayez plus tard.

Exemple réel d'erreur 400 :

{
"success": false,
"data": null,
"error": {
"code": "PUBLIC_LEGAL_QUESTION_TOO_SHORT",
"message_fr": "Question trop courte (min 3 caractères).",
"details": {}
}
}

Voir aussi​