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.
openapi: 3.2.0
info:
title: Captivate Analytics Shows 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: Shows
description: Read and update shows, upload artwork, get the RSS feed URL.
paths:
/shows/{id}/:
get:
operationId: getShow
tags:
- Shows
summary: Get Show
description: Get the show information by the show ID.
parameters:
- $ref: '#/components/parameters/ShowId'
responses:
'200':
description: The show record (modeled).
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
'401':
$ref: '#/components/responses/Unauthorized'
/shows/{id}:
put:
operationId: updateShow
tags:
- Shows
summary: Update Show
description: Update the show's metadata.
parameters:
- $ref: '#/components/parameters/ShowId'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
properties:
title:
type: string
example: My Demo Show
description:
type: string
summary:
type: string
subtitle:
type: string
author:
type: string
name:
type: string
categories[0]:
type: string
description: Apple Podcasts category code, e.g. 01.00.
itunes_email:
type: string
copyright:
type: string
explicit:
type: string
description: e.g. clean, explicit.
order:
type: string
example: DESC
limit:
type: string
type:
type: string
description: e.g. episodic or serial.
language:
type: string
example: en
donation_link:
type: string
link:
type: string
third_party_analytics:
type: string
description: Third-party analytics prefix, e.g. a Chartable tracking URL.
responses:
'200':
description: The updated show (modeled).
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
'401':
$ref: '#/components/responses/Unauthorized'
/shows/{id}/artwork:
post:
operationId: createShowArtwork
tags:
- Shows
summary: Create Show Artwork
description: Upload the show's artwork. The file must be a JPG or PNG in the RGB colorspace (not CMYK), completely square, with a minimum of 1400px height.
parameters:
- $ref: '#/components/parameters/ShowId'
requestBody:
required: true
content:
multipart/form-data:
schema:
type: object
required:
- file
properties:
file:
type: string
format: binary
description: Square JPG or PNG artwork, RGB, minimum 1400px.
responses:
'200':
description: Artwork accepted (modeled).
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
'401':
$ref: '#/components/responses/Unauthorized'
/shows/{id}/feed:
get:
operationId: getShowFeedUrl
tags:
- Shows
summary: Get Show Feed URL
description: Get the public RSS feed URL for this show.
parameters:
- $ref: '#/components/parameters/ShowId'
responses:
'200':
description: The RSS feed URL (modeled).
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
'401':
$ref: '#/components/responses/Unauthorized'
components:
responses:
Unauthorized:
description: Missing or invalid Bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
parameters:
ShowId:
name: id
in: path
required: true
description: The show ID (UUID).
schema:
type: string
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
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Bearer token obtained from POST /authenticate/token. Sent as Authorization: Bearer {token}.'