# The Rosary API

> Pray and publish the daily rosary with The Rosary API, the free keyless service at the-rosary-api.vercel.app. Get today's mysteries and its recordings for a morning post, get a whole rosary in the order it is prayed with each mystery's scripture and fruit, look up any date, run a nine day novena or the fifty four day one, or find the next day that prays a given set. The mysteries follow the liturgical season, so a Sunday in Lent prays the Sorrowful rather than the weekday's usual Glorious, and the prayer texts are repaired on the way through so they arrive with real line breaks.

App · Calendars · 9 actions. Web page: https://docs.lodol.com/docs/integrations/the-rosary-api

## Actions

### Check the service status

Check whether the service is up and still publishing today's rosary, as a value to branch on rather than a step that fails. Answering at all and answering with a rosary are reported separately, because the service publishes whole years at a time and will keep answering cheerfully with nothing once its calendar runs past the end of the last year it was given. That is the failure worth watching for.

**Inputs**: None.

**Outputs**

- `byte_size` (number): How big the answer was, in bytes.
- `content_type` (text): The media type the service answered with.
- `date` (text): The date it served, when it served one.
- `has_today` (true/false): True when it published a rosary for today. False with reachable true means its calendar has run out of years.
- `message` (text): What happened, in one sentence.
- `online` (true/false): True only when the service answered and had a rosary for today. This is the one to branch on.
- `reachable` (true/false): True when the service answered at all, whatever it said.
- `response_time_ms` (number): How long the request took, in milliseconds.
- `server_timezone` (text): The timezone the service works the day out in.
- `status_code` (number): The HTTP status the service answered with, or null when it could not be reached at all.

**Example output**

```json
{
  "byte_size": 429,
  "content_type": "application/json",
  "date": "2026-09-13",
  "has_today": true,
  "message": "The Rosary API is up and serving September 13, 2026 in 214.6 ms.",
  "online": true,
  "reachable": true,
  "response_time_ms": 214.6,
  "server_timezone": "America/New_York",
  "status_code": 200
}
```

### Find the next rosary day

Find the next day that prays a given set of mysteries, falls in a season, or lands on a weekday, for scheduling a reminder or planning ahead. The service has no search of any kind, so the days are read forward nine at a time using its novena route, and the search stops the moment a day matches: a match four days out costs one request. Give at least one thing to look for.

**Inputs**

- Mysteries (`mysteries`, text): Keep only days that pray this set. Leave empty for any. One of: `Joyful` (The Joyful Mysteries), `Sorrowful` (The Sorrowful Mysteries), `Glorious` (The Glorious Mysteries), `Luminous` (The Luminous Mysteries).
- Season (`season`, text): Keep only days in this liturgical season. Leave empty for any. One of: `Advent`, `Christmas`, `Ordinary Time`, `Lent`, `Triduum`, `Easter`.
- Weekday (`weekday`, text): Keep only days that fall on this weekday. Leave empty for any. One of: `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`.
- Search from (`start_date`, text): The first day to consider. Leave empty to start today. The day itself counts, so a search that matches today answers with today.
- How far to look (`within_days`, number): How many days ahead to search before giving up. The days are read nine at a time, so a wide window is cheap: two months costs seven requests at most, and fewer when the match comes early. From 1 to 400. Default: `60`.

**Outputs**

- `audio_url` (text): A recording of this day's rosary as an MP3, or empty when the API publishes none. Check 'has_audio' rather than this.
- `calendar_ran_out` (true/false): True when the published calendar ended before the window did, so there were no more days to search.
- `date` (text): The day this rosary is for, as 2026-09-13. Sortable and comparable, and what to pass to a calendar or reminder step.
- `date_key` (text): The same day in the six digit form the API matches on, 091326. Pass this or any ordinary date back into a date lookup.
- `days_away` (number): How many days from the start of the search the match is. 0 means the search started on it.
- `display_date` (text): The day written out, 'September 13, 2026', for a message someone will read.
- `found` (true/false): Whether a matching day turned up. When false, every day field is empty; branch on this rather than on the date.
- `has_audio` (true/false): Whether a recording is published for this day. The API carries audio for its most recent year only, so an older date has none, and branching on this is safer than on the address.
- `mystery` (text): Which mysteries are prayed: Joyful, Sorrowful, Glorious or Luminous. On a Sunday in Lent, Advent, Christmas or Easter this is set by the season and is not the weekday's usual set.
- `mystery_set` (text): The same thing written out, 'The Glorious Mysteries'.
- `requests_made` (number): How many requests the search cost, one per nine days looked at.
- `searched_days` (number): How many days were looked at.
- `searched_from` (text): The first day that was considered.
- `season` (text): The liturgical season: Advent, Christmas, Ordinary Time, Lent, Triduum or Easter.
- `summary` (text): The day in one sentence, ready to post or to write to a log.
- `weekday` (text): The day of the week, Sunday through Saturday.
- `within_days` (number): How far ahead the search was allowed to go.
- `youtube_id` (text): Just the YouTube id, for embedding the video rather than linking to it.
- `youtube_url` (text): A YouTube recording of this day's rosary.

**Example output**

