Blubrry API Media API
Upload and manage media files hosted on Blubrry.
Upload and manage media files hosted on Blubrry.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/blubrry-api-restful-api-for-podcast-publishing-statistics-media-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 3.2.0
info:
title: Blubrry Api Restful Api For Podcast Publishing Statistics…
version: '1.0'
description: 'Operations tagged Media across 2 of this provider''s published API definitions: blubrry-api-restful-api-for-podcast-publishing-statistics-openapi.yml, blubrry-api-restful-api-for-podcast-publishing-statistics-podcaster-openapi.yaml. Each path carries the servers of the definition it was published in.'
servers:
- url: https://api.blubrry.com/2
description: Production
tags:
- name: Media
description: Upload and manage media files hosted on Blubrry.
paths:
/media/index.{format}:
get:
tags:
- Media
summary: List shows
description: Returns the list of shows the authorized account has access to.
operationId: listShows
parameters:
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Shows returned.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
servers:
- url: https://api.blubrry.com/2
description: Production
/media/{keyword}/index.{format}:
get:
tags:
- Media
summary: List media for a show
description: Returns unpublished and recently published media files for the show.
operationId: listShowMedia
parameters:
- $ref: '#/components/parameters/Keyword'
- $ref: '#/components/parameters/Format'
responses:
'200':
description: Media list returned.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
servers:
- url: https://api.blubrry.com/2
description: Production
/media/{keyword}/{filename}:
get:
tags:
- Media
summary: Get a media file's metadata
operationId: getMedia
parameters:
- $ref: '#/components/parameters/Keyword'
- $ref: '#/components/parameters/Filename'
responses:
'200':
description: Media metadata returned.
'401':
$ref: '#/components/responses/Unauthorized'
'404':
description: Media not found.
security:
- OAuth2: []
put:
tags:
- Media
summary: Upload (or replace) a media file
operationId: uploadMedia
parameters:
- $ref: '#/components/parameters/Keyword'
- $ref: '#/components/parameters/Filename'
requestBody:
required: true
content:
application/octet-stream:
schema:
type: string
format: binary
responses:
'200':
description: Media uploaded.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
delete:
tags:
- Media
summary: Delete a media file
operationId: deleteMedia
parameters:
- $ref: '#/components/parameters/Keyword'
- $ref: '#/components/parameters/Filename'
responses:
'204':
description: Media deleted.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
servers:
- url: https://api.blubrry.com/2
description: Production
/media/{keyword}/migrate_add.json:
post:
tags:
- Media
summary: Queue a media file for migration into Blubrry hosting
operationId: migrateAddMedia
parameters:
- $ref: '#/components/parameters/Keyword'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- source_url
properties:
source_url:
type: string
format: uri
responses:
'200':
description: Migration queued.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
servers:
- url: https://api.blubrry.com/2
description: Production
/media/{keyword}/migrate_remove.json:
post:
tags:
- Media
summary: Remove a migration request
operationId: migrateRemoveMedia
parameters:
- $ref: '#/components/parameters/Keyword'
requestBody:
required: true
content:
application/x-www-form-urlencoded:
schema:
type: object
required:
- source_url
properties:
source_url:
type: string
format: uri
responses:
'200':
description: Migration request removed.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
servers:
- url: https://api.blubrry.com/2
description: Production
/media/{keyword}/migrate_status.json:
get:
tags:
- Media
summary: Get migration status
operationId: getMigrationStatus
parameters:
- $ref: '#/components/parameters/Keyword'
responses:
'200':
description: Migration status returned.
'401':
$ref: '#/components/responses/Unauthorized'
security:
- OAuth2: []
servers:
- url: https://api.blubrry.com/2
description: Production
/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
>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
>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.
>URL: 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: null
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
servers:
- url: https://api.blubrry.com/2
components:
parameters:
Filename:
name: filename
in: path
required: true
description: Media filename including extension.
schema:
type: string
Format:
name: format
in: path
required: true
description: Response serialization format.
schema:
type: string
enum:
- json
- xml
Keyword:
name: keyword
in: path
required: true
description: Program keyword that identifies the show.
schema:
type: string
responses:
Unauthorized:
description: Missing or invalid access token.
schemas:
Media:
type: object
properties:
id:
type: string
status:
type: string
AllUnpublished:
type: array
items:
$ref: '#/components/schemas/Unpublished'
xml:
name: file
Unpublished:
type: object
properties:
name:
type: string
length:
type: integer
format: int64
created:
type: string
last_modified:
type: string
AllMedia:
type: array
items:
$ref: '#/components/schemas/Media'
properties:
records:
type: integer
Upload:
type: object
properties:
text:
type: string
AddMigrateMedia:
type: object
properties:
url:
type: string
description: Individual URL to add to migration queue
urls:
type: array
items:
type: string
description: Multiple URLs separated by new lines to add to migration queue
RemoveMigrateMedia:
type: object
properties:
url:
type: string
description: Individual URL to add to migration queue
urls:
type: array
items:
type: string
description: Multiple URLs separated by new lines to add to migration queue
ids:
type: array
items:
type: string
description: One or more unique migrate IDs
AllHosted:
type: array
items:
$ref: '#/components/schemas/Hosted'
xml:
name: program
ApiResponse:
type: object
properties:
request:
type: string
message:
type: string
Delete:
type: object
properties:
text:
type: string
Hosted:
type: object
properties:
program_title:
type: string
description: The title of the program or podcast. This is the display name as it appears in directories or on user-facing interfaces.
example: The Daily Podcast
program_keyword:
type: string
description: A unique keyword identifier for older programs, typically used in feed URLs. Deprecated for new programs in favor of 'program_id'.
example: daily_podcast_keyword
program_id:
type: integer
description: The unique identifier for a program or podcast, used as the primary reference for media or stats related operations.
example: 12345
podcast_id:
type: integer
description: The unique identifier for a program or podcast, used as the primary reference for media-related operations.
example: 12345
stats_program_id:
type: integer
description: The unique identifier for a program or podcast, used as the primary reference for stats-related operations.
example: 78987
feed_url:
type: string
description: The URL of the program's RSS feed. This can vary based on whether the feed is hosted with Blubrry, PowerPress, or a custom domain.
example: https://feeds.blubrry.com/feeds/the_daily.xml
Publish:
type: object
properties:
text:
type: string
media_url:
type: string
headers:
xTotalHosted:
schema:
type: integer
description: Number of programs that are available to query
X-RawVoice-Range:
schema:
type: string
description: Range of start and end bytes which supports multi-PUT requests to upload content in chunks
X-RawVoice-MD5-Checksum:
schema:
type: string
description: MD5 checksum of the file uploaded
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: {}
x-refined-from:
- blubrry-api-restful-api-for-podcast-publishing-statistics-openapi.yml
- blubrry-api-restful-api-for-podcast-publishing-statistics-podcaster-openapi.yaml