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 Users 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: Users
description: Read a user and list the shows they can access or manage.
paths:
/users/{id}:
get:
operationId: getUser
tags:
- Users
summary: Get User
description: Get a user record by user ID.
parameters:
- $ref: '#/components/parameters/UserId'
responses:
'200':
description: The user record (modeled).
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
'401':
$ref: '#/components/responses/Unauthorized'
/users/{id}/shows:
get:
operationId: getUserShows
tags:
- Users
summary: Get Users Shows
description: The shows that this user can access regardless of their role.
parameters:
- $ref: '#/components/parameters/UserId'
responses:
'200':
description: A list of shows the user can access (modeled).
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
'401':
$ref: '#/components/responses/Unauthorized'
/users/{id}/shows/manager:
get:
operationId: getUserManagedShows
tags:
- Users
summary: Get Users Managed Shows
description: The shows that the user is manager or owner of; they can create and invite new users to these shows.
parameters:
- $ref: '#/components/parameters/UserId'
responses:
'200':
description: A list of shows the user manages or owns (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
responses:
Unauthorized:
description: Missing or invalid Bearer token.
content:
application/json:
schema:
$ref: '#/components/schemas/GenericObject'
parameters:
UserId:
name: id
in: path
required: true
description: The Captivate user ID (UUID).
schema:
type: string
securitySchemes:
bearerAuth:
type: http
scheme: bearer
description: 'Bearer token obtained from POST /authenticate/token. Sent as Authorization: Bearer {token}.'