```json
{
  "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
  "calendar_ran_out": false,
  "date": "2026-09-13",
  "date_key": "091326",
  "days_away": 4,
  "display_date": "September 13, 2026",
  "found": true,
  "has_audio": true,
  "mystery": "Glorious",
  "mystery_set": "The Glorious Mysteries",
  "requests_made": 1,
  "searched_days": 5,
  "searched_from": "2026-09-09",
  "season": "Ordinary Time",
  "summary": "Sunday, September 13, 2026: the Glorious Mysteries in Ordinary Time.",
  "weekday": "Sunday",
  "within_days": 60,
  "youtube_id": "5Q-WX-uDIWs",
  "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
}
```

### Get a nine day novena

Get nine consecutive days of the rosary, starting today or on a date you give, for scheduling a novena or posting one day at a time. The service slices its calendar to build this, so a start date near the end of the published year comes back with fewer than nine days and says nothing about it; this step reports the count and whether the run is complete.

**Inputs**

- Start date (`start_date`, text): The first of the nine days. Leave empty to start today. A start date near the end of the published calendar comes back with fewer than nine days, and the result says so.

**Outputs**

- `complete` (true/false): True when all nine days came back. False means the published calendar ends inside the novena.
- `count` (number): How many days came back.
- `days` (list): The days of the novena, in order.
- `end_date` (text): The last day that came back.
- `expected_count` (number): How many a full novena is, which is nine.
- `mysteries` (list): Which sets of mysteries the novena covers.
- `requested_start` (text): The start date that was asked for, or empty when the novena started today.
- `start_date` (text): The first day that came back.
- `summary` (text): The novena in one sentence.

**Example output**

```json
{
  "complete": false,
  "count": 3,
  "days": [
    {
      "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
      "date": "2026-09-13",
      "date_key": "091326",
      "display_date": "September 13, 2026",
      "has_audio": true,
      "mystery": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "season": "Ordinary Time",
      "summary": "Sunday, September 13, 2026: the Glorious Mysteries in Ordinary Time.",
      "weekday": "Sunday",
      "youtube_id": "5Q-WX-uDIWs",
      "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
    },
    {
      "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
      "date": "2026-09-14",
      "date_key": "091426",
      "display_date": "September 14, 2026",
      "has_audio": true,
      "mystery": "Joyful",
      "mystery_set": "The Joyful Mysteries",
      "season": "Ordinary Time",
      "summary": "Monday, September 14, 2026: the Joyful Mysteries in Ordinary Time.",
      "weekday": "Monday",
      "youtube_id": "5Q-WX-uDIWs",
      "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
    },
    {
      "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
      "date": "2026-09-15",
      "date_key": "091526",
      "display_date": "September 15, 2026",
      "has_audio": true,
      "mystery": "Sorrowful",
      "mystery_set": "The Sorrowful Mysteries",
      "season": "Ordinary Time",
      "summary": "Tuesday, September 15, 2026: the Sorrowful Mysteries in Ordinary Time.",
      "weekday": "Tuesday",
      "youtube_id": "5Q-WX-uDIWs",
      "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
    }
  ],
  "end_date": "2026-09-15",
  "expected_count": 9,
  "mysteries": [
    "Glorious",
    "Joyful",
    "Sorrowful"
  ],
  "requested_start": "",
  "start_date": "2026-09-13",
  "summary": "3 days rather than 9, September 13, 2026 to September 15, 2026. The calendar the API publishes ends before the novena does."
}
```

### Get a prayer

Get one of the eight prayers the rosary is made of, or all of them: the Sign of the Cross, the Apostles' Creed, the Our Father, the Hail Mary, the Glory Be, the Hail Holy Queen, the Oh My Jesus and the Final Prayer. Each comes as plain text with its line breaks and as HTML, so it can go straight into a message or an email. Names are matched loosely, so Ave Maria and Salve Regina find the right prayers.

**Inputs**

- Prayer (`prayer`, text): Which prayer to return. Leave empty for all eight. A name is matched loosely, so 'Ave Maria', 'hail mary' and 'Hail Mary' all reach the same prayer, as do 'creed', 'Salve Regina' and 'Fatima Prayer'.

**Outputs**

- `count` (number): How many prayers came back.
- `html` (text): The matched prayer's words as HTML.
- `matched` (text): The key of the prayer that was matched, or empty when all of them came back.
- `prayers` (list): The prayers that matched, or all eight when none was named.
- `summary` (text): What came back, in one sentence.
- `text` (text): The matched prayer's words.
- `title` (text): The matched prayer's name, for a step that wants one prayer without reading into the list.

**Example output**

```json
{
  "count": 1,
  "html": "<p>Hail Mary, full of grace, the Lord is with you;<br />\nblessed are you among women,<br />\nand blessed is the fruit of your womb, Jesus.<br />\nHoly Mary, Mother of God,<br />\npray for us sinners<br />\nnow and at the hour of our death.<br />\nAmen.</p>",
  "matched": "hail_mary",
  "prayers": [
    {
      "html": "<p>Hail Mary, full of grace, the Lord is with you;<br />\nblessed are you among women,<br />\nand blessed is the fruit of your womb, Jesus.<br />\nHoly Mary, Mother of God,<br />\npray for us sinners<br />\nnow and at the hour of our death.<br />\nAmen.</p>",
      "line_count": 7,
      "slug": "hail_mary",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "title": "Hail Mary"
    }
  ],
  "summary": "Hail Mary, 7 lines.",
  "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
  "title": "Hail Mary"
}
```

