{
  "opencollection": "1.0.0",
  "info": {
    "name": "Podbean API",
    "version": "1.0",
    "description": "OAuth 2.0 REST API for managing a user's podcast on Podbean - podcasts, episodes, media upload, oEmbed, and analytics. Base URL https://api.podbean.com/v1."
  },
  "items": [
    {
      "info": { "name": "Authentication", "type": "folder" },
      "items": [
        {
          "info": { "name": "Login Dialog", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/dialog/oauth",
            "params": [
              { "name": "client_id", "value": "", "type": "query" },
              { "name": "redirect_uri", "value": "", "type": "query" },
              { "name": "response_type", "value": "code", "type": "query" },
              { "name": "scope", "value": "episode_publish", "type": "query" }
            ]
          },
          "docs": "Redirect a user here to authorize a third-party app; Podbean returns an authorization code."
        },
        {
          "info": { "name": "Get Access Token", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.podbean.com/v1/oauth/token",
            "body": { "type": "urlencoded", "data": "grant_type=client_credentials&client_id=&client_secret=" }
          },
          "docs": "Exchange an authorization code, client credentials, or refresh token for an access token."
        },
        {
          "info": { "name": "Inspect Access Token", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.podbean.com/v1/oauth/debugToken",
            "body": { "type": "urlencoded", "data": "access_token=" }
          },
          "docs": "Returns metadata about an access token - bound podcast, scopes, and expiry."
        },
        {
          "info": { "name": "Get Multiple Podcasts Tokens", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.podbean.com/v1/oauth/multiplePodcastsToken",
            "body": { "type": "urlencoded", "data": "grant_type=client_credentials&client_id=&client_secret=" }
          },
          "docs": "For agencies and networks - obtain per-podcast access tokens for all managed podcasts."
        }
      ]
    },
    {
      "info": { "name": "Podcast", "type": "folder" },
      "items": [
        {
          "info": { "name": "Get Podcast", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/podcast",
            "params": [{ "name": "access_token", "value": "", "type": "query" }]
          },
          "docs": "Returns the profile and settings of the podcast the access token is bound to."
        }
      ]
    },
    {
      "info": { "name": "Episode", "type": "folder" },
      "items": [
        {
          "info": { "name": "List Episodes", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/episodes",
            "params": [
              { "name": "access_token", "value": "", "type": "query" },
              { "name": "offset", "value": "0", "type": "query" },
              { "name": "limit", "value": "20", "type": "query" }
            ]
          },
          "docs": "Lists episodes for the authorized podcast."
        },
        {
          "info": { "name": "Publish New Episode", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.podbean.com/v1/episodes",
            "body": { "type": "urlencoded", "data": "access_token=&title=My New Episode&content=Show notes&status=publish&type=public&media_key=&logo_key=" }
          },
          "docs": "Publishes a new episode, referencing a media_key from the file upload authorization."
        },
        {
          "info": { "name": "Read Episode", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/episodes/:id",
            "params": [
              { "name": "id", "value": "", "type": "path", "description": "The episode ID." },
              { "name": "access_token", "value": "", "type": "query" }
            ]
          },
          "docs": "Returns a single episode by its ID."
        },
        {
          "info": { "name": "Update Episode", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.podbean.com/v1/episodes/:id",
            "params": [{ "name": "id", "value": "", "type": "path", "description": "The episode ID." }],
            "body": { "type": "urlencoded", "data": "access_token=&title=Updated Episode Title" }
          },
          "docs": "Updates an existing episode by ID."
        },
        {
          "info": { "name": "Delete Episode", "type": "http" },
          "http": {
            "method": "POST",
            "url": "https://api.podbean.com/v1/episodes/:id/delete",
            "params": [{ "name": "id", "value": "", "type": "path", "description": "The episode ID." }],
            "body": { "type": "urlencoded", "data": "access_token=" }
          },
          "docs": "Deletes an episode by ID."
        }
      ]
    },
    {
      "info": { "name": "File Upload", "type": "folder" },
      "items": [
        {
          "info": { "name": "Authorize File Upload", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/files/uploadAuthorize",
            "params": [
              { "name": "access_token", "value": "", "type": "query" },
              { "name": "filename", "value": "episode.mp3", "type": "query" },
              { "name": "filesize", "value": "10485760", "type": "query" },
              { "name": "content_type", "value": "audio/mpeg", "type": "query" }
            ]
          },
          "docs": "Returns a presigned URL to PUT the file to, plus a file_key to pass to the Episodes API."
        },
        {
          "info": { "name": "List Media Files", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/medias",
            "params": [{ "name": "access_token", "value": "", "type": "query" }]
          },
          "docs": "Lists media files previously uploaded to the authorized podcast."
        }
      ]
    },
    {
      "info": { "name": "oEmbed", "type": "folder" },
      "items": [
        {
          "info": { "name": "oEmbed", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/oembed",
            "params": [
              { "name": "url", "value": "https://www.podbean.com/ew/example", "type": "query" },
              { "name": "format", "value": "json", "type": "query" }
            ]
          },
          "docs": "Returns embeddable player markup and metadata for a podcast or episode URL. No authentication required."
        }
      ]
    },
    {
      "info": { "name": "Analytics", "type": "folder" },
      "items": [
        {
          "info": { "name": "Podcast Download Reports", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/analytics/podcastReports",
            "params": [{ "name": "access_token", "value": "", "type": "query" }]
          },
          "docs": "Returns download/listen counts for the authorized podcast."
        },
        {
          "info": { "name": "Podcast Engagement Reports", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/analytics/podcastEngagementReports",
            "params": [{ "name": "access_token", "value": "", "type": "query" }]
          },
          "docs": "Returns listener engagement data for the authorized podcast."
        },
        {
          "info": { "name": "Advertise Reports", "type": "http" },
          "http": {
            "method": "GET",
            "url": "https://api.podbean.com/v1/analytics/advertiseReports",
            "params": [{ "name": "access_token", "value": "", "type": "query" }]
          },
          "docs": "Returns advertising/monetization report data for the authorized podcast."
        }
      ]
    }
  ]
}
