API gratuites — calendrier liturgique
Toutes les API de cette page sont gratuites, sans clé, sans compte, avec CORS ouvert : appelables depuis un navigateur, un serveur ou une application mobile. Les réponses sont en cache CDN pendant une heure.
credits : merci d’afficher la source à côté des textes de chaque ordo.URL de base
https://categpt.chat
La fête du jour — GET /api/v1/feast
Renvoie la journée liturgique complète : les deux formes du rite, leurs textes et les références bibliques de chaque texte. Les jours proches d’aujourd’hui sont générés à la volée s’ils manquent.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
date | string | non | Jour au format YYYY-MM-DD (défaut : aujourd’hui, UTC). |
locale | string | non | fr (défaut), en, de, it, es, pt, pl. |
curl "https://categpt.chat/api/v1/feast?locale=fr"
/api/v1/feastEssayerLa fête du jour — les deux ordos, leurs textes et leurs références bibliques.
curl "https://categpt.chat/api/v1/feast?date=2026-07-29&locale=fr"
À la racine, seuls date et sameFeast — plus credits (les
sources). Le reste vit dans nom et vom, qui portent exactement les
mêmes clés :
{
"date": "2026-07-25",
"sameFeast": false,
"nom": {
"name": "Ste Marie-Madeleine",
"rank": "Fête",
"rawRank": "Fête",
"latinName": null,
"color": "blanc",
"line": "Samedi de la 16ème semaine du Temps Ordinaire — Année paire",
"commemorations": [],
"commemorationLine": null,
"description": "…description en Markdown…",
"excerpt": "…résumé en deux phrases…",
"permalink": "https://app.categpt.chat/fr/saint/25-juillet-2026-ste-marie-madeleine",
"slug": "25-juillet-2026-ste-marie-madeleine",
"questions": ["…", "…", "…"],
"mass": [
{ "key": "first_reading", "label": "Première lecture", "ref": "Ct 3, 1-4a", "text": "<p>…</p>" },
{ "key": "second_reading", "label": "Deuxième lecture", "ref": "1 Co 13, 1-13", "text": "<p>…</p>" },
{ "key": "gospel", "label": "Évangile", "ref": "Jn 20, 1-2.11-18", "text": "<p>…</p>" }
],
"offices": {
"lauds": [
{ "key": "hymn", "label": "Hymne", "ref": null, "text": "<p>…</p>" },
{ "key": "short_reading", "label": "Parole de Dieu", "ref": "Rm 8, 26-27", "text": "<p>…</p>" }
],
"vespers": [ { "key": "short_reading", "label": "Parole de Dieu", "ref": "…", "text": "<p>…</p>" } ]
},
"localPropers": [ { "zone": "france", "name": "Ste Marthe, Ste Marie et St Lazare" } ],
"localPropersLine": "France : Ste Marthe, Ste Marie et St Lazare"
},
"vom": {
"name": "St Christophe, martyr",
"rank": "3e classe",
"rawRank": "III. classis",
"latinName": "S. Christophori Martyris",
"color": "rouge",
"line": "Samedi après le 8e Dimanche après la Pentecôte",
"commemorations": ["St Christophe, martyr"],
"commemorationLine": "Mémoire de saint Christophe, martyr",
"description": "…description propre à la fête du Vetus Ordo…",
"excerpt": "…résumé en deux phrases…",
"permalink": "https://app.categpt.chat/fr/saint/25-juillet-2026-st-christophe-martyr",
"slug": "25-juillet-2026-st-christophe-martyr",
"questions": ["…", "…", "…"],
"mass": [
{ "key": "introit", "label": "Introït", "ref": "Ps 138:17", "text": "<p>…</p>", "source": { "language": "la", "label": "Introitus", "ref": "Ps 138:17", "text": "<p>…</p>" } },
{ "key": "collect", "label": "Oraison", "ref": null, "text": "<p>…</p>", "source": { "language": "la", "label": "Oratio", "ref": null, "text": "<p>…</p>" } },
{ "key": "communion", "label": "Communion", "ref": "Ps 33:9", "text": "<p>…</p>", "source": { "language": "la", "label": "Communio", "ref": "Ps 33:9", "text": "<p>…</p>" } }
],
"offices": {
"sext": [
{ "key": "short_reading", "label": "Capitule Répons Verset", "ref": "Gal 6:2", "text": "<p>…</p>", "source": { "language": "la", "label": "Capitulum Responsorium Versus", "ref": "Gal 6:2", "text": "<p>…</p>" } },
{ "key": "collect", "label": "Oraison", "ref": null, "text": "<p>…</p>", "source": { "language": "la", "label": "Oratio", "ref": null, "text": "<p>…</p>" } }
]
},
"localPropers": [],
"localPropersLine": null
},
"credits": {
"nom": { "source": "AELF", "url": "https://www.aelf.org" },
"vom": { "source": "Divinum Officium", "url": "https://www.divinumofficium.com/" }
}
}
Égalité stricte NOM / VOM
nom porte la célébration du calendrier romain actuel (Novus Ordo,
textes AELF), vom celle du Vetus Ordo Missae (calendrier de 1962,
textes Divinum Officium). Les deux blocs
ont le même jeu de clés — aucun champ n’existe d’un côté seulement :
| Clé | Description |
|---|---|
name | Nom localisé de la fête de cet ordo. |
rank | Rang localisé : degré AELF (« Fête », « Mémoire facultative ») côté NOM, classe (« 3e classe ») côté VOM. |
rawRank | Le même rang tel que la source l’écrit (Mémoire facultative, III. classis). |
latinName | Titre latin de la célébration (Divinum Officium). null côté NOM : l’AELF n’en publie pas. |
color | Couleur liturgique : blanc, rouge, vert, violet, rose, noir. |
line | Position du jour dans ce calendrier : ligne de semaine (NOM), ligne temporale (VOM). Côté NOM elle porte aussi le cycle de lecture publié par l’AELF, joint comme l’AELF le joint ("Mercredi de la 17ème semaine du Temps Ordinaire — Année paire"). Quand la célébration est cette position — un dimanche, une férie dont le titre le dit déjà — la position tombe et le cycle reste seul ("Année A"). null quand il ne reste rien : aucune position à énoncer et aucun cycle publié — toujours le cas côté VOM, qui n’a pas de cycle. |
commemorations | Mémoires du jour dans ce calendrier, dans l'ordre où l'ordo les imprime (["Les saints Macchabées, martyrs"]). Le calendrier romain actuel n'en publie pas : la liste est toujours vide côté NOM — la clé existe des deux côtés, comme latinName. |
commemorationLine | Les mêmes mémoires en une phrase prête à afficher ("Mémoire de saint Christophe, martyr"). null quand l'ordo ne commémore rien — donc toujours côté NOM. |
description / excerpt | Texte descriptif et résumé de la fête de cet ordo. |
permalink | URL absolue de la page permanente de cette fête — toujours présente, une par ordo. |
slug | Le slug seul du permalink. |
questions | Questions suggérées sur la fête de cet ordo. |
mass | Textes de la messe (voir ci-dessous). |
offices | Textes des offices, par heure (voir ci-dessous). |
localPropers | Propres locaux : les seules zones dont la célébration diffère de celle du calendrier universel de cet ordo : [{ "zone": "france", "name": "…" }]. C'est le pendant exact des mémoires du VOM — une indication sous la fête, jamais la fête elle-même — et la liste est vide côté VOM, dont le Calendarium Generale n'en publie pas. |
localPropersLine | Les mêmes propres en une phrase prête à afficher, zones groupées par libellé : "France, Luxembourg : St Henri et Ste Cunégonde". null quand tous les lieux célèbrent ce que le calendrier universel annonce déjà. |
sameFeast vaut true quand les deux calendriers célèbrent la même
fête ce jour-là, false quand elles diffèrent, null quand le jour n’a pas
de données VOM — vom vaut alors null.
C’est une information, jamais une condition à écrire : description,
excerpt et questions sont toujours propres à l’ordo de leur bloc,
quelle que soit sa valeur. Un bloc dont le texte n’a pas encore été produit
porte null — il n’emprunte jamais celui de l’autre ordo. Deux fêtes
différentes donnent deux permaliens différents.
Renvoie 404 (not_found) si aucune donnée n’existe pour ce jour.
Textes liturgiques et références bibliques
mass et chaque heure de offices sont des listes d’objets identiques
dans les deux ordos :
| Champ | Description |
|---|---|
key | Clé machine stable, identique d’un jour, d’une langue et d’une année à l’autre. |
label | Intitulé lisible, dans la langue demandée. Pour les lectures de la messe du Novus Ordo il nomme la partie de la messe — « Première lecture », « Psaume », « Évangile » — et non la phrase que l’AELF met en exergue ; celle-ci ne sert plus que de repli quand aucune règle ne reconnaît la lecture. |
ref | Référence biblique du texte (Ps 118:89, 1 Co 13, 1-13), ou null quand la source n’en imprime pas. |
text | Le texte, fragment HTML tel que publié par la source. |
source | Le même texte dans sa langue source, avec son propre libellé et sa propre référence, quand text en est une traduction : `{ "language": "la" |
Un seul vocabulaire, en anglais, pour les deux ordos
Toutes les clés sont en anglais, et les deux ordos partagent une clé dès
qu'ils désignent la même chose. C'est ce qui rend les deux blocs
interchangeables : remplacer vom par nom dans un chemin d'accès donne
le même résultat, sur ce que les deux calendriers ont en commun.
Heures — matins, lauds, prime, terce, sext, none,
vespers, compline. Chaque ordo ne sert que celles qu'il a : le Novus
Ordo n'a pas de prime, et son office des lectures est les matines.
Messe — communes aux deux : epistle, gospel, sequence,
psalm, canticle, reading. Propres au Novus Ordo :
first_reading, second_reading, third_reading,
gospel_acclamation. Propres au Vetus Ordo : introit, collect,
gradual, alleluia, tract, offertory, secret,
communion, postcommunion, commemoration.
La messe décide du nom de ses lectures : une messe qui n'a qu'une lecture
avant l'Évangile — la férie ordinaire — la sert comme reading, « Lecture »,
et non comme first_reading ; first_reading et second_reading vont
ensemble, comme dans le missel. Et la forme brève de l'Évangile, que
l'AELF publie certains dimanches en doublon du texte intégral, n'est pas
servie : la messe ne contient que l'Évangile complet.
Offices — communes aux deux : hymn, antiphon, psalm,
short_reading (la péricope de l'AELF et le capitule de Divinum Officium
sont le même objet), responsory, versicle, collect, reading,
te_deum. Propres au Novus Ordo : introduction,
patristic_reading, patristic_responsory, psalm_versicle,
intercession, our_father, blessing, invitatory_antiphon,
invitatory_psalm, benedictus, magnificat, nunc_dimittis et
leurs antiennes. Propre au Vetus Ordo : lesson_1…lesson_9, les
leçons des matines.
Les parties numérotées gardent leur numéro (psalm_2, antiphon_3), et
une clé répétée dans une même liste est suffixée _2, _3…
Les codes de zone (france, belgique…) sont des valeurs
publiées par l'AELF, pas des clés : ils sont servis tels quels, pour rester
comparables à la source.
Tout se récupère donc par la clé, sans rien savoir du format des sources :
const day = await fetch(`https://categpt.chat/api/v1/feast?date=2026-07-25`).then(r => r.json());
// La référence du capitule de Sexte au Vetus Ordo → "Gal 6:2"
day.vom.offices.sext.find(t => t.key === 'short_reading').ref;
// La 2e lecture d’un dimanche au Novus Ordo → "1 Co 13, 1-13"
day.nom.mass.find(t => t.key === 'second_reading').ref;
// La communion du jour au Vetus Ordo → "Ps 33:9"
day.vom.mass.find(t => t.key === 'communion').ref;
Les références du Novus Ordo viennent du champ ref de l’AELF ; celles du
Vetus Ordo sont analysées dans le texte lui-même (Divinum Officium les
imprime en rubrique, sur leur propre ligne ou à la fin de l’incipit d’une
lecture) à partir d’une liste d’abréviations latines et vernaculaires — ref
vaut null quand aucune référence n’est reconnue.
description, excerpt, name, rank, line, commemorations et les label sont
renvoyés dans la locale demandée (repli français, puis latin côté VOM). Les
textes de la messe du Novus Ordo sont traduits quand locale ≠ fr ; les
offices du Novus Ordo restent en français (texte officiel AELF). credits
donne la source à afficher à côté des textes de chaque ordo.
Le jour liturgique — GET /api/liturgical/{date}
La même charge que /api/v1/feast, plus la navigation prev /
next — c'est l'API que le site lui-même consomme pour ses pages
quotidiennes.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
date | string (chemin) | oui | Jour au format YYYY-MM-DD. |
locale | string | non | fr (défaut), en, de, it, es, pt, pl. |
curl "https://categpt.chat/api/liturgical/2026-07-29?locale=fr"
/api/liturgical/{date}EssayerLa même journée complète, plus la navigation prev / next.
curl "https://categpt.chat/api/liturgical/2026-07-29?locale=fr"
prev et next valent null quand le jour adjacent n'est pas encore en
base ; sinon :
| Clé | Description |
|---|---|
date | Le jour adjacent, YYYY-MM-DD. |
slug | Slug du permalien de sa page permanente (Novus Ordo). |
vomSlug | Slug de sa page Vetus Ordo — présent uniquement quand ce jour-là les deux ordos célèbrent des fêtes différentes, null sinon. |
Le calendrier — GET /api/liturgical/calendar
Un mois d'entrées prêtes à lister — ce que la page calendrier liturgique affiche. Lecture seule : un jour absent de la base donne simplement une entrée de moins.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
month | string | oui | Mois au format YYYY-MM. |
locale | string | non | fr (défaut), en, de, it, es, pt, pl. |
curl "https://categpt.chat/api/liturgical/calendar?month=2026-07&locale=fr"
/api/liturgical/calendarEssayerUn mois d’entrées du calendrier liturgique, prêtes à lister.
curl "https://categpt.chat/api/liturgical/calendar?month=2026-07&locale=fr"
Chaque entrée de entries :
| Clé | Description |
|---|---|
date | Jour YYYY-MM-DD. |
slug | Slug du permalien de la page du jour. |
name | Nom localisé de la fête (Novus Ordo). |
degreeKey / degree | Degré : clé stable quand elle est connue (feast, memorial…), sinon le libellé AELF brut. |
color | Couleur liturgique ("" quand l'AELF n'en publie pas). |
vomName / vomSlug / vomColor | La fête du Vetus Ordo du jour, son permalien et sa couleur — dès que le jour a des données VOM, y compris pour un saint partagé (les deux calendriers le titrent différemment). |
vomClass / vomRank | Classe 1–4 quand le rang en est une, sinon le rang Divinum Officium brut. |
sameFeast | true / false / null — même sémantique que sur la journée complète. |
vomCommemoration | La mémoire du jour au Vetus Ordo, en une phrase. null quand l'ordo ne commémore rien. |
nomLocalPropers | Les propres locaux qui diffèrent du calendrier universel, groupés par libellé : [{ "zones": ["france"], "name": "…" }]. null quand tous les lieux suivent le calendrier universel. |
La carte du jour — GET /api/liturgical/card/{date}
Une image JPEG 1080 × 1080 de la journée (nom de la fête, couleur liturgique), librement intégrable — c'est le visuel des publications quotidiennes du projet. Jours déjà en base uniquement.
<img src="https://categpt.chat/api/liturgical/card/2026-07-29" alt="Fête du jour" width="540">
/api/liturgical/card/{date}EssayerLa carte du jour — image JPEG 1080 × 1080, librement intégrable.
curl "https://categpt.chat/api/liturgical/card/2026-07-29"
Les flux RSS — GET /api/feed/feast-of-the-day
Deux flux RSS 2.0 du saint du jour (français), un par forme du rite : les 30 derniers jours, chaque élément pointant vers sa page permanente, avec le nom, le lien et l'extrait de son propre ordo.
| Paramètre | Type | Requis | Description |
|---|---|---|---|
ordo | string | non | nom (Novus Ordo, défaut) ou vom (Vetus Ordo Missae, calendrier de 1962). |
https://categpt.chat/api/feed/feast-of-the-day
https://categpt.chat/api/feed/feast-of-the-day?ordo=vom
Les deux flux sont annoncés dans le <head> de toutes les pages publiques
(<link rel="alternate" type="application/rss+xml">) : un lecteur RSS pointé
sur categpt.chat les découvre seul.
/api/feed/feast-of-the-dayEssayerFlux RSS 2.0 du saint du jour (français, 30 derniers jours) — un flux par ordo.
curl "https://categpt.chat/api/feed/feast-of-the-day?ordo=nom"
Erreurs
Les endpoints /api/v1/* répondent { "error": { "code": "…" } } ; les
endpoints /api/liturgical/* répondent { "error": "…" } :
| Code HTTP | Code d'erreur | Signification |
|---|---|---|
| 400 | invalid_date / invalid_month | Paramètre mal formé. |
| 404 | not_found | Aucune donnée pour ce jour. |
| 500 | internal_error | Erreur interne. |
Spécification OpenAPI
Toute l'API — gratuite et à clé — est décrite dans une spécification OpenAPI 3.1 générée depuis la même source que cette page :
https://categpt.chat/api/openapi
Importez-la dans Postman, Insomnia ou un générateur de clients pour obtenir requêtes types et schémas.