### Get a rosary to pray

Get a whole rosary in the order it is prayed: every prayer, which decade it belongs to, how many times it is said, and each mystery's scripture and fruit. Ask for today or a date and the mysteries follow the liturgical season, which the service's own weekday routes do not: on a Sunday in Lent they would give the Glorious rather than the Sorrowful. The prayers arrive from the service with the line breaks written as literal characters, and they are repaired here, so the text is ready to post or read aloud.

**Inputs**

- Which rosary (`mysteries`, text): Which rosary to pray. Today and a specific date read the day's own mysteries from the calendar, so the liturgical season is respected: a Sunday in Lent prays the Sorrowful, not the Glorious. Naming a set or a weekday gives that weekday's traditional rosary whatever the date. One of: `today` (Today's rosary), `date` (A specific date's rosary), `joyful` (The Joyful Mysteries), `sorrowful` (The Sorrowful Mysteries), `glorious` (The Glorious Mysteries), `luminous` (The Luminous Mysteries), `sunday` (Sunday's rosary), `monday` (Monday's rosary), `tuesday` (Tuesday's rosary), `wednesday` (Wednesday's rosary), and 3 more. Default: `today`.
- Date (`date`, text): The date to look up, used when Which day is set to a specific date. Write it any ordinary way: 2026-09-13, 09/13/2026, September 13, 2026, or the six digits the API itself uses. The API publishes whole years at a time, so a date outside them comes back as nothing found.
- Layout (`layout`, text): How to lay the prayers out. Grouped folds each run of the same prayer into one step carrying how many times it is said, which is what a posted or printed rosary wants. One step per prayer spells every repetition out, for driving a prayer app bead by bead. One of: `condensed` (Grouped repetitions), `full` (One step per prayer). Default: `condensed`.
- Include the meditations (`include_meditations`, true/false): Give each announcement its scripture reference, its fruit and the passage to meditate on, joined from the mysteries the API publishes separately. Costs one extra request. Default: `true`.
- Fill in blank prayers (`fill_gaps`, true/false): The API leaves a prayer blank on some days: 33 of the 54 days of the long novena have no words for the first decade's Our Father. Leave this on to take the missing words from the API's own prayer list, at the cost of one extra request only when there is a gap. Turn it off to see exactly what the API published; either way the result names what was blank. Default: `true`.

**Outputs**

- `audio_url` (text): The recording for that day, when there is one.
- `date` (text): The day this rosary is for, when one was asked for. Empty when a set or a weekday was named instead.
- `decade_count` (number): How many decades there are, normally 5.
- `display_date` (text): The same day written out, or empty.
- `filled_prayers` (list): Prayers the API left blank whose words were taken from its own prayer list instead.
- `hail_mary_count` (number): How many Hail Marys are said in total, counting repetitions: 53 for a complete rosary.
- `is_complete` (true/false): Whether every prayer in the script has its words. False means the API published a blank one and it was not filled in.
- `layout` (text): Which layout was used, condensed or full.
- `meditations` (list): The five mysteries with their scripture and fruit. Empty when meditations were not included.
- `missing_prayers` (list): Prayers the API left blank and that were not filled in, so the script is short of them. Empty when the script is complete.
- `mysteries` (text): Which set this rosary prays: Joyful, Sorrowful, Glorious or Luminous.
- `mystery_set` (text): The same thing written out.
- `plain_text` (text): The whole rosary as one block of text, headed by decade, ready to print or post.
- `prayer_count` (number): How many prayers are said in total, repetitions counted.
- `season` (text): The liturgical season of that day, or empty.
- `season_overrides_weekday` (true/false): True when the season sets mysteries other than the ones this weekday usually prays. This is exactly when asking the service for the weekday directly would have given the wrong rosary.
- `step_count` (number): How many steps the script has: about 34 condensed, about 70 in full.
- `steps` (list): Every prayer, in the order it is said.
- `summary` (text): The rosary in one sentence.
- `weekday` (text): The day of the week that date falls on, or empty.
- `weekday_source` (text): The weekday whose script the prayers came from. It is the weekday that carries these mysteries, which on a season overridden Sunday is not the day of the week itself.
- `youtube_url` (text): The video for that day, when there is one.

**Example output**

