API à clé — réponses sourcées
L'API CatéGPT génère des réponses sourcées sur la foi catholique : chaque affirmation importante renvoie à une référence vérifiée. Idéale pour intégrer l'assistant dans une application, un back-office ou un bot.
URL de base
https://categpt.chat
Authentification
L'API s'authentifie par clé API (jeton Bearer).
- Créez un compte sur https://categpt.chat.
- Ouvrez la page Développeur de votre compte.
- Générez une clé API (
cgpt_live_…). Elle n'est affichée qu'une seule fois — copiez-la immédiatement. - Envoyez-la dans l'en-tête
Authorization.
Authorization: Bearer cgpt_live_votreCle
curl.Crédits & facturation
L'usage est prépayé : créditez votre compte, puis chaque réponse est
débitée. Le montant facturé correspond au coût du modèle multiplié par un
coefficient (~2×) — il est renvoyé dans usage.billed_usd de chaque réponse.
Une réponse n'est générée que si le solde est positif ; sinon l'API répond
402 avec votre solde.
Générer une réponse — POST /api/v1/answer
POST /api/v1/answer
Content-Type: application/json
Authorization: Bearer cgpt_live_…
Paramètres (corps JSON)
| Champ | Type | Requis | Description |
|---|---|---|---|
question | string | oui | La question (1 à 4000 caractères). |
mode | string | non | quick (défaut) ou academic. |
level | string | non | child, teen, catechesis, general (défaut), academic, priest. |
language | string | non | Code langue à 2 lettres (fr, en…). Détecté sinon. |
Exemple de requête
curl -X POST https://categpt.chat/api/v1/answer \
-H "Authorization: Bearer cgpt_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"question": "Que dit le Catéchisme sur l’Eucharistie ?",
"mode": "academic",
"level": "general"
}'
/api/v1/answerEssayerGénérer une réponse sourcée à une question libre.
curl -X POST "https://categpt.chat/api/v1/answer" \
-H "Authorization: Bearer cgpt_live_…" \
-H "Content-Type: application/json" \
-d '{"question":"Que dit le Catéchisme sur l’espérance ?","mode":"quick","level":"general"}'Réponse
{
"answer": "…texte avec des marqueurs [1], [2]…",
"references": [
{
"source_type": "catechism",
"title": "Catéchisme de l’Église catholique",
"citation": "CEC 1373-1377",
"url": "https://www.vatican.va/…",
"verified": true,
"language": "fr"
}
],
"usage": { "prompt_tokens": 1234, "completion_tokens": 567, "billed_usd": 0.012 },
"language": "fr"
}
| Clé | Description |
|---|---|
answer | La réponse, avec ses marqueurs numérotés [1], [2]… |
references | Les références, dans l'ordre des marqueurs : type de source, titre, citation, URL, verified (le lien a été contrôlé) et langue. |
usage | Jetons consommés et montant débité (billed_usd). |
language | Langue effective de la réponse. |
Types de sources (source_type)
bible, catechism, council, pontifical, canon_law,
social_doctrine, church_father, church_doctor, other.
Question sur la fête du jour — POST /api/v1/feast/ask
Même authentification, mêmes quotas et même facturation que
/api/v1/answer — mais la question est d'abord enrichie du contexte
liturgique du jour (fête, couleur, lectures, description — et, quand le jour
en dispose, la fête du Vetus Ordo Missae avec sa classe et le propre de sa
messe, source Divinum Officium), comme le
chat de la page « Saint du jour ».
POST /api/v1/feast/ask
Content-Type: application/json
Authorization: Bearer cgpt_live_…
| Champ | Type | Requis | Description |
|---|---|---|---|
question | string | oui | La question (1 à 4000 caractères). |
date | string | non | Jour YYYY-MM-DD (défaut : aujourd'hui, UTC). |
locale | string | non | Langue de la réponse (fr, en…). Détectée sinon. |
mode | string | non | quick (défaut) ou academic. |
level | string | non | Comme /api/v1/answer. |
curl -X POST https://categpt.chat/api/v1/feast/ask \
-H "Authorization: Bearer cgpt_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"question": "Qui fête-t-on aujourd’hui et pourquoi ?",
"locale": "fr"
}'
/api/v1/feast/askEssayerPoser une question ancrée sur la fête du jour.
curl -X POST "https://categpt.chat/api/v1/feast/ask" \
-H "Authorization: Bearer cgpt_live_…" \
-H "Content-Type: application/json" \
-d '{"question":"Qui fête-t-on aujourd’hui et pourquoi ?","mode":"quick","level":"general"}'La réponse a le même format que /api/v1/answer (answer, references,
usage, language), plus le champ date du jour liturgique utilisé.
Exemples
JavaScript (fetch)
const res = await fetch("https://categpt.chat/api/v1/answer", {
method: "POST",
headers: {
"Authorization": "Bearer cgpt_live_xxx",
"Content-Type": "application/json",
},
body: JSON.stringify({ question: "Qui était saint Augustin ?" }),
});
const data = await res.json();
console.log(data.answer, data.references);
Python (requests)
import requests
r = requests.post(
"https://categpt.chat/api/v1/answer",
headers={"Authorization": "Bearer cgpt_live_xxx"},
json={"question": "Qui était saint Augustin ?"},
)
data = r.json()
print(data["answer"])
Limites de débit
Jusqu'à 60 requêtes par minute et par clé — quota partagé entre
/api/v1/answer et /api/v1/feast/ask. Au-delà, l'API renvoie 429.
Erreurs
| Code HTTP | error.code | Signification |
|---|---|---|
| 400 | invalid_request | Requête mal formée. |
| 401 | invalid_api_key | Clé absente ou invalide. |
| 402 | insufficient_credits | Solde de crédits épuisé (la réponse porte balance). |
| 429 | rate_limited | Trop de requêtes. |
| 502 | upstream_error | Erreur du modèle en amont. |
Les erreurs sont renvoyées au format { "error": { "code": "…" } }.
Un 502 upstream_error porte en plus un booléen retryable. Il vaut true
pour une cause passagère — un débit dépassé, un délai amont — et false
lorsqu'une intervention humaine est nécessaire de notre côté : réessayer ne peut
alors pas aboutir, et une nouvelle tentative immédiate ne fait qu'ajouter du
bruit. Nous ne divulguons pas la cause elle-même.
402 en rechargeant vos crédits, et affichez toujours les references à côté de la réponse pour la transparence.Spécification OpenAPI
Toute l'API est décrite dans une spécification OpenAPI 3.1, importable dans Postman, Insomnia ou un générateur de clients :
https://categpt.chat/api/openapi