PodcastIndex Recent API

Find recent additions to the index

OpenAPI Specification

podcastindex-recent-api-openapi.yml Raw ↑
openapi: 3.0.2
info:
  version: 1.12.1
  title: PodcastIndex.org Add Recent API
  termsOfService: https://github.com/Podcastindex-org/legal/blob/main/TermsOfService.md
  contact:
    email: info@podcastindex.org
    url: https://podcastindex.org/
  license:
    name: MIT
    url: https://github.com/Podcastindex-org/docs-api/blob/master/LICENSE
  x-logo:
    url: logo.svg
    href: /
  description: "Download the openapi spec in [json](pi_api.json) or [yaml](pi_api.yaml) format.\n\n# Overview\n\nThe Podcast Index (Podcast Index LLC) is a software developer focused partnership that provides tools and data to\nanyone who aspires to create new and exciting Podcast experiences without the heavy lifting of indexing,\naggregation and data management.\n\n# Example Code\n\nUsers have provided example code for working the API in the following languages:\n\n  - [AWS Lambda - python](https://github.com/tbowers/python-podcastindex-org-lambda)\n  - [Bash](https://github.com/suorcd/Bash-podcastindex-org-example)\n  - [C#](https://github.com/ComicStrip/csharp-podcastindex-org-example)\n  - [Elisp](https://github.com/sabexx/elisp-example)\n  - [Flutter/Dart](https://github.com/crediblecreative/flutter-dart-podcastindex-org-example)\n  - [Go](https://github.com/ComicStrip/Go-podcastindex-org-example)\n  - [Go](https://github.com/kilobit/podcast-index-client)\n  - [Java](https://github.com/ComicStrip/Java-podcastindex-org-example)\n  - [Java](https://github.com/stucoates/PodcastIndexJavaClient)\n  - [Node.js](https://github.com/ComicStrip/node.js-podcastindex-org-example)\n  - [PHP](https://github.com/Podcastindex-org/example-code)\n  - [Python](https://github.com/tbowers/python-podcastindex-org-example)\n  - [Swift](https://github.com/ComicStrip/Swift-podcastindex-org-example)\n  - ... [More](https://github.com/Podcastindex-org-Examples)\n\nDon't see your desired language, create an example repo and create a\n[Pull Request](https://github.com/Podcastindex-org/docs-api/pulls) with a link to your example code project!\n\n# Libraries\n\nUser created libraries for working with the API:\n\n  - Java\n      - [podcast4j](https://github.com/yusufyilmazfr/podcast4j)\n  - .NET\n      - [PodcastIndexSharp](https://www.nuget.org/packages/PodcastIndexSharp)\n  - Node.js/npm/yarn\n      - [podcast-index-api](https://www.npmjs.com/package/podcast-index-api)\n      - [podcastdx-client](https://www.npmjs.com/package/podcastdx-client)\n  - PHP\n      - [podcastindex-php](https://github.com/LowSociety/podcastindex-php)\n  - Python/pip\n      - [python-podcastindex](https://pypi.org/project/python-podcastindex/)\n  - R\n      - [podindexr](https://github.com/rpodcast/podindexr)\n  - Ruby\n      - [podcast-index](https://github.com/jasonyork/podcast-index)\n  - Swift\n      - [PodcastIndexKit](https://github.com/SparrowTek/PodcastIndexKit)\n  - Kotlin\n      - [PodcastIndex-SDK](https://github.com/mr3y-the-programmer/PodcastIndex-SDK)\n  - Go\n      - [podcastindex](https://github.com/jjgmckenzie/podcastindex)\n      - [podcastindex-go](https://github.com/koalahl/podcastindex-go)\n\nAre we missing a library? Did you create one for a different language? Create a\n[Pull Request](https://github.com/Podcastindex-org/docs-api/pulls) with a link to the new library!\n\n# Postman\n\nA collection file for use in the [Postman](https://www.postman.com/) application is available for this API.\n\n  1. Download the contents of the [Postman Docs](https://github.com/Podcastindex-org/docs-api/tree/master/Postman%20Docs) folder.\n  2. Import the `PodcastIndex.postman_collection.json` collection to Postman\n  3. Import the `PodcastIndexOrgEnvironment.postman_environment.json` to Postman\n  4. Click \"Environments\" on the left sidebar\n  5. Select the checkbox next to the PodcastIndexOrgEnvironment entry\n  6. Set `AuthKey` and `SeceretKey` values under the \"Current Value\" column using your API information\n  7. Click \"Collections\" from the sidebar\n  8. Select PodcastIndex\n  9. Select and run the endpoint to test\n\n# Contributing\n\nThe source for this API documentation is available at\n[https://github.com/Podcastindex-org/docs-api](https://github.com/Podcastindex-org/docs-api).\nSubmit an Issue or create a Pull Request.\n\n# Authentication Details\n\nSending an API request is easy. We use an Amazon-style request authorization token to secure each request.\n\n\nRegister for a free API key at https://api.podcastindex.org/\n\n\nThese headers parameters are required for each request: `User-Agent`, `X-Auth-Date`, `X-Auth-Key`, `Authorization`\n\n\nSee [Authentication](#auth) for description of parameters.\n\n# Legal\n\nLegal\n\n  - [Privacy Policy](https://github.com/Podcastindex-org/legal/blob/main/PrivacyPolicy.md)\n  - [Terms of Service](https://github.com/Podcastindex-org/legal/blob/main/TermsOfService.md)\n  - [License](https://github.com/Podcastindex-org/docs-api/blob/master/LICENSE)\n"