```json
{
  "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
  "date": "2026-09-13",
  "decade_count": 5,
  "display_date": "September 13, 2026",
  "filled_prayers": [],
  "hail_mary_count": 53,
  "is_complete": true,
  "layout": "condensed",
  "meditations": [
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 1,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Resurrection of Jesus Christ",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 2,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Ascension of Jesus to Heaven",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 3,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Descent of Holy Spirit",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 4,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Assumption of the Blessed Virgin Mary into Heaven",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 5,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Coronation of the Blessed Virgin Mary, Queen of Heaven and Earth",
      "verse": "Luke 24:1-5"
    }
  ],
  "missing_prayers": [],
  "mysteries": "Glorious",
  "mystery_set": "The Glorious Mysteries",
  "plain_text": "Sign of the Cross\nIn the name of the Father, and of the\nSon, and of the Holy Spirit. Amen.\n\nApostles' Creed\nI believe in God,\nthe Father almighty,\nAmen.\n\nOur Father\nOur Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.\n\nHail Mary (x3)\nHail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.\n\nGlory Be\nGlory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.\n\nOh My Jesus\nO my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.\n\n--- Decade 1 ---\n\nAnnouncement\nThe Resurrection of Jesus Christ\n(Luke 24:1-5. Fruit: Faith)\n\nOur Father\nOur Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.\n\nHail Mary (x10)\nHail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.\n\nGlory Be\nGlory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.\n\nOh My Jesus\nO my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.\n\n--- Decade 2 ---\n\nAnnouncement\nThe Ascension of Jesus to Heaven\n(Luke 24:1-5. Fruit: Faith)\n\nOur Father\nOur Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.\n\nHail Mary (x10)\nHail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.\n\nGlory Be\nGlory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.\n\nOh My Jesus\nO my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.\n\n--- Decade 3 ---\n\nAnnouncement\nThe Descent of Holy Spirit\n(Luke 24:1-5. Fruit: Faith)\n\nOur Father\nOur Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.\n\nHail Mary (x10)\nHail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.\n\nGlory Be\nGlory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.\n\nOh My Jesus\nO my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.\n\n--- Decade 4 ---\n\nAnnouncement\nThe Assumption of the Blessed Virgin Mary into Heaven\n(Luke 24:1-5. Fruit: Faith)\n\nOur Father\nOur Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.\n\nHail Mary (x10)\nHail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.\n\nGlory Be\nGlory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.\n\nOh My Jesus\nO my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.\n\n--- Decade 5 ---\n\nAnnouncement\nThe Coronation of the Blessed Virgin Mary, Queen of Heaven and Earth\n(Luke 24:1-5. Fruit: Faith)\n\nOur Father\nOur Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.\n\nHail Mary (x10)\nHail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.\n\nGlory Be\nGlory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.\n\nOh My Jesus\nO my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.\n\nHail Holy Queen\nHail, holy Queen, mother of mercy,\nour life, Amen.\n\nFinal Prayer\nO God, whose only begotten Son, Amen.\n\nSign of the Cross\nIn the name of the Father, and of the\nSon, and of the Holy Spirit. Amen.",
  "prayer_count": 81,
  "season": "Ordinary Time",
  "season_overrides_weekday": false,
  "step_count": 34,
  "steps": [
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "in_the_name_1",
      "meditation": "",
      "position": 1,
      "prayer": "Sign of the Cross",
      "repetitions": 1,
      "section": "opening",
      "text": "In the name of the Father, and of the\nSon, and of the Holy Spirit. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "i_believe",
      "meditation": "",
      "position": 2,
      "prayer": "Apostles' Creed",
      "repetitions": 1,
      "section": "opening",
      "text": "I believe in God,\nthe Father almighty,\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "our _father_1",
      "meditation": "",
      "position": 3,
      "prayer": "Our Father",
      "repetitions": 1,
      "section": "opening",
      "text": "Our Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "hail _mary_1",
      "meditation": "",
      "position": 4,
      "prayer": "Hail Mary",
      "repetitions": 3,
      "section": "opening",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "glory_be_1",
      "meditation": "",
      "position": 5,
      "prayer": "Glory Be",
      "repetitions": 1,
      "section": "opening",
      "text": "Glory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "oh_my_jesus_1",
      "meditation": "",
      "position": 6,
      "prayer": "Oh My Jesus",
      "repetitions": 1,
      "section": "opening",
      "text": "O my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 1,
      "filled": false,
      "fruit": "Faith",
      "key": "announce_1",
      "meditation": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "position": 7,
      "prayer": "Announcement",
      "repetitions": 1,
      "section": "decade",
      "text": "The Resurrection of Jesus Christ",
      "verse": "Luke 24:1-5"
    },
    {
      "bead": 0,
      "decade": 1,
      "filled": false,
      "fruit": "",
      "key": "our _father_2",
      "meditation": "",
      "position": 8,
      "prayer": "Our Father",
      "repetitions": 1,
      "section": "decade",
      "text": "Our Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 1,
      "filled": false,
      "fruit": "",
      "key": "hail _mary_4_1",
      "meditation": "",
      "position": 9,
      "prayer": "Hail Mary",
      "repetitions": 10,
      "section": "decade",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 1,
      "filled": false,
      "fruit": "",
      "key": "glory_be_2",
      "meditation": "",
      "position": 10,
      "prayer": "Glory Be",
      "repetitions": 1,
      "section": "decade",
      "text": "Glory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 1,
      "filled": false,
      "fruit": "",
      "key": "oh_my_jesus_2",
      "meditation": "",
      "position": 11,
      "prayer": "Oh My Jesus",
      "repetitions": 1,
      "section": "decade",
      "text": "O my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 2,
      "filled": false,
      "fruit": "Faith",
      "key": "announce_2",
      "meditation": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "position": 12,
      "prayer": "Announcement",
      "repetitions": 1,
      "section": "decade",
      "text": "The Ascension of Jesus to Heaven",
      "verse": "Luke 24:1-5"
    },
    {
      "bead": 0,
      "decade": 2,
      "filled": false,
      "fruit": "",
      "key": "our _father_3",
      "meditation": "",
      "position": 13,
      "prayer": "Our Father",
      "repetitions": 1,
      "section": "decade",
      "text": "Our Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 2,
      "filled": false,
      "fruit": "",
      "key": "hail _mary_14_1",
      "meditation": "",
      "position": 14,
      "prayer": "Hail Mary",
      "repetitions": 10,
      "section": "decade",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 2,
      "filled": false,
      "fruit": "",
      "key": "glory_be_3",
      "meditation": "",
      "position": 15,
      "prayer": "Glory Be",
      "repetitions": 1,
      "section": "decade",
      "text": "Glory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 2,
      "filled": false,
      "fruit": "",
      "key": "oh_my_jesus_3",
      "meditation": "",
      "position": 16,
      "prayer": "Oh My Jesus",
      "repetitions": 1,
      "section": "decade",
      "text": "O my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 3,
      "filled": false,
      "fruit": "Faith",
      "key": "announce_3",
      "meditation": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "position": 17,
      "prayer": "Announcement",
      "repetitions": 1,
      "section": "decade",
      "text": "The Descent of Holy Spirit",
      "verse": "Luke 24:1-5"
    },
    {
      "bead": 0,
      "decade": 3,
      "filled": false,
      "fruit": "",
      "key": "our _father_4",
      "meditation": "",
      "position": 18,
      "prayer": "Our Father",
      "repetitions": 1,
      "section": "decade",
      "text": "Our Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 3,
      "filled": false,
      "fruit": "",
      "key": "hail _mary_24_1",
      "meditation": "",
      "position": 19,
      "prayer": "Hail Mary",
      "repetitions": 10,
      "section": "decade",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 3,
      "filled": false,
      "fruit": "",
      "key": "glory_be_4",
      "meditation": "",
      "position": 20,
      "prayer": "Glory Be",
      "repetitions": 1,
      "section": "decade",
      "text": "Glory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 3,
      "filled": false,
      "fruit": "",
      "key": "oh_my_jesus_4",
      "meditation": "",
      "position": 21,
      "prayer": "Oh My Jesus",
      "repetitions": 1,
      "section": "decade",
      "text": "O my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 4,
      "filled": false,
      "fruit": "Faith",
      "key": "announce_4",
      "meditation": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "position": 22,
      "prayer": "Announcement",
      "repetitions": 1,
      "section": "decade",
      "text": "The Assumption of the Blessed Virgin Mary into Heaven",
      "verse": "Luke 24:1-5"
    },
    {
      "bead": 0,
      "decade": 4,
      "filled": false,
      "fruit": "",
      "key": "our _father_5",
      "meditation": "",
      "position": 23,
      "prayer": "Our Father",
      "repetitions": 1,
      "section": "decade",
      "text": "Our Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 4,
      "filled": false,
      "fruit": "",
      "key": "hail _mary_34_1",
      "meditation": "",
      "position": 24,
      "prayer": "Hail Mary",
      "repetitions": 10,
      "section": "decade",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 4,
      "filled": false,
      "fruit": "",
      "key": "glory_be_5",
      "meditation": "",
      "position": 25,
      "prayer": "Glory Be",
      "repetitions": 1,
      "section": "decade",
      "text": "Glory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 4,
      "filled": false,
      "fruit": "",
      "key": "oh_my_jesus_5",
      "meditation": "",
      "position": 26,
      "prayer": "Oh My Jesus",
      "repetitions": 1,
      "section": "decade",
      "text": "O my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 5,
      "filled": false,
      "fruit": "Faith",
      "key": "announce_5",
      "meditation": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "position": 27,
      "prayer": "Announcement",
      "repetitions": 1,
      "section": "decade",
      "text": "The Coronation of the Blessed Virgin Mary, Queen of Heaven and Earth",
      "verse": "Luke 24:1-5"
    },
    {
      "bead": 0,
      "decade": 5,
      "filled": false,
      "fruit": "",
      "key": "our _father_6",
      "meditation": "",
      "position": 28,
      "prayer": "Our Father",
      "repetitions": 1,
      "section": "decade",
      "text": "Our Father, who art in heaven,\nhallowed be thy name;\nthy kingdom come;\nthy will be done on earth as it is in heaven.\nGive us this day our daily bread;\nand forgive us our trespasses\nas we forgive those who trespass against us;\nand lead us not into temptation,\nbut deliver us from evil.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 5,
      "filled": false,
      "fruit": "",
      "key": "hail _mary_44_1",
      "meditation": "",
      "position": 29,
      "prayer": "Hail Mary",
      "repetitions": 10,
      "section": "decade",
      "text": "Hail Mary, full of grace, the Lord is with you;\nblessed are you among women,\nand blessed is the fruit of your womb, Jesus.\nHoly Mary, Mother of God,\npray for us sinners\nnow and at the hour of our death.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 5,
      "filled": false,
      "fruit": "",
      "key": "glory_be_6",
      "meditation": "",
      "position": 30,
      "prayer": "Glory Be",
      "repetitions": 1,
      "section": "decade",
      "text": "Glory be to the Father, the Son, and the Holy Spirit;\nas it was in the beginning, is now, and ever shall be,\nworld without end.\nAmen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 5,
      "filled": false,
      "fruit": "",
      "key": "oh_my_jesus_6",
      "meditation": "",
      "position": 31,
      "prayer": "Oh My Jesus",
      "repetitions": 1,
      "section": "decade",
      "text": "O my Jesus, forgive us our sins. Save us from the fires of hell. Lead all souls into heaven, especially those in most need of thy mercy. Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "holy_queen",
      "meditation": "",
      "position": 32,
      "prayer": "Hail Holy Queen",
      "repetitions": 1,
      "section": "closing",
      "text": "Hail, holy Queen, mother of mercy,\nour life, Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "final_prayer",
      "meditation": "",
      "position": 33,
      "prayer": "Final Prayer",
      "repetitions": 1,
      "section": "closing",
      "text": "O God, whose only begotten Son, Amen.",
      "verse": ""
    },
    {
      "bead": 0,
      "decade": 0,
      "filled": false,
      "fruit": "",
      "key": "in_the_name_2",
      "meditation": "",
      "position": 34,
      "prayer": "Sign of the Cross",
      "repetitions": 1,
      "section": "closing",
      "text": "In the name of the Father, and of the\nSon, and of the Holy Spirit. Amen.",
      "verse": ""
    }
  ],
  "summary": "The Glorious Mysteries for September 13, 2026: 34 steps, 53 Hail Marys.",
  "weekday": "Sunday",
  "weekday_source": "Sunday",
  "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
}
```

