Blubrry Podcast Hosting & Statistics API (v2)

Blubrry's own published OpenAPI 3.0.0 contract for the v2 API, harvested verbatim from https://blubrry.com/developer/api/podcaster.yaml on 2026-09-06 and rendered by Blubrry through ReDoc at /developer/api/podcaster.html. 25 paths, 27 operations and 35 component schemas covering the Episode, Media and Statistics surfaces in one document — the authoritative source the per-tag definitions in this repository were split from.

Operations 27

GET /episode/{keyword}/?limit={limit}&offset={offset} Get episode list #
GET /episode/{keyword}/{episode_id}/ Get episode info #
POST /episode/{keyword}/add Add episode #
POST /episode/{keyword}/update/{episode_id}/ Update episode #
PUT /episode/{keyword}/update-image/{episode_id}/ Upload episode image #
DELETE /episode/{keyword}/delete-image/{episode_id}/ Delete episode image #
GET /media/index.{format} List Programs #
GET /media/{keyword}/index.{format} List Unpublished Media #
DELETE /media/{keyword}/{mediafile.ext} Delete Media #
GET /media/{keyword}/{mediafile.ext} Publish Media File #
PUT /media/{keyword}/{mediafile.ext} Upload Media #
POST /media/{keyword}/migrate_add.json Add Migrate Media URL(s) #
POST /media/{keyword}/migrate_remove.json Remove Migrate Media URL(s) #
GET /media/{keyword}/migrate_status.json Migrate Media Status #
GET /stats/index.{format} List Stats Programs #
GET /stats/{keyword}/summary.{format} Summary #
GET /stats/{keyword}/show-episodes/ Show and Episodes #
GET /stats/{keyword}/ Show Totals #
GET /stats/{keyword}/countries/ Show Countries #
GET /stats/{keyword}/app-types/ Show App Types (Client Types) #
GET /stats/{keyword}/apps/ Show Apps (Clients) #
GET /stats/{keyword}/episodes/ Episode Totals #
GET /stats/{keyword}/{episode_id}/countries/ Episode Countries #
GET /stats/{keyword}/{episode_id}/app-types/ Episode App Types (Client Types) #
GET /stats/{keyword}/{episode_id}/apps/ Episode Apps (Clients) #
GET /stats/{keyword}/widget/preview.json Preview Widget #
GET /stats/{keyword}/totals.json Totals (Deprecated) #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/blubrry-podcast-hosting-statistics-api-v2"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

