Captivate Episodes API

List, read, create, and update episodes.

OpenAPI Specification

captivate-fm-episodes-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Captivate Analytics Episodes API
  version: '1.0'
  description: Public REST API for the Captivate podcast hosting, distribution, and analytics platform. Authenticate a user with their user ID and API token to obtain a Bearer token, then manage shows, episodes, and media and read detailed listening analytics (insights). Endpoints, paths, methods, and request fields in this document are transcribed from Captivate's public Postman documentation at https://docs.captivate.fm. Response schemas are modeled honestly - Captivate's public docs describe the requests and fields but do not publish full JSON response schemas, so response bodies below are generic objects and marked as modeled.
  contact:
    name: Captivate API Support
    email: api@captivate.fm
    url: https://docs.captivate.fm/
  x-endpoints-source: Paths and request fields confirmed from the public Captivate API Postman collection (docs.captivate.fm). Response bodies are modeled.
servers:
- url: https://api.captivate.fm
  description: Captivate production API
security:
- bearerAuth: []
tags:
- name: Episodes
  description: List, read, create, and update episodes.
paths:
  /shows/{id}/episodes:
    get:
      operationId: getShowEpisodes
      tags:
      - Episodes
      summary: Get Show Episodes
      description: A full breakdown of all the episodes for this show plus a count of the total number of episodes.
      parameters:
      - $ref: '#/components/parameters/ShowId'
      responses:
        '200':
          description: The show's episodes and a count (modeled).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /shows/{id}/episodes/scheduled:
    get:
      operationId: getShowScheduledEpisodes
      tags:
      - Episodes
      summary: Get Show Scheduled Episodes
      description: All scheduled (future) episodes for this show plus a count.
      parameters:
      - $ref: '#/components/parameters/ShowId'
      responses:
        '200':
          description: The show's scheduled episodes and a count (modeled).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes/{id}:
    get:
      operationId: getEpisode
      tags:
      - Episodes
      summary: Get Episode
      description: Get the full information for an episode by episode ID.
      parameters:
      - $ref: '#/components/parameters/EpisodeId'
      responses:
        '200':
          description: The episode record (modeled).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
    put:
      operationId: updateEpisode
      tags:
      - Episodes
      summary: Update Episode
      description: Update an existing episode.
      parameters:
      - $ref: '#/components/parameters/EpisodeId'
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EpisodeInput'
      responses:
        '200':
          description: The updated episode (modeled).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /episodes:
    post:
      operationId: createEpisode
      tags:
      - Episodes
      summary: Create Episode
      description: Create an episode with the following parameters.
      requestBody:
        required: true
        content:
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/EpisodeInput'
      responses:
        '200':
          description: The created episode (modeled).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenericObject'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    GenericObject:
      type: object
      description: Modeled response object. Captivate's public documentation describes requests and fields but does not publish full JSON response schemas, so response bodies are represented generically.
      additionalProperties: true
    EpisodeInput:
      type: object
      description: Fields for creating or updating an episode (multipart form-data).
      required:
      - shows_id
      - title
      properties:
        shows_id:
          type: string
          description: The show ID (UUID) the episode belongs to.
        title:
          type: string
          example: My Demo Episode
        itunes_title:
          type: string
        media_id:
          type: string
          description: The uploaded media ID (UUID) to attach as the episode audio.
        date:
          type: string
          description: Publish date, format YYYY-MM-DD HH:mm:ss.
        status:
          type: string
          description: e.g. Draft, Published.
          example: Draft
        shownotes:
          type: string
        summary:
          type: string
        itunes_subtitle:
          type: string
        author:
          type: string
        episode_art:
          type: string
          description: URL to episode artwork.
        explicit:
          type: string
        episode_type:
          type: string
          description: e.g. full, trailer, bonus.
        episode_season:
          type: string
        episode_number:
          type: string
        donation_link:
          type: string
        donation_text:
          type: string
        link:
          type: string
        itunes_block:
          type: string
          description: 'true or false: whether to block the episode from Apple Podcasts.'
  parameters:
    ShowId:
      name: id
      in: path
      required: true
      description: The show ID (UUID).
      schema:
        type: string
    EpisodeId:
      name: id
      in: path
      required: true
      description: The episode ID (UUID).
      schema:
        type: string
  responses:
    Unauthorized:
      description: Missing or invalid Bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/GenericObject'
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Bearer token obtained from POST /authenticate/token. Sent as Authorization: Bearer {token}.'
Where this information came from

This is an independent, third-party profile of Captivate Episodes API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.