### Get the daily rosary

Get one day's rosary: which mysteries are prayed, the liturgical season, and links to the audio and video recordings. Ask for today, the day either side of it, any date, or a day at random. The service decides what today is in New York rather than where the workflow runs, so the result carries the date it actually served and says whether that is the date you meant.

**Inputs**

- Which day (`day`, text): Which day's rosary to fetch. The service works out today in New York rather than where this workflow runs, so a run just after midnight UTC gets what New York still calls yesterday; the result says which date it actually served. One of: `today`, `yesterday`, `tomorrow`, `date` (A specific date), `random` (A random day). Default: `today`.
- Date (`date`, text): The date to look up, used when Which day is set to a specific date. Write it any ordinary way: 2026-09-13, 09/13/2026, September 13, 2026, or the six digits the API itself uses. The API publishes whole years at a time, so a date outside them comes back as nothing found.

**Outputs**

- `audio_url` (text): A recording of this day's rosary as an MP3, or empty when the API publishes none. Check 'has_audio' rather than this.
- `date` (text): The day this rosary is for, as 2026-09-13. Sortable and comparable, and what to pass to a calendar or reminder step.
- `date_key` (text): The same day in the six digit form the API matches on, 091326. Pass this or any ordinary date back into a date lookup.
- `display_date` (text): The day written out, 'September 13, 2026', for a message someone will read.
- `has_audio` (true/false): Whether a recording is published for this day. The API carries audio for its most recent year only, so an older date has none, and branching on this is safer than on the address.
- `is_server_today` (true/false): Whether the day that came back is the current day in the service's own timezone.
- `matches_requested_date` (true/false): Whether the date served is the one asking for today, yesterday or tomorrow should have given. False means the service's idea of the day differs from this workflow's, which happens around midnight.
- `mystery` (text): Which mysteries are prayed: Joyful, Sorrowful, Glorious or Luminous. On a Sunday in Lent, Advent, Christmas or Easter this is set by the season and is not the weekday's usual set.
- `mystery_set` (text): The same thing written out, 'The Glorious Mysteries'.
- `requested` (text): Which day was asked for.
- `season` (text): The liturgical season: Advent, Christmas, Ordinary Time, Lent, Triduum or Easter.
- `server_timezone` (text): The timezone the service works the day out in, America/New_York.
- `summary` (text): The day in one sentence, ready to post or to write to a log.
- `weekday` (text): The day of the week, Sunday through Saturday.
- `youtube_id` (text): Just the YouTube id, for embedding the video rather than linking to it.
- `youtube_url` (text): A YouTube recording of this day's rosary.

