CatéGPT
Documentation

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.

ℹ️
Attribution. Les textes servis viennent de l’AELF (Novus Ordo) et du projet Divinum Officium (Vetus Ordo). Chaque réponse porte un champ 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ètreTypeRequisDescription
datestringnonJour au format YYYY-MM-DD (défaut : aujourd’hui, UTC).
localestringnonfr (défaut), en, de, it, es, pt, pl.
curl "https://categpt.chat/api/v1/feast?locale=fr"
GET/api/v1/feastEssayer

La 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
nameNom localisé de la fête de cet ordo.
rankRang localisé : degré AELF (« Fête », « Mémoire facultative ») côté NOM, classe (« 3e classe ») côté VOM.
rawRankLe même rang tel que la source l’écrit (Mémoire facultative, III. classis).
latinNameTitre latin de la célébration (Divinum Officium). null côté NOM : l’AELF n’en publie pas.
colorCouleur liturgique : blanc, rouge, vert, violet, rose, noir.
linePosition 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.
commemorationsMé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.
commemorationLineLes 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 / excerptTexte descriptif et résumé de la fête de cet ordo.
permalinkURL absolue de la page permanente de cette fête — toujours présente, une par ordo.
slugLe slug seul du permalink.
questionsQuestions suggérées sur la fête de cet ordo.
massTextes de la messe (voir ci-dessous).
officesTextes des offices, par heure (voir ci-dessous).
localPropersPropres 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.
localPropersLineLes 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 :

ChampDescription
keyClé machine stable, identique d’un jour, d’une langue et d’une année à l’autre.
labelIntitulé 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.
refRéférence biblique du texte (Ps 118:89, 1 Co 13, 1-13), ou null quand la source n’en imprime pas.
textLe texte, fragment HTML tel que publié par la source.
sourceLe 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.

Heuresmatins, 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_1lesson_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 localefr ; les offices du Novus Ordo restent en français (texte officiel AELF). credits donne la source à afficher à côté des textes de chaque ordo.

💡
Pour afficher le saint du jour sur un site sans coder, utilisez la card gratuite « Saint du jour » : voir la documentation du widget.

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ètreTypeRequisDescription
datestring (chemin)ouiJour au format YYYY-MM-DD.
localestringnonfr (défaut), en, de, it, es, pt, pl.
curl "https://categpt.chat/api/liturgical/2026-07-29?locale=fr"
GET/api/liturgical/{date}Essayer

La 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
dateLe jour adjacent, YYYY-MM-DD.
slugSlug du permalien de sa page permanente (Novus Ordo).
vomSlugSlug 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ètreTypeRequisDescription
monthstringouiMois au format YYYY-MM.
localestringnonfr (défaut), en, de, it, es, pt, pl.
curl "https://categpt.chat/api/liturgical/calendar?month=2026-07&locale=fr"
GET/api/liturgical/calendarEssayer

Un 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
dateJour YYYY-MM-DD.
slugSlug du permalien de la page du jour.
nameNom localisé de la fête (Novus Ordo).
degreeKey / degreeDegré : clé stable quand elle est connue (feast, memorial…), sinon le libellé AELF brut.
colorCouleur liturgique ("" quand l'AELF n'en publie pas).
vomName / vomSlug / vomColorLa 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 / vomRankClasse 1–4 quand le rang en est une, sinon le rang Divinum Officium brut.
sameFeasttrue / false / null — même sémantique que sur la journée complète.
vomCommemorationLa mémoire du jour au Vetus Ordo, en une phrase. null quand l'ordo ne commémore rien.
nomLocalPropersLes 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">
GET/api/liturgical/card/{date}Essayer

La 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ètreTypeRequisDescription
ordostringnonnom (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.

GET/api/feed/feast-of-the-dayEssayer

Flux 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 HTTPCode d'erreurSignification
400invalid_date / invalid_monthParamètre mal formé.
404not_foundAucune donnée pour ce jour.
500internal_errorErreur 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.

Aller plus loin

API gratuites — calendrier liturgique · CatéGPT