Blubrry API Episode API

Read, create, and update episodes for shows hosted on Blubrry.

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-api-restful-api-for-podcast-publishing-statistics-episode-api"
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 email required.

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

OpenAPI Specification

blubrry-api-restful-api-for-podcast-publishing-statistics-episode-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Blubrry Podcast Hosting & Statistics Episode API
  version: '2'
  description: 'REST API for podcast publishing, media hosting, episode management, and

    podcast download statistics on Blubrry. Authentication is OAuth 2.0

    Bearer; obtain a client_id / secret from Blubrry and request an access

    token at https://api.blubrry.com/oauth2/token.


    Source spec: https://blubrry.com/developer/api/podcaster.yaml

    '
  contact:
    name: Blubrry Developer
    url: https://blubrry.com/developer/api/
servers:
- url: https://api.blubrry.com/2
  description: Production
security:
- OAuth2: []
tags:
- name: Episode
  description: Read, create, and update episodes for shows hosted on Blubrry.
paths:
  /episode/{keyword}/:
    get:
      tags:
      - Episode
      summary: List episodes
      description: Returns a list of most recent episodes for a show identified by its program keyword.
      operationId: listEpisodes
      parameters:
      - $ref: '#/components/parameters/Keyword'
      - $ref: '#/components/parameters/Limit'
      - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: Episode list returned.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episode/{keyword}/{episode_id}/:
    get:
      tags:
      - Episode
      summary: Get an episode
      operationId: getEpisode
      parameters:
      - $ref: '#/components/parameters/Keyword'
      - $ref: '#/components/parameters/EpisodeId'
      responses:
        '200':
          description: Episode returned.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Episode not found.
  /episode/{keyword}/add:
    post:
      tags:
      - Episode
      summary: Create an episode
      description: Publish, schedule, or save a new episode as draft for a show.
      operationId: createEpisode
      parameters:
      - $ref: '#/components/parameters/Keyword'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/EpisodeInput'
      responses:
        '201':
          description: Episode created.
        '400':
          description: Validation error.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episode/{keyword}/update/{episode_id}/:
    post:
      tags:
      - Episode
      summary: Update an episode
      operationId: updateEpisode
      parameters:
      - $ref: '#/components/parameters/Keyword'
      - $ref: '#/components/parameters/EpisodeId'
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/EpisodeInput'
      responses:
        '200':
          description: Episode updated.
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: Episode not found.
  /episode/{keyword}/update-image/{episode_id}/:
    put:
      tags:
      - Episode
      summary: Update episode image
      operationId: updateEpisodeImage
      parameters:
      - $ref: '#/components/parameters/Keyword'
      - $ref: '#/components/parameters/EpisodeId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                image:
                  type: string
                  format: binary
      responses:
        '200':
          description: Image updated.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episode/{keyword}/delete-image/{episode_id}/:
    delete:
      tags:
      - Episode
      summary: Delete episode image
      operationId: deleteEpisodeImage
      parameters:
      - $ref: '#/components/parameters/Keyword'
      - $ref: '#/components/parameters/EpisodeId'
      responses:
        '204':
          description: Image deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    Limit:
      name: limit
      in: query
      schema:
        type: integer
        default: 10
    Offset:
      name: offset
      in: query
      schema:
        type: integer
        default: 0
    Keyword:
      name: keyword
      in: path
      required: true
      description: Program keyword that identifies the show.
      schema:
        type: string
    EpisodeId:
      name: episode_id
      in: path
      required: true
      schema:
        type: integer
  responses:
    Unauthorized:
      description: Missing or invalid access token.
  schemas:
    EpisodeInput:
      type: object
      description: Episode fields. Send the subset you want to set or update.
      properties:
        title:
          type: string
        subtitle:
          type: string
        summary:
          type: string
        link:
          type: string
          format: uri
        author:
          type: string
        explicit:
          type: string
          enum:
          - clean
          - true
          - 'no'
        media_url:
          type: string
          format: uri
        duration:
          type: string
          description: HH:MM:SS
        publish_date:
          type: string
          format: date-time
        status:
          type: string
          enum:
          - publish
          - draft
          - future
  securitySchemes:
    OAuth2:
      type: oauth2
      description: 'OAuth 2.0 Bearer token. Contact Blubrry to receive a client_id and

        secret. Tokens expire after one hour; refresh tokens do not expire.

        '
      flows:
        authorizationCode:
          authorizationUrl: https://api.blubrry.com/oauth2/authorize
          tokenUrl: https://api.blubrry.com/oauth2/token
          refreshUrl: https://api.blubrry.com/oauth2/token
          scopes: {}