**Example output**

```json
{
  "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
  "date": "2026-09-13",
  "date_key": "091326",
  "display_date": "September 13, 2026",
  "has_audio": true,
  "is_server_today": true,
  "matches_requested_date": true,
  "mystery": "Glorious",
  "mystery_set": "The Glorious Mysteries",
  "requested": "today",
  "season": "Ordinary Time",
  "server_timezone": "America/New_York",
  "summary": "Sunday, September 13, 2026: the Glorious Mysteries in Ordinary Time.",
  "weekday": "Sunday",
  "youtube_id": "5Q-WX-uDIWs",
  "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
}
```

### Get the fifty four day novena

Get the fifty four day rosary novena: twenty seven days offered in petition and twenty seven in thanksgiving, rotating through the Joyful, Sorrowful and Glorious mysteries. Take the plan to schedule the whole devotion, or one day to pray it. The service has no way to ask for a single day, so it sends roughly a megabyte of prayers every time; this step keeps only what was asked for. It also leaves the first decade's Our Father blank on 33 of the 54 days, which is filled in from its own prayer list unless you turn that off.

**Inputs**

- What to return (`view`, text): The plan lists all fifty four days with what each one prays, which is small enough to carry through a workflow. One day returns that day's prayers in full. The API has no way to ask for a single day, so it sends all of them either way: keep the plan and fetch a day at a time. One of: `plan` (The whole plan), `day` (One day's prayers). Default: `plan`.
- Day of the novena (`day`, number): Which day of the novena to pray, 1 to 54, used when What to return is set to one day. Days 1 to 27 are offered in petition and 28 to 54 in thanksgiving. From 1 to 54.
- Layout (`layout`, text): How to lay the prayers out. Grouped folds each run of the same prayer into one step carrying how many times it is said, which is what a posted or printed rosary wants. One step per prayer spells every repetition out, for driving a prayer app bead by bead. One of: `condensed` (Grouped repetitions), `full` (One step per prayer). Default: `condensed`.
- Fill in blank prayers (`fill_gaps`, true/false): The API leaves a prayer blank on some days: 33 of the 54 days of the long novena have no words for the first decade's Our Father. Leave this on to take the missing words from the API's own prayer list, at the cost of one extra request only when there is a gap. Turn it off to see exactly what the API published; either way the result names what was blank. Default: `true`.

