{"openapi":"3.1.0","info":{"title":"Shepherd's Message — Delivery API","version":"1.0.0","description":"Published content only, and read-only apart from one play count the embed widget sends. Every successful read carries x-sm-content-version, which moves whenever a sermon's record or transcript changes; lists, series, and the embed details can change without it moving. Sermon records and transcripts are cached at the edge under that version, so a publish is visible on the next request with no purge. Only those two carry x-sm-cache, which says whether the response came from that cache. A pk_test_ key reads the live library plus the sermons your church published from test mode, and its responses are never cached; a pk_live_ key never sees those test sermons."},"servers":[{"url":"https://cdn.shepherdsmessage.com","description":"delivery plane (pk_ keys)"}],"tags":[{"name":"Sermons","description":"Your published sermons, one at a time or as a list you can filter and page through, with their transcripts."},{"name":"Series","description":"The series your sermons belong to, each with its sermons in order."},{"name":"Speakers","description":"The speakers in your library, with how many sermons each has published."},{"name":"Tags","description":"The topics your sermons are tagged with."},{"name":"Search","description":"Find sermons by what was said in them."},{"name":"Scripture","description":"Find the sermons that cite a passage."},{"name":"Church","description":"What the embed widget needs to show your sermons as your own: your name, colors, and where the audio is."},{"name":"Podcast","description":"Your podcast feed, for podcast apps."}],"components":{"securitySchemes":{"pkKey":{"type":"http","scheme":"bearer","description":"A pk_ delivery key."}}},"paths":{"/v1/sermons":{"get":{"operationId":"listSermons","tags":["Sermons"],"summary":"List published sermons","description":"Your published sermons, newest first, each as its full record. Narrow the list with the filters (speaker, series, tag, service, year, passage, updated_since), and page through it with `cursor`.","security":[{"pkKey":[]}],"parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","minimum":1,"maximum":100,"default":25},"description":"How many sermons to return, 1 to 100; 25 when left out. More than 100 gives you 100, and 0, a negative number, or anything that is not a number gives you 25."},{"name":"cursor","in":"query","required":false,"schema":{"type":"string"},"description":"The `next_cursor` of the page before, to get the page after it. Leave it out for the first page. One that has been tampered with answers 400 `bad_cursor`."},{"name":"speaker","in":"query","required":false,"schema":{"type":"string"},"description":"Only this speaker's sermons: an `id` from `GET /v1/speakers`."},{"name":"series","in":"query","required":false,"schema":{"type":"string"},"description":"Only this series: a `slug` from `GET /v1/series`."},{"name":"service","in":"query","required":false,"schema":{"type":"string"},"description":"Only sermons from this service: one of your service ids, as a sermon's `service` gives it."},{"name":"year","in":"query","required":false,"schema":{"type":"string","pattern":"^[0-9]{4}$"},"description":"Only sermons preached in this year.","example":"2026"},{"name":"tag","in":"query","required":false,"schema":{"type":"string"},"description":"Only sermons with this tag, exactly as it appears in a sermon's `tags`. Each request looks through up to 500 of your sermons, newest first, for matches, so a rare tag can give a short page, or an empty one with `has_more` still true: keep following `next_cursor` until `has_more` is false."},{"name":"passage","in":"query","required":false,"schema":{"type":"string"},"description":"Only sermons that cite a verse in this passage. A passage of the Bible in OSIS: a book (`John`), a chapter (`John.3`), a verse (`John.3.16`), or two of those joined by a hyphen for a range (`Rom.8.28-Rom.8.39`, `Rom.8-Rom.9`). Books are OSIS codes such as `Ps` and `1Cor`, or book names, and a range may cross books. A book that does not exist, or a chapter or verse past its end, answers 400 `bad_passage`. Sermons that cite any verse inside it match.","example":"John.3.16"},{"name":"updated_since","in":"query","required":false,"schema":{"type":"string","format":"date-time"},"description":"Only sermons published or changed after this moment (ISO 8601). On the first page, `deleted` then lists the sermons that left your library in the same window. `deleted` and `deleted_complete` come only on a request with `updated_since` and no `cursor`, and they cover your whole library whatever other filters you send. Use it to keep a copy in sync without fetching everything again."}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The sermon's id in every request and link."},"title":{"type":"string","description":"The sermon's title."},"date":{"type":"string","description":"The day it was preached, YYYY-MM-DD, on your church's calendar."},"service":{"description":"The service it was preached at: one of your service ids.","type":"string"},"speaker":{"description":"The speaker's name as shown. To list one speaker's sermons, pass that speaker's `id` from `GET /v1/speakers` as `speaker=`.","type":"string"},"series":{"description":"The series it belongs to; `ref` is the series' slug.","type":"object","properties":{"ref":{"type":"string","description":"The series' `slug`."}},"required":["ref"],"additionalProperties":false},"tags":{"description":"The topics it is tagged with.","type":"array","items":{"type":"string"}},"passages":{"description":"The scripture it cites. The one marked `primary` is its text.","type":"array","items":{"type":"object","properties":{"book":{"type":"string","description":"The book's name, such as `Psalms`."},"startChapter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The chapter it starts in."},"startVerse":{"description":"The verse it starts at. Absent or null for a whole chapter.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"endChapter":{"description":"The chapter it ends in. Absent when that is the chapter it starts in.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"endVerse":{"description":"The verse it ends at. Absent or null for a whole chapter.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"osis":{"description":"The passage in OSIS form, such as `Ps.23.1-Ps.23.6`: what `passage=` and `GET /v1/passages/{osis}` take.","type":"string"},"source":{"type":"string","enum":["user","extracted","suggested"],"description":"`user`: named by your church. `extracted`: heard in the sermon. `suggested`: proposed and kept at review."},"primary":{"description":"The sermon's text, rather than a passage it also cites. Absent when false.","type":"boolean"},"read":{"deprecated":true,"description":"Retired. Ignore it.","type":"boolean"},"confidence":{"deprecated":true,"description":"Retired. Ignore it.","type":"number"}},"required":["book","startChapter","source"],"additionalProperties":false}},"video":{"description":"Its video: `provider` and the provider's own `id`.","type":"object","properties":{"provider":{"description":"Where the video is hosted. Absent means `youtube`.","type":"string","enum":["youtube","vimeo"]},"id":{"type":"string","description":"The video's own id at that provider."}},"required":["id"],"additionalProperties":false},"audioKey":{"description":"Where its audio is: a path such as `audio/k7Qm2xPa.mp3`. Join it to `media_base` from `GET /v1/embed` with a slash.","type":"string"},"durationSec":{"description":"How long the recording is, in whole seconds.","type":"number"},"trackNumber":{"description":"Your church's own catalog number for it.","type":"number"},"transcriptPdfKey":{"description":"Where its printed transcript is: a path such as `pdf/k7Qm2xPa.pdf`, joined to `media_base` the same way.","type":"string"},"summary":{"description":"A paragraph about it, written with AI and then reviewed and approved by your church. Where you show it, say so: the hosted library adds the line `Written with AI, and then reviewed and approved by` and your church's name.","type":"string"},"pullQuotes":{"description":"Lines from it, chosen to quote.","type":"array","items":{"type":"string"}}},"required":["slug","title","date"],"additionalProperties":false},"description":"The sermons on this page, newest first."},"has_more":{"type":"boolean","description":"More sermons follow this page."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Pass it as `cursor` for the next page; null on the last."},"deleted":{"description":"Slugs that left the published set since `updated_since`. Sent only on a request with `updated_since` and no `cursor`, and for the whole library whatever other filters were sent.","type":"array","items":{"type":"string"}},"deleted_complete":{"description":"Whether `deleted` is exhaustive for the window. False when `updated_since` is not a valid date (which is otherwise accepted), when it predates the deletion-retention window, or when more deletions occurred than one response lists: reconcile against a full pull instead of trusting the delta.","type":"boolean"}},"required":["data","has_more","next_cursor"],"additionalProperties":false}}}},"400":{"description":"`bad_cursor`: the cursor was not one this API gave you. `bad_passage`: `passage` is not a passage of the Bible.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/sermons/{slug}":{"get":{"operationId":"getSermon","tags":["Sermons"],"summary":"Get a sermon","description":"One published sermon's record: its details, the scripture it cites, and the paths to its audio and printed transcript.","security":[{"pkKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"A sermon's `slug`."}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}},"x-sm-cache":{"description":"`HIT` when the answer came from the edge cache, `MISS` when it was read fresh.","schema":{"type":"string","enum":["HIT","MISS"]}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","description":"The sermon's id in every request and link."},"title":{"type":"string","description":"The sermon's title."},"date":{"type":"string","description":"The day it was preached, YYYY-MM-DD, on your church's calendar."},"service":{"description":"The service it was preached at: one of your service ids.","type":"string"},"speaker":{"description":"The speaker's name as shown. To list one speaker's sermons, pass that speaker's `id` from `GET /v1/speakers` as `speaker=`.","type":"string"},"series":{"description":"The series it belongs to; `ref` is the series' slug.","type":"object","properties":{"ref":{"type":"string","description":"The series' `slug`."}},"required":["ref"],"additionalProperties":false},"tags":{"description":"The topics it is tagged with.","type":"array","items":{"type":"string"}},"passages":{"description":"The scripture it cites. The one marked `primary` is its text.","type":"array","items":{"type":"object","properties":{"book":{"type":"string","description":"The book's name, such as `Psalms`."},"startChapter":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"The chapter it starts in."},"startVerse":{"description":"The verse it starts at. Absent or null for a whole chapter.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"endChapter":{"description":"The chapter it ends in. Absent when that is the chapter it starts in.","type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},"endVerse":{"description":"The verse it ends at. Absent or null for a whole chapter.","anyOf":[{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991},{"type":"null"}]},"osis":{"description":"The passage in OSIS form, such as `Ps.23.1-Ps.23.6`: what `passage=` and `GET /v1/passages/{osis}` take.","type":"string"},"source":{"type":"string","enum":["user","extracted","suggested"],"description":"`user`: named by your church. `extracted`: heard in the sermon. `suggested`: proposed and kept at review."},"primary":{"description":"The sermon's text, rather than a passage it also cites. Absent when false.","type":"boolean"},"read":{"deprecated":true,"description":"Retired. Ignore it.","type":"boolean"},"confidence":{"deprecated":true,"description":"Retired. Ignore it.","type":"number"}},"required":["book","startChapter","source"],"additionalProperties":false}},"video":{"description":"Its video: `provider` and the provider's own `id`.","type":"object","properties":{"provider":{"description":"Where the video is hosted. Absent means `youtube`.","type":"string","enum":["youtube","vimeo"]},"id":{"type":"string","description":"The video's own id at that provider."}},"required":["id"],"additionalProperties":false},"audioKey":{"description":"Where its audio is: a path such as `audio/k7Qm2xPa.mp3`. Join it to `media_base` from `GET /v1/embed` with a slash.","type":"string"},"durationSec":{"description":"How long the recording is, in whole seconds.","type":"number"},"trackNumber":{"description":"Your church's own catalog number for it.","type":"number"},"transcriptPdfKey":{"description":"Where its printed transcript is: a path such as `pdf/k7Qm2xPa.pdf`, joined to `media_base` the same way.","type":"string"},"summary":{"description":"A paragraph about it, written with AI and then reviewed and approved by your church. Where you show it, say so: the hosted library adds the line `Written with AI, and then reviewed and approved by` and your church's name.","type":"string"},"pullQuotes":{"description":"Lines from it, chosen to quote.","type":"array","items":{"type":"string"}}},"required":["slug","title","date"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`not_found`: no published sermon has this slug.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/sermons/{slug}/transcript":{"get":{"operationId":"getTranscript","tags":["Sermons"],"summary":"Get a sermon's transcript","description":"A sermon's transcript, a sentence at a time with the second each one starts at. Sentences with the same `para` form one paragraph.","security":[{"pkKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"A sermon's `slug`."}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}},"x-sm-cache":{"description":"`HIT` when the answer came from the edge cache, `MISS` when it was read fresh.","schema":{"type":"string","enum":["HIT","MISS"]}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","description":"The sermon's `slug`."},"segments":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"The sentence's anchor, such as `t-12`. Your library's sermon page gives that id to the sentence, so `#t-12` on its address points at it."},"text":{"type":"string","description":"The sentence."},"start":{"type":"number","description":"Seconds from the start of the audio."},"para":{"type":"number","description":"Which paragraph it belongs to, counting from 0: segments with the same `para` form one paragraph."}},"required":["id","text","start","para"],"additionalProperties":false},"description":"The transcript, a sentence at a time, in order."}},"required":["slug","segments"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`not_found`: no published sermon has this slug.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/sermons/{slug}/video":{"get":{"operationId":"getSermonVideo","tags":["Sermons"],"summary":"Get a sermon's hosted video","description":"The links to play a published sermon's own hosted video: the playlist, a poster picture, and the video's length and size. The links expire (see `expiresAt`), so a site asks each time it shows the player rather than storing them. A sermon whose video is a YouTube or Vimeo link has no hosted video; that link is `video` on its record.","security":[{"pkKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"A sermon's `slug`."}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"cache-control":{"description":"`private, max-age=600`: a browser may reuse the links for ten minutes.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"src":{"type":"string","description":"The video's HLS master playlist, as a full link. Give it to any HLS player. The link carries a short-lived token."},"poster":{"type":"string","description":"A still picture from the video, as a full link, for the player's poster."},"durationMs":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"How long the video runs, in milliseconds. `null` when it is not known."},"width":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The picture's width in pixels. `null` when it is not known."},"height":{"anyOf":[{"type":"number"},{"type":"null"}],"description":"The picture's height in pixels. `null` when it is not known."},"expiresAt":{"type":"string","description":"The moment the links stop working (ISO 8601). Ask again for fresh links when you need them; do not store these."}},"required":["src","poster","durationMs","width","height","expiresAt"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`no_video`: the sermon has no hosted video that is ready to play, or it is not published.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/sermons/{slug}/plays":{"post":{"operationId":"countPlay","tags":["Sermons"],"summary":"Count a play","description":"Count one play of a published sermon. The embed widget sends it once per page load, the first time the audio starts. No body; nothing is returned.","security":[{"pkKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"A sermon's `slug`."}],"responses":{"204":{"description":"Counted","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`not_found`: no published sermon has this slug.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/series":{"get":{"operationId":"listSeries","tags":["Series"],"summary":"List series","description":"Your series, in order of `slug`, with no paging. A series with no published sermons yet is listed too.","security":[{"pkKey":[]}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The series' id in every request and link."},"title":{"type":"string","description":"The series' name as shown."}},"required":["slug","title"],"additionalProperties":false},"description":"Every series, in order of `slug`, including any with no published sermons yet."},"has_more":{"type":"boolean","description":"Always false: this list is not paged."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Always null: this list is not paged."}},"required":["data","has_more","next_cursor"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/series/{slug}":{"get":{"operationId":"getSeries","tags":["Series"],"summary":"Get a series and its sermons","description":"One series with its published sermons, oldest first, each as a short summary. Ask `GET /v1/sermons/{slug}` for a sermon's full record.","security":[{"pkKey":[]}],"parameters":[{"name":"slug","in":"path","required":true,"schema":{"type":"string"},"description":"A series' `slug`."}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"slug":{"type":"string","description":"The series' id in every request and link."},"title":{"type":"string","description":"The series' name as shown."},"sermons":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The sermon's `slug`: ask `GET /v1/sermons/{slug}` for the rest."},"title":{"type":"string","description":"The sermon's title."},"sermon_date":{"type":"string","description":"The day it was preached, YYYY-MM-DD."}},"required":["slug","title","sermon_date"],"additionalProperties":false},"description":"Its published sermons, oldest first, so they read in order."}},"required":["slug","title","sermons"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`not_found`: you have no series with this slug.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/speakers":{"get":{"operationId":"listSpeakers","tags":["Speakers"],"summary":"List speakers","description":"The speakers in your library, in order of `id`, with no paging. A speaker with no published sermons is listed too, with a `published_count` of 0.","security":[{"pkKey":[]}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"id":{"type":"string","description":"Use it as `speaker=` on `GET /v1/sermons`."},"display_name":{"type":"string","description":"The name as shown."},"role_title":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Their title in your church, if you gave one."},"published_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many published sermons they have."}},"required":["id","display_name","role_title","published_count"],"additionalProperties":false},"description":"Every speaker in your library, in order of `id`, whether or not they have published a sermon."},"has_more":{"type":"boolean","description":"Always false: this list is not paged."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Always null: this list is not paged."}},"required":["data","has_more","next_cursor"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/tags":{"get":{"operationId":"listTags","tags":["Tags"],"summary":"List tags","description":"Lists your approved tags, most used first, with no paging. Use a tag's text as `tag=` on `GET /v1/sermons`.","security":[{"pkKey":[]}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"tag":{"type":"string","description":"The tag, as `tag=` on `GET /v1/sermons` takes it."},"usage_count":{"type":"integer","minimum":-9007199254740991,"maximum":9007199254740991,"description":"How many sermons were tagged with it as they were processed. Editing or removing a sermon doesn't lower it, so read it as a rough measure."}},"required":["tag","usage_count"],"additionalProperties":false},"description":"Your approved tags, the most used first."},"has_more":{"type":"boolean","description":"Always false: this list is not paged."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Always null: this list is not paged."}},"required":["data","has_more","next_cursor"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/embed":{"get":{"operationId":"getEmbed","tags":["Church"],"summary":"Get your church's details for the widget","description":"Your church's name, colors and language, and `media_base`, the address your audio and transcript PDFs are served from. The embed widget reads it, and so can any page that shows your sermons as your own.","security":[{"pkKey":[]}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"church":{"type":"object","properties":{"name":{"type":"string","description":"Your church's name."},"short_name":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Its short name, if you set one."},"website":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Your website's address, if you gave one."}},"required":["name","short_name","website"],"additionalProperties":false,"description":"How your church names itself."},"locale":{"type":"string","description":"How your church writes dates, as a language tag such as `en-US`."},"badged":{"type":"boolean","description":"The Library tier carries the product badge."},"media_base":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Base for audio and PDF URLs, with no trailing slash: the church's media hostname, or `/media` on its library hostname when it has none. Join it to a media path with a slash (`{media_base}/audio/{file}`) rather than resolving against it, since it can carry a path. Null only when the church has neither hostname."},"theme":{"type":"object","properties":{"primary":{"type":"string","description":"The fill for buttons. The label on it stays readable."},"primary_deep":{"type":"string","description":"The button fill when it is pointed at: one step deeper."},"primary_text":{"type":"string","description":"For links, small accents, and the focus ring, readable on the page behind them."},"dark":{"type":"object","properties":{"primary":{"type":"string","description":"The fill for buttons. The label on it stays readable."},"primary_deep":{"type":"string","description":"The button fill when it is pointed at: one step deeper."},"primary_text":{"type":"string","description":"For links, small accents, and the focus ring, readable on the page behind them."}},"required":["primary","primary_deep","primary_text"],"additionalProperties":false,"description":"The same three shades for the dark theme."}},"required":["primary","primary_deep","primary_text","dark"],"additionalProperties":false,"description":"Your color, as shades that stay readable on the page. The three at this level are for the light theme."}},"required":["church","locale","badged","media_base","theme"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`not_found`: the church could not be found.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/search":{"get":{"operationId":"searchSermons","tags":["Search"],"summary":"Search sermons","description":"Finds the sermons whose title, summary, or transcript contains `q`, matched as one phrase and with word forms: `forgive` finds `forgiveness`. It returns at most 50 sermons, in no promised order, and never pages: `has_more` is always false. It takes no other filter.","security":[{"pkKey":[]}],"parameters":[{"name":"q","in":"query","required":true,"schema":{"type":"string"},"description":"What to look for."}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The sermon's `slug`: ask `GET /v1/sermons/{slug}` for the rest."},"title":{"type":"string","description":"The sermon's title."}},"required":["slug","title"],"additionalProperties":false},"description":"The sermons that matched, up to 50, in no promised order."},"has_more":{"type":"boolean","description":"Always false: this list is not paged."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Always null: this list is not paged."}},"required":["data","has_more","next_cursor"],"additionalProperties":false}}}},"400":{"description":"`missing_query`: `q` was left out or empty.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/passages/{osis}":{"get":{"operationId":"listSermonsByPassage","tags":["Scripture"],"summary":"List the sermons that cite a passage","description":"The published sermons that cite any verse in the passage, newest first, each as a short summary. It never pages.","security":[{"pkKey":[]}],"parameters":[{"name":"osis","in":"path","required":true,"schema":{"type":"string"},"description":"A passage of the Bible in OSIS: a book (`John`), a chapter (`John.3`), a verse (`John.3.16`), or two of those joined by a hyphen for a range (`Rom.8.28-Rom.8.39`, `Rom.8-Rom.9`). Books are OSIS codes such as `Ps` and `1Cor`, or book names, and a range may cross books. A book that does not exist, or a chapter or verse past its end, answers 400 `bad_passage`. Sermons that cite any verse inside it match.","example":"John.3.16"}],"responses":{"200":{"description":"OK","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"data":{"type":"array","items":{"type":"object","properties":{"slug":{"type":"string","description":"The sermon's `slug`: ask `GET /v1/sermons/{slug}` for the rest."},"title":{"type":"string","description":"The sermon's title."},"sermon_date":{"type":"string","description":"The day it was preached, YYYY-MM-DD."}},"required":["slug","title","sermon_date"],"additionalProperties":false},"description":"The sermons that cite the passage, newest first."},"has_more":{"type":"boolean","description":"Always false: this list is not paged."},"next_cursor":{"anyOf":[{"type":"string"},{"type":"null"}],"description":"Always null: this list is not paged."}},"required":["data","has_more","next_cursor"],"additionalProperties":false}}}},"400":{"description":"`bad_passage`: the path is not a passage of the Bible.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}},"/v1/feeds/podcast.xml":{"get":{"operationId":"getPodcastFeed","tags":["Podcast"],"summary":"Get the podcast feed","description":"Your podcast feed as RSS, the same one your church's podcast apps follow. There is no feed until the podcast is switched on in Settings and a sermon has been published.","security":[{"pkKey":[]}],"responses":{"200":{"description":"RSS/XML","headers":{"x-request-id":{"description":"This request's id. Quote it if you ask for help.","schema":{"type":"string"}},"x-sm-content-version":{"description":"Moves whenever a sermon's record or transcript changes. Lists, series, and the embed details can change without it moving.","schema":{"type":"string"}}},"content":{"application/rss+xml":{"schema":{"type":"string"}}}},"401":{"description":"`missing_api_key`: no key was sent. `invalid_api_key`: the key is wrong or has been revoked. `wrong_key_plane`: it is a secret `sk_` key, and this API takes only `pk_` keys.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"404":{"description":"`no_podcast_feed`: your church has no podcast feed yet.","content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}},"410":{"description":"Your church's library is switched off, so nothing is served.","content":{"text/plain":{"schema":{"type":"string"}}}},"429":{"description":"`rate_limited`: this key has sent too many requests this minute. `fair_use_exceeded`: your church has used well past its daily allowance, and requests pause until your church's midnight.","headers":{"Retry-After":{"description":"Seconds to wait before trying again: 60 for `rate_limited`, and the time left until your church's midnight for `fair_use_exceeded`.","schema":{"type":"integer"}}},"content":{"application/json":{"schema":{"$schema":"https://json-schema.org/draft/2020-12/schema","type":"object","properties":{"error":{"type":"object","properties":{"type":{"type":"string"},"code":{"type":"string"},"message":{"type":"string"},"param":{"type":"string"},"doc_url":{"description":"Not sent yet.","type":"string"}},"required":["type","code","message"],"additionalProperties":false}},"required":["error"],"additionalProperties":false}}}}}}}}}