blubrry-api-restful-api-for-podcast-publishing-statistics-podcaster-openapi.yaml Raw ↑
openapi: "3.0.0"
info:
  title: "Blubrry Podcast Hosting & Statistics API"
  version: "v2"
  description: >
    ## Using the Blubrry API

    1. If you don't already have API credentials, contact Blubrry to request a client ID and secret.

    2. Generate an access token as explained here: [OAuth 2 Documentation](https://blubrry.com/developer/api/oauth-2/)

    3. Use the access token to make requests to the Blubrry API. For example:
    <br>
    curl -H "Authorization: Bearer 3b636a92ee50a8f17543f6a531b27e55d525bcd1" https://api.blubrry.com/2/media/index.json
tags:
  - name: "Episode"
    description: "API for reading, creating and updating episodes for shows hosted on Blubrry.com"
  - name: "Media"
    description: "API for uploading and managing media files hosted on Blubrry.com"
  - name: "Statistics"
    description: "API for getting podcast download statistics"
servers:
  - url: "https://api.blubrry.com/2"

paths:
  /episode/{keyword}/?limit={limit}&offset={offset}:
    get:
      tags:
        - "Episode"
      summary: "Get episode list"
      description: |
        Returns a list of most recent episodes
        
        >URL: [https://api.blubrry.com/2/episode/keyword/](https://api.blubrry.com/2/episode/keyword/)
        
        >Format: __JSON__
        
        >Method: __GET__
      operationId: "getEpisodes"
      parameters:
        - $ref: "#/components/parameters/ProgramKeyword"
        - $ref: "#/components/parameters/Limit"
        - $ref: "#/components/parameters/Offset"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/episode/list
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                type: "object"
                properties:
                  data:
                    $ref: "#/components/schemas/EpisodeListObjectArray"
                  record_count:
                    type: "integer"
                    example: 100
                    description: "The number of episodes returned in the query"
                  limit:
                    type: "integer"
                    example: 10
                    description: "The number of results that are limited to"
                  offset:
                    type: "integer"
                    example: 0
                    description: "The number of episodes to skip within a list of episodes"
        '400':
          description: "Error: episode_show_invalid"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
  /episode/{keyword}/{episode_id}/:
    get:
      tags:
        - "Episode"
      summary: "Get episode info"
      description: |
        Returns the information for an episode
        
        >URL: [https://api.blubrry.com/2/episode/keyword/episode_id](https://api.blubrry.com/2/episode/keyword/episode_id)
        
        >Format: __JSON__
        
        >Method: __GET__
      operationId: "getEpisode"
      parameters:
        - $ref: "#/components/parameters/ProgramKeyword"
        - $ref: "#/components/parameters/EpisodeId"
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeListObject"
        '400':
          description: "Error: episode_show_invalid"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
        '401':
          description: "Error: episode_not_found"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
  /episode/{keyword}/add:
    post:
      tags:
        - "Episode"
      summary: "Add episode"
      description: |
        Adds an episode to a program

        >URL: [https://api.blubrry.com/2/episode/keyword/add](https://api.blubrry.com/2/episode/keyword/add)

        >Format: __JSON__

        >Method: __POST__

      operationId: "addEpisode"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/episode/add
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/episode/add
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/episode/add
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/episode/add
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/episode/add
      parameters:
        - name: "keyword"
          in: "path"
          description: "Required - Program keyword"
          required: true
          schema:
            type: "string"
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AddEpisode'
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/AddEpisodeSuccess"
        '400':
          description: "Error: episode_show_invalid"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
  /episode/{keyword}/update/{episode_id}/:
    post:
      tags:
        - "Episode"
      summary: "Update episode"
      description: |
        Updates specified fields in existing episode

        >URL: [https://api.blubrry.com/2/episode/keyword/update/episode_id/](https://api.blubrry.com/2/episode/keyword/update/episode_id/)

        >Format: __JSON__

        >Method: __POST__
      operationId: "updateEpisode"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/episode/update
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/episode/update
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/episode/update
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/episode/update
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/episode/update
      parameters:
        - name: "keyword"
          in: "path"
          description: "Required - Program keyword"
          required: true
          schema:
            type: "string"
        - name: "episode_id"
          in: "path"
          description: "Required - The ID of the episode to be updated"
          required: true
          schema:
            type: "string"
      requestBody:
        content:
          application/json:
            schema:
              type: "object"
              allOf:
                - $ref: "#/components/schemas/UpdateEpisode"

      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateEpisodeSuccess"
        '400':
          description: "Error: episode_show_invalid"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
  /episode/{keyword}/update-image/{episode_id}/:
    put:
      tags:
        - "Episode"
      summary: "Upload episode image"
      description: |
        Upload an episode specific image

        >URL: [https://api.blubrry.com/2/episode/keyword/update-image/episode_id/](https://api.blubrry.com/2/episode/keyword/update-image/episode_id/)

        >Format: __JSON__

        >Method: __PUT__
      operationId: "updateEpisodeImage"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/episode/update-image
      parameters:
        - $ref: "#/components/parameters/ProgramKeyword"
        - $ref: "#/components/parameters/EpisodeId"
        - name: "Content-Type"
          in: "header"
          description: "File type of media being uploaded"
          required: true
          schema:
            type: "string"

      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/UpdateEpisodeImageSuccess"
        '400':
          description: "Error: episode_show_invalid"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
  /episode/{keyword}/delete-image/{episode_id}/:
    delete:
      tags:
        - "Episode"
      summary: "Delete episode image"
      description: |
        Delete an episode specific image

        >URL: [https://api.blubrry.com/2/episode/keyword/delete-image/episode_id/](https://api.blubrry.com/2/episode/keyword/delete-image/episode_id/)

        >Format: __JSON__

        >Method: __DELETE__
      operationId: "deleteEpisodeImage"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/episode/delete-image
      parameters:
        - $ref: "#/components/parameters/ProgramKeyword"
        - $ref: "#/components/parameters/EpisodeId"

      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/DeleteEpisodeImageSuccess"
        '400':
          description: "Error: episode_show_invalid"
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/EpisodeKeywordError"
  /media/index.{format}:
    get:
      tags:
        - "Media"
      summary: "List Programs"
      description: |
        List all programs/shows under the account
        >URL: [https://api.blubrry.com/2/media/index.json](https://api.blubrry.com/2/media/index.json)

        >Formats: __XML__, __JSON__

        >Method: __GET__
      operationId: "listPrograms"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/list_programs
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/list_programs
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/list_program
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/list_programs
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/list_programs
      parameters:
        - name: "format"
          in: "path"
          description: "Format: JSON or xml"
          required: true
          schema:
            type: "string"
            enum:
              - "json"
              - "xml"
        - name: "limit"
          in: "query"
          description: |
            Optional - Specifies the number of results to return

            Default: 20

            Maximum: 100
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 20
            maximum: 100
        - name: "start"
          in: "query"
          description: |
            Optional - Specifies the start position of returned results
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 0
            maximum: 100
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/AllHosted"
            application/xml:
              schema:
                items:
                  $ref: "#/components/schemas/AllHosted"
                xml:
                  name: "programs"
                  wrapped: true
          headers:
            "X-RawVoice-Total-Results":
              schema:
                $ref: "#/components/headers/xTotalHosted"
              description: |
                Indicates how many programs total are available to query. Header value can be used to determine if additional calls to List Programs is necessary



  /media/{keyword}/index.{format}:
    get:
      tags:
        - "Media"
      description: |
        Returns a list of unpublished media files for the specified user program
        >URL: [https://api.blubrry.com/2/media/keyword/index.json](https://api.blubrry.com/2/media/keyword/index.json)

        >Formats: __XML__, __JSON__

        >Method: __GET__

      summary: "List Unpublished Media"
      operationId: "listUnpublishedMedia"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/list_unpublished_media
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/list_unpublished_media
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/list_unpublished_media
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/list_unpublished_media
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/list_unpublished_media
      parameters:
        - name: "format"
          in: "path"
          description: "Format: JSON or xml"
          required: true
          schema:
            type: "string"
            enum:
              - "json"
              - "xml"
        - name: "keyword"
          in: "path"
          description: "Required - Specifies the program"
          required: true
          schema:
            type: "string"
        - name: "limit"
          in: "query"
          description: |
            Optional - Specifies the number of results to return

            Default: 20

            Maximum: 100
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 20
            maximum: 100
        - name: "start"
          in: "query"
          description: |
            Optional - Specifies the start position of returned results
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 0
            maximum: 100
        - name: "quota"
          in: "query"
          description: |
            Optional - Get data on podcast storage usage
          required: false
          schema:
            type: "string"
        - name: "published"
          in: "query"
          description: |
            Optional - Get data on published media files
          required: false
          schema:
            type: "string"
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/AllUnpublished"
            application/xml:
              schema:
                items:
                  $ref: "#/components/schemas/AllUnpublished"
                xml:
                  name: "files"
                  wrapped: true
          headers:
            "X-RawVoice-Total-Results":
              schema:
                $ref: "#/components/headers/xTotalHosted"
              description: |
                Indicates how many programs total are available to query. Header value can be used to determine if additional calls to List Programs is necessary



  /media/{keyword}/{mediafile.ext}:
    delete:
      tags:
        - "Media"
      summary: "Delete Media"
      description: |
        Deletes a specified media file

        >URL: [https://api.blubrry.com/2/media/keyword/mediafile.ext](https://api.blubrry.com/2/media/keyword/mediafile.ext)

        >Formats: __JSON__, __XML__

        >Method: __DELETE__
      operationId: "deleteMedia"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/delete_media
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/delete_media
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/delete_media
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/delete_media
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/delete_media
      parameters:
        - name: "keyword"
          in: "path"
          description: "Required - Specifies the program"
          required: true
          schema:
            type: "string"
        - name: "mediafile.ext"
          in: "path"
          description: "Required - Specifies the media file to delete (ext is the file type)"
          required: true
          schema:
            type: "string"
        - name: "format"
          in: "query"
          description: "Specifies the format of the response returned. (json or xml)"
          schema:
            type: "string"
            enum:
              - "json"
              - "xml"
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/Delete"
            application/xml:
              schema:
                items:
                  $ref: "#/components/schemas/Delete"
                xml:
                  name: "status"

    get:
      tags:
        - "Media"
      summary: "Publish Media File"
      description: |
        Makes the uploaded media file publicly available

        >URL: [https://api.blubrry.com/2/media/keyword/mediafile.ext](https://api.blubrry.com/2/media/keyword/mediafile.ext)

        >Formats: __JSON__, __XML__

        >Method: __GET__
      operationId: "publishMedia"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/publish_media_file
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/publish_media
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/publish_media
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/publish_media_file
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/publish_media_file
      parameters:
        - name: "keyword"
          in: "path"
          description: "Specifies the program/show keyword"
          required: true
          schema:
            type: "string"
        - name: "mediafile.ext"
          in: "path"
          description: "Specifies the media file to publish (ext is the file type)"
          required: true
          schema:
            type: "string"
        - name: "format"
          in: "query"
          description: "Specifies the format of the response returned."
          required: true
          schema:
            type: "string"
            enum:
              - "json"
              - "xml"
        - name: "publish"
          in: "query"
          description: "Specifies whether the media file will be made publicly available."
          required: true
          schema:
            type: "string"
            enum:
              - "true"
              - "false"
            default: "true"
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/Publish"
            application/xml:
              schema:
                items:
                  $ref: "#/components/schemas/Publish"
                xml:
                  name: "status"
        '400':
          description: "Missing keyword"

    put:
      tags:
        - "Media"
      summary: "Upload Media"
      description: |
        Uploads a media file to the server

        For instructions on uploading via WebDAV, [visit our support documentation.](https://blubrry.com/developer/webdav/)

        >URL: [https://api.blubrry.com/2/media/keyword/mediafile.ext](https://api.blubrry.com/2/media/keyword/mediafile.ext)

        >Formats: __XML__, __JSON__

        >Method: __PUT__
      operationId: "uploadMedia"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/upload_media
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/upload_media
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/upload_media
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/upload_media
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/upload_media
      parameters:
        - name: "X-RawVoice-MD5-Checksum"
          description: "Optional - MD5 checksum of the file being uploaded. When specified, the server will return the final uploaded MD5 checksum"
          in: "header"
          schema:
            type: "string"
        - name: "X-RawVoice-Range"
          in: "header"
          description: "Optional - Range of start and end bytes"
          schema:
            type: "string"
        - name: "Content-Type"
          in: "header"
          description: "File type of media being uploaded"
          required: true
          schema:
            type: "string"
        - name: "Content-Length"
          in: "header"
          description: "Length in bytes of the media file"
          required: true
          schema:
            type: "string"
        - name: "keyword"
          in: "path"
          description: "Specifies the program"
          required: true
          schema:
            type: "string"
        - name: "mediafile.ext"
          in: "path"
          description: "Specifies the media file to upload (ext is the file type)"
          required: true
          schema:
            type: "string"
        - name: "format"
          in: "query"
          description: "Specifies the format of the response returned."
          schema:
            type: "string"
            enum:
              - "json"
              - "xml"
      content:
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/Upload"
            application/xml:
              schema:
                items:
                  $ref: "#/components/schemas/Upload"
                xml:
                  name: "status"
          headers:
            "X-RawVoice-MD5-Checksum":
              description: "When specified, the server will return the final uploaded MD5 checksum"
              schema:
                $ref: "#/components/headers/X-RawVoice-MD5-Checksum"
            "X-RawVoice-Range":
              description: "Range of start and end bytes which supports multi-PUT requests to upload content in chunks"
              schema:
                $ref: "#/components/headers/X-RawVoice-Range"
        '400':
          description: "Missing keyword"
  /media/{keyword}/migrate_add.json:
    post:
      tags:
        - "Media"
      summary: "Add Migrate Media URL(s)"
      description: |
        Adds media URLs to the migration queue

        >URL: [https://api.blubrry.com/2/media/keyword/migrate_add.json](https://api.blubrry.com/2/media/keyword/migrate_add.json)

        >Format: __JSON__

        >Methods: __POST__
      operationId: "post_addMigrateMedia"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/post_add_migrate_media_urls
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/post_add_migrate_media_urls
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/post_add_migrate_media_urls
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/post_add_migrate_media_urls
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/post_add_migrate_media_urls
      parameters:
        - name: "keyword"
          in: "path"
          description: "Specifies the show/program"
          required: true
          schema:
            type: "string"
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/AddMigrateMedia'
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ApiResponse"
        '400':
          description: "Missing keyword"
  /media/{keyword}/migrate_remove.json:
    post:
      tags:
        - "Media"
      summary: "Remove Migrate Media URL(s)"
      description: |
        Removes media URLs from the migration queue

        >URL: [https://api.blubrry.com/2/media/keyword/migrate_remove.json](https://api.blubrry.com/2/media/keyword/migrate_remove.json)

        >Format: __JSON__

        >Method: __POST__
      operationId: "post_removeMigrateMedia"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/post_remove_migrate_media_urls
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/post_remove_migrate_media_urls
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/post_remove_migrate_media_urls
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/post_remove_migrate_media_urls
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/post_remove_migrate_media_urls
      parameters:
        - name: "keyword"
          in: "path"
          description: "Required - Specifies the program"
          required: true
          schema:
            type: "string"
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/RemoveMigrateMedia'
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/ApiResponse"
        '400':
          description: "Missing keyword"
  /media/{keyword}/migrate_status.json:
    get:
      tags:
        - "Media"
      summary: "Migrate Media Status"
      description: |
        Returns the migration status of urls. The result also includes the total number of records found.

        >URL: [https://api.blubrry.com/2/media/keyword/migrate_status.json](https://api.blubrry.com/2/media/keyword/migrate_status.json)

        >Format: __JSON__

        >Method: __GET__
      operationId: "migrateMediaStatus"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../examples/php/media/migrate_media_status
        - lang: 'JavaScript'
          label: 'NodeJS'
          source:
            $ref: ../examples/node/media/migrate_media_status
        - lang: 'C#'
          label: 'C#'
          source:
            $ref: ../examples/c-sharp/media/migrate_media_status
        - lang: 'Python'
          label: 'Python'
          source:
            $ref: ../examples/python/media/migrate_media_status
        - lang: 'Ruby'
          label: 'Ruby'
          source:
            $ref: ../examples/ruby/media/migrate_media_status
      parameters:
        - name: "keyword"
          in: "path"
          description: "Required - Specifies the program"
          required: true
          schema:
            type: "string"
        - name: "limit"
          in: "query"
          description: |
            Optional - Specifies the number of results to return

            Default: 20
            Maximum: 100
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 20
            maximum: 100
        - name: "start"
          in: "query"
          description: |
            Optional - Specifies the start position of returned results
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 0
            maximum: 100
        - name: "status"
          in: "query"
          description: "Specifies which status to filter on."
          schema:
            type: "string"
            enum:
              - "all"
              - "queued"
              - "downloading"
              - "completed"
              - "skipped"
              - "failed"
        - name: "ids"
          in: "query"
          description: "One or more unique migrate IDs separated by commas"
          schema:
            type: "array"
            items:
              type: "string"
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/AllMedia"
        '400':
          description: "Missing keyword"
  /stats/index.{format}:
    get:
      tags:
        - "Statistics"
      summary: "List Stats Programs"
      description: |
        List all programs/shows under the account
        >URL: [https://api.blubrry.com/2/stats/index.json](https://api.blubrry.com/2/media/index.json)

        >Formats: __XML__, __JSON__

        >Method: __GET__
      operationId: "listStatsPrograms"
      parameters:
        - name: "format"
          in: "path"
          description: "Format: JSON or xml"
          required: true
          schema:
            type: "string"
            enum:
              - "json"
              - "xml"
        - name: "limit"
          in: "query"
          description: |
            Optional - Specifies the number of results to return

            Default: 20

            Maximum: 100
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 20
            maximum: 100
        - name: "start"
          in: "query"
          description: |
            Optional - Specifies the start position of returned results
          required: false
          schema:
            type: "integer"
            format: "int64"
            default: 0
            maximum: 100
      responses:
        '200':
          description: "Success"
          content:
            application/json:
              schema:
                items:
                  $ref: "#/components/schemas/AllHosted"
            application/xml:
              schema:
                items:
                  $ref: "#/components/schemas/AllHosted"
                xml:
                  name: "programs"
                  wrapped: true
          headers:
            "X-RawVoice-Total-Results":
              schema:
                $ref: "#/components/headers/xTotalHosted"
              description: |
                Indicates how many programs total are available to query. Header value can be used to determine if additional calls to List Stats Programs is necessary





  /stats/{keyword}/summary.{format}:
    get:
      tags:
        - "Statistics"
      summary: "Summary"
      description: |
        Returns a summary of podcast download statistics for the overall show and its 10 most recent episodes

        >URL: [https://api.blubrry.com/2/stats/keyword/summary.json](https://api.blubrry.com/2/stats/keyword/summary.json)

        >Formats: __XML__, __JSON__

        >Method: __GET__
      operationId: "Summary"
      x-code-samples:
        - lang: 'PHP'
          label: 'PHP'
          source:
            $ref: ../example

# --- truncated at 32 KB (85 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/blubrry-api-restful-api-for-podcast-publishing-statistics/refs/heads/main/openapi/blubrry-api-restful-api-for-podcast-publishing-statistics-podcaster-openapi.yaml