**Outputs**

- `count` (number): How many days the novena has, which is 54.
- `day` (object): The day that was asked for, in the day view. Its number is 0 in the plan view.
- `days` (list): All fifty four days and what each one prays, in the plan view. Empty in the day view.
- `decade_count` (number): How many decades there are, normally 5.
- `filled_prayers` (list): Prayers the API left blank whose words were taken from its own prayer list instead.
- `hail_mary_count` (number): How many Hail Marys are said in total, counting repetitions: 53 for a complete rosary.
- `is_complete` (true/false): Whether every prayer in the script has its words. False means the API published a blank one and it was not filled in.
- `missing_prayers` (list): Prayers the API left blank and that were not filled in, so the script is short of them. Empty when the script is complete.
- `petition_days` (number): How many days are offered in petition.
- `plain_text` (text): That day's rosary as one block of text, in the day view.
- `prayer_count` (number): How many prayers are said in total, repetitions counted.
- `step_count` (number): How many steps the script has: about 34 condensed, about 70 in full.
- `steps` (list): That day's prayers in order, in the day view. Empty in the plan view.
- `summary` (text): The novena, or the day, in one sentence.
- `thanksgiving_days` (number): How many days are offered in thanksgiving.
- `view` (text): Which view came back, plan or day.

**Example output**

```json
{
  "count": 54,
  "day": {
    "intention": "",
    "is_petition": false,
    "mysteries": "",
    "mystery_set": "",
    "number": 0
  },
  "days": [
    {
      "intention": "Petition",
      "is_petition": true,
      "mysteries": "Joyful",
      "mystery_set": "The Joyful Mysteries",
      "number": 1
    },
    {
      "intention": "Petition",
      "is_petition": true,
      "mysteries": "Sorrowful",
      "mystery_set": "The Sorrowful Mysteries",
      "number": 2
    },
    {
      "intention": "Petition",
      "is_petition": true,
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 3
    }
  ],
  "decade_count": 0,
  "filled_prayers": [],
  "hail_mary_count": 0,
  "is_complete": true,
  "missing_prayers": [],
  "petition_days": 27,
  "plain_text": "",
  "prayer_count": 0,
  "step_count": 0,
  "steps": [],
  "summary": "A 54 day novena: 27 days of petition then 27 of thanksgiving.",
  "thanksgiving_days": 27,
  "view": "plan"
}
```

### Get the mysteries

Get the mysteries to meditate on: the five of one set, all twenty, or whichever set today calls for. Each carries its scripture reference, the passage itself, and the fruit it is prayed for, as plain text and as HTML. Asking for today reads the calendar first, so the answer follows the liturgical season rather than the day of the week.

**Inputs**

