Simplecast Analytics API

Audience analytics for podcasts and episodes.

OpenAPI Specification

simplecast-analytics-api-openapi.yml Raw ↑
openapi: 3.0.3
info:
  title: Simplecast Analytics API
  description: 'The Simplecast API lets you manage and read your podcasting data on the Simplecast platform - podcasts (shows), episodes, audience analytics, and distribution channels. The API is accessed at https://api.simplecast.com and is self-describing: each response returns the actions available to the authenticated user. Authentication uses a bearer token obtained from the Private Apps page in the Simplecast dashboard (authorization: Bearer {token}). List endpoints support limit and offset query parameters for pagination. The API is predominantly read-only (HTTP GET); a small number of write operations exist, such as uploading episode audio. Simplecast is owned by SiriusXM Media. Endpoint paths in this document are derived from Simplecast''s official public Postman collection and API documentation; request and response schemas are lightly modeled where the docs do not publish a formal schema.'
  version: '1.0'
  contact:
    name: Simplecast
    url: https://www.simplecast.com
servers:
- url: https://api.simplecast.com
  description: Simplecast production API
security:
- bearerAuth: []
tags:
- name: Analytics
  description: Audience analytics for podcasts and episodes.
paths:
  /analytics:
    get:
      operationId: getAnalytics
      tags:
      - Analytics
      summary: Retrieve overview analytics
      description: Returns overview analytics, scoped by a podcast query parameter.
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Analytics data.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/downloads:
    get:
      operationId: getAnalyticsDownloads
      tags:
      - Analytics
      summary: Retrieve download analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Download analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/listeners:
    get:
      operationId: getAnalyticsListeners
      tags:
      - Analytics
      summary: Retrieve listener analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Listener analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/listeners/last_7:
    get:
      operationId: getAnalyticsListenersLast7
      tags:
      - Analytics
      summary: Retrieve listeners over the last 7 days
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Listener analytics for the last seven days.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/episodes:
    get:
      operationId: getAnalyticsEpisodes
      tags:
      - Analytics
      summary: Retrieve episode analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Episode analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/episodes/average_downloads:
    get:
      operationId: getAnalyticsEpisodesAverageDownloads
      tags:
      - Analytics
      summary: Retrieve average downloads per episode
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Average downloads analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/episodes/hours_listened:
    get:
      operationId: getAnalyticsEpisodesHoursListened
      tags:
      - Analytics
      summary: Retrieve hours listened per episode
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Hours listened analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/episodes/listeners:
    get:
      operationId: getAnalyticsEpisodesListeners
      tags:
      - Analytics
      summary: Retrieve listeners per episode
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Episode listener analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/episodes/top_10:
    get:
      operationId: getAnalyticsEpisodesTop10
      tags:
      - Analytics
      summary: Retrieve the top 10 episodes
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Top episodes analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/podcasts/listeners:
    get:
      operationId: getAnalyticsPodcastsListeners
      tags:
      - Analytics
      summary: Retrieve podcast-level listener analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Podcast listener analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/location:
    get:
      operationId: getAnalyticsLocation
      tags:
      - Analytics
      summary: Retrieve location analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Location analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/time_of_week:
    get:
      operationId: getAnalyticsTimeOfWeek
      tags:
      - Analytics
      summary: Retrieve time-of-week analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Time-of-week analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/campaigns/{campaign_id}:
    get:
      operationId: getAnalyticsCampaign
      tags:
      - Analytics
      summary: Retrieve campaign analytics
      parameters:
      - name: campaign_id
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Campaign analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology:
    get:
      operationId: getAnalyticsTechnology
      tags:
      - Analytics
      summary: Retrieve technology analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Technology analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/applications:
    get:
      operationId: getAnalyticsTechnologyApplications
      tags:
      - Analytics
      summary: Retrieve listening-application analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Application analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/browsers:
    get:
      operationId: getAnalyticsTechnologyBrowsers
      tags:
      - Analytics
      summary: Retrieve browser analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Browser analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/device_class:
    get:
      operationId: getAnalyticsTechnologyDeviceClass
      tags:
      - Analytics
      summary: Retrieve device-class analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Device-class analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/devices:
    get:
      operationId: getAnalyticsTechnologyDevices
      tags:
      - Analytics
      summary: Retrieve device analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Device analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/listening_methods:
    get:
      operationId: getAnalyticsTechnologyListeningMethods
      tags:
      - Analytics
      summary: Retrieve listening-method analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Listening-method analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/network_types:
    get:
      operationId: getAnalyticsTechnologyNetworkTypes
      tags:
      - Analytics
      summary: Retrieve network-type analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Network-type analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/operating_systems:
    get:
      operationId: getAnalyticsTechnologyOperatingSystems
      tags:
      - Analytics
      summary: Retrieve operating-system analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Operating-system analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/providers:
    get:
      operationId: getAnalyticsTechnologyProviders
      tags:
      - Analytics
      summary: Retrieve provider analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Provider analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/technology/web_players:
    get:
      operationId: getAnalyticsTechnologyWebPlayers
      tags:
      - Analytics
      summary: Retrieve web-player analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Web-player analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed:
    get:
      operationId: getAnalyticsEmbed
      tags:
      - Analytics
      summary: Retrieve embed-player analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Embed analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed/avg_completion:
    get:
      operationId: getAnalyticsEmbedAvgCompletion
      tags:
      - Analytics
      summary: Retrieve average completion for the embed player
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Average completion analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed/episodes:
    get:
      operationId: getAnalyticsEmbedEpisodes
      tags:
      - Analytics
      summary: Retrieve embed-player analytics by episode
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Embed episode analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed/heatmap:
    get:
      operationId: getAnalyticsEmbedHeatmap
      tags:
      - Analytics
      summary: Retrieve embed-player heatmap analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Heatmap analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed/listens:
    get:
      operationId: getAnalyticsEmbedListens
      tags:
      - Analytics
      summary: Retrieve embed-player listens
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Listens analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed/locations:
    get:
      operationId: getAnalyticsEmbedLocations
      tags:
      - Analytics
      summary: Retrieve embed-player location analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Location analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
  /analytics/embed/speeds:
    get:
      operationId: getAnalyticsEmbedSpeeds
      tags:
      - Analytics
      summary: Retrieve embed-player playback-speed analytics
      parameters:
      - $ref: '#/components/parameters/PodcastQuery'
      responses:
        '200':
          description: Playback-speed analytics.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Analytics'
        '401':
          $ref: '#/components/responses/Unauthorized'
components:
  schemas:
    Analytics:
      type: object
      description: An analytics result. Shape varies by analytics endpoint; modeled generically.
      properties:
        id:
          type: string
        downloads:
          type: object
        by_interval:
          type: array
          items:
            type: object
    Error:
      type: object
      properties:
        error:
          type: string
        message:
          type: string
  responses:
    Unauthorized:
      description: Missing or invalid bearer token.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  parameters:
    PodcastQuery:
      name: podcast
      in: query
      required: false
      description: The podcast ID to scope the analytics query to.
      schema:
        type: string
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: 'Bearer token generated from the Private Apps page in the Simplecast dashboard. Sent as "authorization: Bearer {token}".'