servers:
- url: https://api.podcastindex.org/api/1.0
tags:
- name: Recent
  description: 'Find recent additions to the index

    '
paths:
  /recent/episodes:
    get:
      tags:
      - Recent
      summary: Episodes
      description: 'This call returns the most recent `max` number of episodes globally across the whole index,

        in reverse chronological order.



        Example: https://api.podcastindex.org/api/1.0/recent/episodes?max=7&pretty

        '
      operationId: recent/episodes
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/max_recent_episodes'
      - $ref: '#/components/parameters/excludeString'
      - $ref: '#/components/parameters/before'
      - $ref: '#/components/parameters/fulltext'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/recent_episodes'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /recent/feeds:
    get:
      tags:
      - Recent
      summary: Feeds
      description: "This call returns the most recent `max` feeds, in reverse chronological order.\n\n\nExamples:\n\n  - https://api.podcastindex.org/api/1.0/recent/feeds?pretty\n  - https://api.podcastindex.org/api/1.0/recent/feeds?max=20&cat=102,health&lang=de,ja&pretty\n"
      operationId: recent/feeds
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/max_recent_feeds'
      - $ref: '#/components/parameters/since'
      - $ref: '#/components/parameters/lang'
      - $ref: '#/components/parameters/cat'
      - $ref: '#/components/parameters/notcat'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/recent_feeds'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /recent/newfeeds:
    get:
      tags:
      - Recent
      summary: New Feeds
      description: "This call returns every new feed added to the index over the past 24 hours in reverse chronological order.\n\n\nExamples:\n\n  - https://api.podcastindex.org/api/1.0/recent/newfeeds?pretty\n  - https://api.podcastindex.org/api/1.0/recent/newfeeds?pretty&since=1613805000\n  - https://api.podcastindex.org/api/1.0/recent/newfeeds?feedid=2653471&pretty\n  - https://api.podcastindex.org/api/1.0/recent/newfeeds?feedid=2653471&desc&pretty\n"
      operationId: recent/newfeeds
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/max_recent_feeds'
      - $ref: '#/components/parameters/since'
      - $ref: '#/components/parameters/feedid_newfeeds'
      - $ref: '#/components/parameters/desc'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/recent_newfeeds'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /recent/newvaluefeeds:
    get:
      tags:
      - Recent
      summary: New Value Feeds
      description: 'This call returns feeds that have added a `value` tag in reverse chronological order.



        Example: https://api.podcastindex.org/api/1.0/recent/newvaluefeeds?pretty

        '
      operationId: recent/newvaluefeeds
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/max_recent_feeds'
      - $ref: '#/components/parameters/since'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/recent_newvaluefeeds'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /recent/data:
    get:
      tags:
      - Recent
      summary: Recent Data
      description: "This call returns every new feed and episode added to the index over the past 24 hours in reverse chronological order.\n\n\nThis is similar to `/recent/feeds` but uses the date the feed was found by the index rather than the feed's\ninternal timestamp.\n\n\nSimilar data can also be accessed using object storage root url https://tracking.podcastindex.org/current\nFor details, see [Current](#get-/static/tracking/current).\n\n\nExamples:\n\n  - https://api.podcastindex.org/api/1.0/recent/data?pretty\n  - https://api.podcastindex.org/api/1.0/recent/data?pretty&max=10\n  - https://api.podcastindex.org/api/1.0/recent/data?pretty&max=10&since=1671164867\n"
      operationId: recent/data
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/max_recent_data'
      - $ref: '#/components/parameters/since'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/recent_data'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
  /recent/soundbites:
    get:
      tags:
      - Recent
      summary: Soundbites
      description: 'This call returns the most recent `max` soundbites that the index has discovered.



        A soundbite consists of an enclosure url, a start time and a duration.

        It is documented in the [podcast namespace](https://github.com/Podcastindex-org/podcast-namespace/blob/main/docs/1.0.md#soundbite).



        Example: https://api.podcastindex.org/api/1.0/recent/soundbites?pretty

        '
      operationId: recent/soundbites
      security:
      - API-Key: []
        User-Agent: []
        Date: []
        Authorization: []
      parameters:
      - $ref: '#/components/parameters/max_recent_soundbites'
      - $ref: '#/components/parameters/pretty'
      responses:
        '200':
          $ref: '#/components/responses/recent_soundbites'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
components:
  schemas:
    itemCount:
      description: 'Number of items in the `items` returned in request

        '
      type: integer
      example: 1
    enclosureLength:
      description: 'The length of the item specified by the `enclosureUrl` in bytes

        '
      type: integer
      format: bytes
      example: 26385472
    max:
      description: 'Value of `max` parameter passed to request.

        '
      type: integer
      nullable: true
      example: 2
    description_feed:
      description: 'The channel-level description



        Uses the longer of the possible fields in the feed: `<description>`, `<itunes:summary>` and `<content:encoded>`

        '
      type: string
      example: 'Batman University is a seasonal podcast about you know who. It began with an analysis of episodes of “Batman: The Animated Series” but has now expanded to cover other series, movies, and media. Your professor is Tony Sindelar.'
    episodeAdded:
      description: 'The time the episode was added to the index

        '
      type: integer
      format: Unix Epoch
      example: 1613786624
    items_recent:
      description: 'List of episodes matching request

        '
      type: array
      items:
        $ref: '#/components/schemas/item_podcast_recent'
    title_feed:
      description: 'Name of the feed

        '
      type: string
      example: Batman University
    position:
      description: 'Position in data

        '
      type: integer
      example: 12843054496
    timeAdded:
      description: 'The date and time the feed was added to the index

        '
      type: integer
      format: Unix Epoch
      example: 1613786624
    items_data_obj:
      type: object
      properties:
        episodeId:
          $ref: '#/components/schemas/id_episode'
        episodeTitle:
          $ref: '#/components/schemas/title_feed'
        episodeDescription:
          $ref: '#/components/schemas/description_episode'
        episodeImage:
          $ref: '#/components/schemas/image_episode'
        episodeTimestamp:
          $ref: '#/components/schemas/datePublished'
        episodeAdded:
          $ref: '#/components/schemas/episodeAdded'
        episodeEnclosureUrl:
          $ref: '#/components/schemas/enclosureUrl'
        episodeEnclosureLength:
          $ref: '#/components/schemas/enclosureLength'
        episodeEnclosureType:
          $ref: '#/components/schemas/enclosureType'
        episodeDuration:
          $ref: '#/components/schemas/duration'
        episodeType:
          $ref: '#/components/schemas/episodeType'
        feedId:
          $ref: '#/components/schemas/id_feed'
    newestItemPublishTime:
      description: "The time the most recent episode in the feed was published.\n\n\nNote: some endpoints use `newestItemPubdate` while others use `newestItemPublishTime`. \nThey return the same information. See https://github.com/Podcastindex-org/api/issues/3 to track when the property name is updated.\n"
      type: integer
      format: Unix Epoch
      example: 1546399813
    guid:
      description: 'The unique identifier for the episode

        '
      type: string
      example: incomparable/batman/19
    description_response:
      description: 'Description of the response

        '
      type: string
      example: Found matching feed
    season:
      description: 'Season number. May be null for `liveItem`.

        '
      type: integer
      nullable: true
      example: 3
    enclosureType:
      description: 'The Content-Type for the item specified by the `enclosureUrl`

        '
      type: string
      example: audio/mp3
    items_data:
      description: 'List of recent episode item data

        '
      type: array
      items:
        $ref: '#/components/schemas/items_data_obj'
    datePublishedPretty:
      description: 'The date and time the episode was published formatted as a human readable string.



        Note: uses the PodcastIndex server local time to do conversion.

        '
      type: string
      example: January 01, 2019 9:30pm
    contentHash:
      description: 'Hash of the entire feed body

        '
      type: string
      example: a652d25b56f3e2f0e069c0cc72145a85
    enclosureUrl:
      description: 'URL/link to the episode file

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/podcast/batmanuniversity302.mp3
    image_feed:
      description: 'The channel-level image element.

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11
    feeds_data_obj:
      type: object
      properties:
        feedId:
          $ref: '#/components/schemas/id_feed'
        feedUrl:
          $ref: '#/components/schemas/url_feed'
        feedTitle:
          $ref: '#/components/schemas/title_feed'
        feedDescription:
          $ref: '#/components/schemas/description_feed'
        feedImage:
          $ref: '#/components/schemas/image_feed'
        feedLanguage:
          $ref: '#/components/schemas/language'
        feedItunesId:
          $ref: '#/components/schemas/itunesId_feed'
    status_feed:
      description: 'Status of feed after being added to index

        '
      type: string
      enum:
      - unconfirmed
      - confirmed
      example: confirmed
    trendScore:
      description: 'The ranking for how the podcast is trending in the index

        '
      type: integer
      example: 1
    feeds_recent_value:
      description: 'List of feeds matching request

        '
      type: array
      items:
        type: object
        properties:
          id:
            $ref: '#/components/schemas/id_feed'
          url:
            $ref: '#/components/schemas/url_feed'
          title:
            $ref: '#/components/schemas/title_feed'
          author:
            $ref: '#/components/schemas/author'
          image:
            $ref: '#/components/schemas/image_feed'
          newestItemPublishTime:
            $ref: '#/components/schemas/newestItemPublishTime'
          itunesId:
            $ref: '#/components/schemas/itunesId_feed'
          trendScore:
            $ref: '#/components/schemas/trendScore'
          language:
            $ref: '#/components/schemas/language'
          categories:
            $ref: '#/components/schemas/categories'
    feedCount:
      description: 'Number of items in the `feeds` returned in request

        '
      type: integer
      example: 1
    duration:
      description: 'The estimated length of the item specified by the `enclosureUrl` in seconds. Will be null for `liveItem`.

        '
      type: integer
      nullable: true
      format: seconds
      example: 54
    feeds_data:
      description: 'List of recent feed data

        '
      type: array
      items:
        $ref: '#/components/schemas/feeds_data_obj'
    nextSince:
      description: 'Value to pass as `since` parameter to get next batch of data

        '
      type: integer
      format: Unix Epoch
      example: 1613805249
    status:
      description: 'Indicates API request status

        '
      type: string
      enum:
      - 'true'
      - 'false'
      example: 'true'
    image_episode:
      description: 'The item-level image for the episode

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/imgs/logos/logo-batmanuniversity-3x.jpg?cache-buster=2019-06-11
    link_feed:
      description: 'The channel-level link in the feed

        '
      type: string
      format: URL
      example: https://www.theincomparable.com/batmanuniversity/
    feeds_recent_new:
      description: 'List of feeds matching request

        '
      type: array
      items:
        type: object
        properties:
          id:
            $ref: '#/components/schemas/id_feed'
          url:
            $ref: '#/components/schemas/url_feed'
          image:
            $ref: '#/components/schemas/image_feed'
          timeAdded:
            $ref: '#/components/schemas/timeAdded'
          status:
            $ref: '#/components/schemas/status_feed'
          contentHash:
            $ref: '#/components/schemas/contentHash'
          language:
            $ref: '#/components/schemas/language'
    episode_number:
      description: 'Episode number

        '
      type: integer
      nullable: true
      example: 19
    itunesId_feed:
      description: 'The iTunes ID of this feed if there is one, and we know what it is.

        '
      type: integer
      nullable: true
      example: 1441923632
    dateCrawled:
      description: 'The time this episode was found in the feed

        '
      type: integer
      format: Unix Epoch
      example: 1598369047
    item_podcast_recent:
      type: object
      properties:
        id:
          $ref: '#/components/schemas/id_episode'
        title:
          $ref: '#/components/schemas/title_feed'
        link:
          $ref: '#/components/schemas/link_feed'
        description:
          $ref: '#/components/schemas/description_episode'
        guid:
          $ref: '#/components/schemas/guid'
        datePublished:
          $ref: '#/components/schemas/datePublished'
        datePublishedPretty:
          $ref: '#/components/schemas/datePublishedPretty'
        dateCrawled:
          $ref: '#/components/schemas/dateCrawled'
        enclosureUrl:
          $ref: '#/components/schemas/enclosureUrl'
        enclosureType:
          $ref: '#/components/schemas/enclosureType'
        enclosureLength:
          $ref: '#/components/schemas/enclosureLength'
        explicit:
          $ref: '#/components/schemas/explicit_episode'
        episode:
          $ref: '#/components/schemas/episode_number'
        episodeType:
          $ref: '#/components/schemas/episodeType'
        season:
          $ref: '#/components/schemas/season'
        image:
          $ref: '#/components/schemas/image_episode'
        feedItunesId:
          $ref: '#/components/schemas/itunesId_feed'
        feedImage:
          $ref: '#/components/schemas/image_feed'
        feedId:
          $ref: '#/components/schemas/id_feed'
        feedTitle:
          $ref: '#/components/schemas/title_feed'
        feedLanguage:
          $ref: '#/components/schemas/language'
    since:
      description: 'Value of `since` parameter passed to request.

        '
      type: integer
      nullable: true
      format: Unix Epoch
      example: 1613805249
    feeds_recent:
      description: 'List of feeds matching request

        '
      type: array
      items:
        type: object
        properties:
          id:
            $ref: '#/components/schemas/id_feed'
          url:
            $ref: '#/components/schemas/url_feed'
          title:
            $ref: '#/components/schemas/title_feed'
          newestItemPublishTime:
            $ref: '#/components/schemas/newestItemPublishTime'
          oldestItemPublishTime:
            $ref: '#/components/schemas/oldestItemPublishTime'
          itunesId:
            $ref: '#/components/schemas/itunesId_feed'
          language:
            $ref: '#/components/schemas/language'
          categories:
            $ref: '#/components/schemas/categories'
    id_episode:
      description: 'The internal PodcastIndex.org episode ID.

        '
      type: integer
      example: 16795088
    author:
      description: 'The channel-level author element.



        Usually iTunes specific, but could be from another namespace if not present.

        '
      type: string
      example: Tony Sindelar
    datePublished:
      description: 'The date and time the episode was published

        '
      type: integer
      format: Unix Epoch
      example: 1546399813
    title_episode:
      description: 'Name of the episode

        '
      type: string
      example: Gotham
    data:
      description: 'Object containing the recent data

        '
      type: object
      properties:
        position:
          $ref: '#/components/schemas/position'
        feeds:
          $ref: '#/components/schemas/feeds_data'
        items:
          $ref: '#/components/schemas/items_data'
    episodeType:
      description: 'The type of episode. May be null for `liveItem`.

        '
      type: string
      nullable: true
      enum:
      - full
      - trailer
      - bonus
      example: full
    description_episode:
      description: 'The item-level description of the episode.



        Uses the longer of the possible fields in the feed: `<description>`, `<itunes:summary>` and `<content:encoded>`

        '
      type: string
      example: Batman University is back in session! James Thomson and Nathan Alderman join Tony for a discussion of Fox’s “Gotham.” Tune in to hear our thoughts on how a half-baked comic book show was reborn into an unmissable train wreck.
    explicit_episode:
      description: "Is feed or episode marked as explicit\n\n  - 0: not marked explicit\n  - 1: marked explicit\n"
      type: integer
      enum:
      - 0
      - 1
      example: 0
    startTime:
      description: 'The time where the soundbite begins in the item specified by the `enclosureUrl`

        '
      type: integer
      format: seconds
      example: 1123
    language:
      description: 'The channel-level language specification of the feed.


        Languages accord with the [RSS Language Spec](https://www.rssboard.org/rss-language-codes).

        '
      type: string
      example: en-us
    categories:
      description: 'An array of categories, where the index is the Category ID and the value is the Category Name.



        All Category numbers and names are returned by the `categories/list` endpoint.

        '
      type: object
      example:
        '104': Tv
        '105': Film
        '107': Reviews
    items_soundbites:
      description: 'List of soundbites matching request

        '
      type: array
      items:
        type: object
        properties:
          enclosureUrl:
            $ref: '#/components/schemas/enclosureUrl'
          title:
            $ref: '#/components/schemas/title_soundbite'
          startTime:
            $ref: '#/components/schemas/startTime'
          duration:
            $ref: '#/components/schemas/duration_soundbite'
          episodeId:
            $ref: '#/components/schemas/id_episode'
          episodeTitle:
            $ref: '#/components/schemas/title_episode'
          feedTitle:
            $ref: '#/components/schemas/title_feed'
          feedUrl:
            $ref: '#/components/schemas/url_feed'
          feedId:
            $ref: '#/components/schemas/id_feed'
    oldestItemPublishTime:
      description: 'The date and time the oldest episode in the feed/index

        '
      type: integer
      format: Unix Epoch
      example: 1546399813
    duration_soundbite:
      description: 'The length to play the item specified by the `enclosureUrl`

        '
      type: integer
      format: seconds
      example: 40
    title_soundbite:
      description: 'Name of the soundbite

        '
      type: string
      example: Why the Podcast Namespace Matters
    count:
      description: 'Number of items returned in request

        '
      type: integer
      example: 1
    id_feed:
      description: 'The internal PodcastIndex.org Feed ID.

        '
      type: integer
      example: 75075
    url_feed:
      description: 'Current feed URL

        '
      type: string
      format: URL
      example: https://feeds.theincomparable.com/batmanuniversity
  parameters:
    pretty:
      name: pretty
      in: query
      description: 'If present, makes the output “pretty” to help with debugging.



        Parameter shall not have a value

        '
      schema:
        type: boolean
      allowEmptyValue: true
    max_recent_data:
      name: max
      in: query
      description: 'Maximum number of results to return (includes both `feeds` and `items`).

        '
      schema:
        type: integer
        default: 1000
        minimum: 1
      example: 200
    lang:
      name: lang
      in: query
      description: 'Specifying a language code (like "en") will return only episodes having that specific language.



        You can specify multiple languages by separating them with commas.



        If you also want to return episodes that have no language given, use the token "unknown". (ex. en,es,ja,unknown).



        Values are not case sensitive.

        '
      schema:
        type: string
      examples:
        single:
          value: en
          description: Single ID
        multiple:
          value: en,es
          description: Multiple IDs
    max_recent_soundbites:
      name: max
      in: query
      description: 'Maximum number of soundbites to return.

        '
      schema:
        type: integer
        default: 60
        minimum: 1
        maximum: 1000
      example: 20
    notcat:
      name: notcat
      in: query
      description: 'Use this argument to specify categories of episodes to **NOT** show in the results.



        Separate multiple categories with commas.



        You may specify either the Category ID and/or the Category Name.



        Values are not case sensitive.



        The `cat` and `notcat` filters can be used together to fine tune a very specific result set.



        Category numbers and names can be found in the

        [Podcast Namespace documentation](https://github.com/Podcastindex-org/podcast-namespace/blob/main/categories.json)

        '
      schema:
        type: string
      examples:
        single_name:
          value: News
          description: Single Category Name
        single_id:
          value: 65
          description: Single Category ID
        multiple_name:
          value: News,Religion
          description: Multiple Category Names
        multiple_id_:
          value: 55,65
          description: Multiple Category IDs
        multiple_mixed:
          value: News,65
          description: Multiple Categories Mixed Format
    since:
      name: since
      in: query
      description: 'Return items since the specified epoch timestamp.

        '
      schema:
        type: integer
      example: 1612125785
    excludeString:
      name: excludeString
      in: query
      description: 'Any item containing this string will be discarded from the result set.



        This may, in certain cases, reduce your set size below your `max` value.



        Matches against the `title` and URL properties.

        '
      schema:
        type: string
      example: religion
    max_recent_episodes:
      name: max
      in: query
      description: 'Maximum number of results to return.

        '
      schema:
        type: integer
        default: 10
        minimum: 1
        maximum: 1000
      example: 7
    max_recent_feeds:
      name: max
      in: query
      description: 'Maximum number of results to return.

        '
      schema:
        type: integer
        default: 40
        minimum: 1
        maximum: 1000
      example: 20
    fulltext:
      name: fulltext
      in: query
      description: 'If present, return the full text value of any text fields (ex: `description`).

        If not provided, field value is truncated to 100 words.



        Parameter shall not have a value

        '
      schema:
        type: boolean
      allowEmptyValue: true
    desc:
      name: desc
      in: query
      description: 'If present, display feeds in descending order.



        Only applicable when using `feedid` parameter.



        Parameter shall not have a value

        '
      schema:
        type: boolean
      allowEmptyValue: true
    feedid_newfeeds:
      name: feedid
      in: query
      description: 'The PodcastIndex Feed ID to start from (or go to if `desc` specified).



        If `since` parameter also specified, value of `since` is ignored.

        '
      required: false
      schema:
        type: string
      example: '2653471'
    before:
      name: before
      in: query
      description: 'If you pass a PodcastIndex Episode ID, you will get recent episodes before that ID, allowing you to walk back

        through the episode history sequentially.

        '
      schema:
        type: integer
      example: 1721351091
    cat:
      name: cat
      in: query
      description: 'Use this argument to specify that you **ONLY** want episodes with these categories in the results.



        Separate multiple categories with commas.



        You may specify either the Category ID and/or the Category Name.



        Values are not case sensitive.



        The `cat` and `notcat` filters can be used together to fine tune a very specific result set.



        Category numbers and names can be found in the

        [Podcast Namespace documentation](https://github.com/Podcastindex-org/podcast-namespace/blob/main/categories.json)

        '
      schema:
        type: string
      examples:
        single_name:
          value: News
          description: Single Category Name
        single_id:
          value: 65
          description: Single Category ID
        multiple_name:
          value: News,Religion
          description: Multiple Category Names
        multiple_id_:
          value: 55,65
          description: Multiple Category IDs
        multiple_mixed:
          value: News,65
          description: Multiple Categories Mixed Format
  responses:
    '400':
      desc

# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/podcastindex/refs/heads/main/openapi/podcastindex-recent-api-openapi.yml