- Which mysteries (`mysteries`, text): Which set to read. Today reads the calendar first, so it follows the liturgical season rather than the weekday. One of: `today` (Today's mysteries), `joyful` (The Joyful Mysteries), `sorrowful` (The Sorrowful Mysteries), `glorious` (The Glorious Mysteries), `luminous` (The Luminous Mysteries), `all` (All twenty). Default: `today`.

**Outputs**

- `count` (number): How many mysteries came back.
- `date` (text): The day whose set this is, when today was asked for. Empty otherwise.
- `display_date` (text): The same day written out, or empty.
- `mysteries` (list): The mysteries, in the order they are prayed within each set.
- `mystery_sets` (list): Which sets they belong to.
- `requested` (text): What was asked for.
- `season` (text): The liturgical season of that day, or empty.
- `summary` (text): What came back, in one sentence.

**Example output**

```json
{
  "count": 5,
  "date": "2026-09-13",
  "display_date": "September 13, 2026",
  "mysteries": [
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 1,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Resurrection of Jesus Christ",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 2,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Ascension of Jesus to Heaven",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 3,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Descent of Holy Spirit",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 4,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Assumption of the Blessed Virgin Mary into Heaven",
      "verse": "Luke 24:1-5"
    },
    {
      "fruit": "Faith",
      "fruit_phrase": "Fruit of the mystery: Faith",
      "html": "<p>But at daybreak on the first day of the week <br />\nthey took the spices they had prepared and went to the tomb.</p>",
      "mysteries": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "number": 5,
      "text": "But at daybreak on the first day of the week they took the spices they had prepared and went to the tomb.",
      "title": "The Coronation of the Blessed Virgin Mary, Queen of Heaven and Earth",
      "verse": "Luke 24:1-5"
    }
  ],
  "mystery_sets": [
    "Glorious"
  ],
  "requested": "today",
  "season": "Ordinary Time",
  "summary": "5 mysteries from Glorious."
}
```

### List the rosary calendar

Browse the year of rosary days the service publishes, filtered by mysteries, season, weekday or month, for building a schedule or counting how a year falls. This route is served from a different file than the daily ones and can be a year behind them, so the result reports which years it actually covers and whether the current one is among them; use Find the next rosary day when you need dates you can rely on being current.

**Inputs**

- Mysteries (`mysteries`, text): Keep only days that pray this set. Leave empty for any. One of: `Joyful` (The Joyful Mysteries), `Sorrowful` (The Sorrowful Mysteries), `Glorious` (The Glorious Mysteries), `Luminous` (The Luminous Mysteries).
- Season (`season`, text): Keep only days in this liturgical season. Leave empty for any. One of: `Advent`, `Christmas`, `Ordinary Time`, `Lent`, `Triduum`, `Easter`.
- Weekday (`weekday`, text): Keep only days that fall on this weekday. Leave empty for any. One of: `Sunday`, `Monday`, `Tuesday`, `Wednesday`, `Thursday`, `Friday`, `Saturday`.
- Month (`month`, text): Keep only days in this month. A number from 1 to 12 or a name such as September. Leave empty for the whole year.
- Order (`order`, text): Whether to list the days forwards or backwards. One of: `date` (Oldest first), `date_desc` (Newest first). Default: `date`.
- How many days (`limit`, number): How many days to return. The calendar route always sends a whole year, so this trims what the step hands on rather than what is fetched. From 1 to 366. Default: `30`.

**Outputs**

- `count` (number): How many days came back.
- `covers_current_year` (true/false): Whether the calendar covers the current year. False means this route is lagging the daily ones and its dates are historical.
- `current_year` (text): The current year in the service's own timezone, for comparing against the years covered.
- `days` (list): The days that matched, up to the limit.
- `matched_count` (number): How many days matched the filters, before the limit was applied.
- `summary` (text): What came back, in one sentence.
- `total_count` (number): How many days the published calendar holds altogether.
- `truncated` (true/false): True when more days matched than the limit allowed through.
- `with_audio_count` (number): How many of the days returned have a recording.
- `years_covered` (list): Which years the calendar actually covers. Read this rather than assuming it is the current one.

**Example output**

```json
{
  "count": 3,
  "covers_current_year": false,
  "current_year": "2026",
  "days": [
    {
      "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
      "date": "2026-09-13",
      "date_key": "091326",
      "display_date": "September 13, 2026",
      "has_audio": true,
      "mystery": "Glorious",
      "mystery_set": "The Glorious Mysteries",
      "season": "Ordinary Time",
      "summary": "Sunday, September 13, 2026: the Glorious Mysteries in Ordinary Time.",
      "weekday": "Sunday",
      "youtube_id": "5Q-WX-uDIWs",
      "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
    },
    {
      "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
      "date": "2026-09-14",
      "date_key": "091426",
      "display_date": "September 14, 2026",
      "has_audio": true,
      "mystery": "Joyful",
      "mystery_set": "The Joyful Mysteries",
      "season": "Ordinary Time",
      "summary": "Monday, September 14, 2026: the Joyful Mysteries in Ordinary Time.",
      "weekday": "Monday",
      "youtube_id": "5Q-WX-uDIWs",
      "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
    },
    {
      "audio_url": "https://op3.dev/e/archive.org/download/daily-rosary-collection/sunday_glorious_mysteries.mp3",
      "date": "2026-09-15",
      "date_key": "091526",
      "display_date": "September 15, 2026",
      "has_audio": true,
      "mystery": "Sorrowful",
      "mystery_set": "The Sorrowful Mysteries",
      "season": "Ordinary Time",
      "summary": "Tuesday, September 15, 2026: the Sorrowful Mysteries in Ordinary Time.",
      "weekday": "Tuesday",
      "youtube_id": "5Q-WX-uDIWs",
      "youtube_url": "https://youtu.be/5Q-WX-uDIWs"
    }
  ],
  "matched_count": 52,
  "summary": "3 of 52 matching days from the 2025 calendar. This route does not cover 2026: it is published from a different file than the daily routes and can lag them by a year.",
  "total_count": 365,
  "truncated": true,
  "with_audio_count": 3,
  "years_covered": [
    "2025"
  ]
}
```
