Spreaker Episodes API

Episodes, uploads, playback, likes, bookmarks, messages, chapters, cuepoints.

OpenAPI Specification

spreaker-episodes-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Spreaker Advertising Episodes API
  description: The Spreaker API (v2) is a REST API for the Spreaker podcast hosting, distribution, and monetization platform, owned by iHeartMedia. It lets developers manage users and their social graph, podcast shows, episodes (including uploads, playback, messages, chapters, and ad cuepoints), analytics and statistics, search and discovery, and the advertising campaign stack. All access is over HTTPS at api.spreaker.com. GET requests are public unless otherwise noted; all PUT, POST, and DELETE requests must be authenticated with an OAuth2 Bearer token. Responses are paginated with a default of 50 items per page (up to 100 via the limit parameter) and a next_url property for the following page.
  version: '2.0'
  contact:
    name: Spreaker for Developers
    url: https://developers.spreaker.com
  license:
    name: Proprietary
    url: https://www.spreaker.com/terms-of-service
servers:
- url: https://api.spreaker.com/v2
  description: Spreaker API v2
security:
- oauth2: []
tags:
- name: Episodes
  description: Episodes, uploads, playback, likes, bookmarks, messages, chapters, cuepoints.
paths:
  /shows/{show_id}/episodes:
    parameters:
    - $ref: '#/components/parameters/ShowId'
    get:
      operationId: listShowEpisodes
      tags:
      - Episodes
      summary: Retrieve a show's episodes
      responses:
        '200':
          description: A paginated list of episodes.
    post:
      operationId: uploadEpisode
      tags:
      - Episodes
      summary: Upload an episode
      description: Uploads a new episode (multipart/form-data with the audio file) to a show.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                title:
                  type: string
                media_file:
                  type: string
                  format: binary
      responses:
        '200':
          description: The created episode.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/drafts:
    post:
      operationId: createDraftEpisode
      tags:
      - Episodes
      summary: Create a draft episode
      responses:
        '200':
          description: The created draft episode.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/{episode_id}:
    parameters:
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: getEpisode
      tags:
      - Episodes
      summary: Retrieve an episode
      responses:
        '200':
          description: An episode.
    post:
      operationId: updateEpisode
      tags:
      - Episodes
      summary: Update an episode
      responses:
        '200':
          description: The updated episode.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: deleteEpisode
      tags:
      - Episodes
      summary: Delete an episode
      responses:
        '200':
          description: The episode was deleted.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/{episode_id}/play:
    parameters:
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: playEpisode
      tags:
      - Episodes
      summary: Stream an episode
      description: Returns the audio stream for an episode over HTTPS.
      responses:
        '200':
          description: The episode audio stream.
  /episodes/{episode_id}/download:
    parameters:
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: downloadEpisode
      tags:
      - Episodes
      summary: Download an episode
      responses:
        '200':
          description: The episode audio file.
  /users/{user_id}/episodes:
    parameters:
    - $ref: '#/components/parameters/UserId'
    get:
      operationId: listUserEpisodes
      tags:
      - Episodes
      summary: Retrieve a user's episodes
      responses:
        '200':
          description: A paginated list of episodes.
  /users/{user_id}/likes/{episode_id}:
    parameters:
    - $ref: '#/components/parameters/UserId'
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: checkLike
      tags:
      - Episodes
      summary: Check if an episode is liked
      responses:
        '200':
          description: Whether the user liked the episode.
    put:
      operationId: addLike
      tags:
      - Episodes
      summary: Like an episode
      responses:
        '200':
          description: The like was added.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: removeLike
      tags:
      - Episodes
      summary: Unlike an episode
      responses:
        '200':
          description: The like was removed.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /users/{user_id}/bookmarks/{episode_id}:
    parameters:
    - $ref: '#/components/parameters/UserId'
    - $ref: '#/components/parameters/EpisodeId'
    put:
      operationId: addBookmark
      tags:
      - Episodes
      summary: Bookmark an episode
      responses:
        '200':
          description: The bookmark was added.
        '401':
          $ref: '#/components/responses/Unauthorized'
    delete:
      operationId: removeBookmark
      tags:
      - Episodes
      summary: Remove a bookmark
      responses:
        '200':
          description: The bookmark was removed.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/{episode_id}/messages:
    parameters:
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: listEpisodeMessages
      tags:
      - Episodes
      summary: Retrieve episode messages
      responses:
        '200':
          description: A paginated list of messages.
    post:
      operationId: createEpisodeMessage
      tags:
      - Episodes
      summary: Leave a message on an episode
      responses:
        '200':
          description: The created message.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/{episode_id}/chapters:
    parameters:
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: listEpisodeChapters
      tags:
      - Episodes
      summary: Retrieve episode chapters
      responses:
        '200':
          description: The episode chapters.
    post:
      operationId: addEpisodeChapter
      tags:
      - Episodes
      summary: Add an episode chapter
      responses:
        '200':
          description: The created chapter.
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/{episode_id}/cuepoints:
    parameters:
    - $ref: '#/components/parameters/EpisodeId'
    get:
      operationId: listEpisodeCuepoints
      tags:
      - Episodes
      summary: Retrieve episode ad cuepoints
      responses:
        '200':
          description: The episode cuepoints.
    post:
      operationId: updateEpisodeCuepoints
      tags:
      - Episodes
      summary: Update episode ad cuepoints
      responses:
        '200':
          description: The updated cuepoints.
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  parameters:
    UserId:
      name: user_id
      in: path
      required: true
      schema:
        type: integer
      description: The user ID.
    EpisodeId:
      name: episode_id
      in: path
      required: true
      schema:
        type: integer
      description: The episode ID.
    ShowId:
      name: show_id
      in: path
      required: true
      schema:
        type: integer
      description: The show ID.
  responses:
    Unauthorized:
      description: The request was not authenticated with a valid OAuth2 token.
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth2. Authorize at https://www.spreaker.com/oauth2/authorize and exchange or refresh tokens at https://api.spreaker.com/oauth2/token. Access tokens are sent as a Bearer token in the Authorization header.
      flows:
        authorizationCode:
          authorizationUrl: https://www.spreaker.com/oauth2/authorize
          tokenUrl: https://api.spreaker.com/oauth2/token
          refreshUrl: https://api.spreaker.com/oauth2/token
          scopes:
            basic: Basic access to the Spreaker API on behalf of the user.