openapi: 3.0.3
info:
description: 'You can use Spotify''s Web API to discover music and podcasts, manage your Spotify library, control audio playback, and much more. Browse our available Web API endpoints using the sidebar at left, or via the navigation bar on top of this page on smaller screens.
In order to make successful Web API requests your app will need a valid access token. One can be obtained through OAuth 2.0.
The base URI for all Web API requests is `https://api.spotify.com/v1`.
Need help? See our Web API guides for more information, or visit the Spotify for Developers community forum to ask questions and connect with other developers.
'
version: 1.0.0
title: Spotify Web Albums Episodes API
termsOfService: https://developer.spotify.com/terms/
contact:
name: Spotify for Developers Community
url: https://community.spotify.com/t5/Spotify-for-Developers/bd-p/Spotify_Developer
servers:
- url: https://api.spotify.com/v1
tags:
- name: Episodes
paths:
/shows/{id}/episodes:
get:
tags:
- Episodes
operationId: get-a-shows-episodes
x-spotify-policy-list:
$ref: '#/components/x-spotify-policy/metadataPolicyList'
summary: 'Get Show Episodes
'
description: 'Get Spotify catalog information about an show’s episodes. Optional parameters can be used to limit the number of episodes returned.
'
parameters:
- $ref: '#/components/parameters/PathShowId'
- $ref: '#/components/parameters/QueryMarket'
- $ref: '#/components/parameters/QueryLimit'
- $ref: '#/components/parameters/QueryOffset'
responses:
'200':
$ref: '#/components/responses/PagingSimplifiedEpisodeObject'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-read-playback-position
/episodes/{id}:
get:
tags:
- Episodes
operationId: get-an-episode
x-spotify-policy-list:
$ref: '#/components/x-spotify-policy/metadataPolicyList'
summary: 'Get Episode
'
description: 'Get Spotify catalog information for a single episode identified by its
unique Spotify ID.
'
parameters:
- name: id
required: true
in: path
schema:
title: Get an Episode
description: The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the episode.
example: 512ojhOuo1ktJprKbVcKyQ
type: string
- $ref: '#/components/parameters/QueryMarket'
responses:
'200':
$ref: '#/components/responses/OneEpisode'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-read-playback-position
/episodes:
get:
deprecated: true
tags:
- Episodes
operationId: get-multiple-episodes
x-spotify-policy-list:
$ref: '#/components/x-spotify-policy/metadataPolicyList'
summary: 'Get Several Episodes
'
description: 'Get Spotify catalog information for several episodes based on their Spotify IDs.
'
parameters:
- name: ids
required: true
in: query
schema:
title: Ids
description: 'A comma-separated list of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids) for the episodes. Maximum: 50 IDs.
'
example: 77o6BIVlYM3msb4MMIL1jH,0Q86acNRm6V9GYx55SXKwf
type: string
- $ref: '#/components/parameters/QueryMarket'
responses:
'200':
$ref: '#/components/responses/ManyEpisodes'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-read-playback-position
/me/episodes:
get:
tags:
- Episodes
operationId: get-users-saved-episodes
summary: 'Get User''s Saved Episodes
'
description: 'Get a list of the episodes saved in the current Spotify user''s library.
'
parameters:
- $ref: '#/components/parameters/QueryMarket'
- $ref: '#/components/parameters/QueryLimit'
- $ref: '#/components/parameters/QueryOffset'
responses:
'200':
$ref: '#/components/responses/PagingSavedEpisodeObject'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-library-read
- user-read-playback-position
put:
deprecated: true
tags:
- Episodes
operationId: save-episodes-user
summary: 'Save Episodes for Current User
'
description: 'Save one or more episodes to the current user''s library.
**Note:** This endpoint is deprecated. Use [Save Items to Library](/documentation/web-api/reference/save-library-items) instead.
'
parameters:
- name: ids
required: true
in: query
schema:
title: Spotify Episodes IDs
description: 'A comma-separated list of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids). Maximum: 50 IDs.
'
example: 77o6BIVlYM3msb4MMIL1jH,0Q86acNRm6V9GYx55SXKwf
type: string
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: true
required:
- uris
properties:
ids:
type: array
description: 'A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids).
A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._
'
items:
type: string
responses:
'200':
description: Episode saved
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-library-modify
delete:
deprecated: true
tags:
- Episodes
operationId: remove-episodes-user
summary: 'Remove User''s Saved Episodes
'
description: 'Remove one or more episodes from the current user''s library.
**Note:** This endpoint is deprecated. Use [Remove Items from Library](/documentation/web-api/reference/remove-library-items) instead.
'
parameters:
- $ref: '#/components/parameters/QueryTrackIds'
requestBody:
content:
application/json:
schema:
type: object
additionalProperties: true
properties:
ids:
type: array
description: 'A JSON array of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids).
A maximum of 50 items can be specified in one request. _**Note**: if the `ids` parameter is present in the query string, any IDs listed here in the body will be ignored._
'
items:
type: string
responses:
'200':
description: Episode removed
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-library-modify
/me/episodes/contains:
get:
tags:
- Episodes
operationId: check-users-saved-episodes
summary: 'Check User''s Saved Episodes
'
deprecated: true
description: 'Check if one or more episodes is already saved in the current Spotify user''s ''Your Episodes'' library.
**Note:** This endpoint is deprecated. Use [Check User''s Saved Items](/documentation/web-api/reference/check-library-contains) instead.
'
parameters:
- name: ids
required: true
in: query
schema:
title: Spotify Episode IDs
description: 'A comma-separated list of the [Spotify IDs](/documentation/web-api/concepts/spotify-uris-ids) for the episodes. Maximum: 50 IDs.
'
example: 77o6BIVlYM3msb4MMIL1jH,0Q86acNRm6V9GYx55SXKwf
type: string
responses:
'200':
$ref: '#/components/responses/ArrayOfBooleans'
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
'429':
$ref: '#/components/responses/TooManyRequests'
security:
- oauth_2_0:
- user-library-read
components:
schemas:
PagingSavedEpisodeObject:
type: object
x-spotify-docs-type: PagingEpisodeObject
allOf:
- $ref: '#/components/schemas/PagingObject'
- type: object
properties:
items:
type: array
items:
$ref: '#/components/schemas/SavedEpisodeObject'
EpisodeBase:
type: object
required:
- audio_preview_url
- description
- html_description
- duration_ms
- explicit
- external_urls
- href
- id
- images
- is_externally_hosted
- is_playable
- languages
- name
- release_date
- release_date_precision
- type
- uri
properties:
audio_preview_url:
deprecated: true
type: string
nullable: true
example: https://p.scdn.co/mp3-preview/2f37da1d4221f40b9d1a98cd191f4d6f1646ad17
description: 'A URL to a 30 second preview (MP3 format) of the episode. `null` if not available.
'
x-spotify-policy-list:
- $ref: '#/components/x-spotify-policy/policies/StandalonePreview'
description:
type: string
example: 'A Spotify podcast sharing fresh insights on important topics of the moment—in a way only Spotify can. You’ll hear from experts in the music, podcast and tech industries as we discover and uncover stories about our work and the world around us.
'
description: 'A description of the episode. HTML tags are stripped away from this field, use `html_description` field in case HTML tags are needed.
'
html_description:
type: string
example: '
A Spotify podcast sharing fresh insights on important topics of the moment—in a way only Spotify can. You’ll hear from experts in the music, podcast and tech industries as we discover and uncover stories about our work and the world around us.
' description: 'A description of the episode. This field may contain HTML tags. ' duration_ms: type: integer example: 1686230 description: 'The episode length in milliseconds. ' explicit: type: boolean description: 'Whether or not the episode has explicit content (true = yes it does; false = no it does not OR unknown). ' external_urls: allOf: - $ref: '#/components/schemas/ExternalUrlObject' description: 'External URLs for this episode. ' href: type: string example: https://api.spotify.com/v1/episodes/5Xt5DXGzch68nYYamXrNxZ description: 'A link to the Web API endpoint providing full details of the episode. ' id: type: string example: 5Xt5DXGzch68nYYamXrNxZ description: 'The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the episode. ' images: type: array items: $ref: '#/components/schemas/ImageObject' description: 'The cover art for the episode in various sizes, widest first. ' is_externally_hosted: type: boolean description: 'True if the episode is hosted outside of Spotify''s CDN. ' is_playable: type: boolean description: 'True if the episode is playable in the given market. Otherwise false. ' language: type: string deprecated: true example: en description: 'The language used in the episode, identified by a [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code. This field is deprecated and might be removed in the future. Please use the `languages` field instead. ' languages: type: array items: type: string example: - fr - en description: 'A list of the languages used in the episode, identified by their [ISO 639-1](https://en.wikipedia.org/wiki/ISO_639) code. ' name: type: string example: 'Starting Your Own Podcast: Tips, Tricks, and Advice From Anchor Creators ' description: 'The name of the episode. ' release_date: type: string example: '1981-12-15' description: 'The date the episode was first released, for example `"1981-12-15"`. Depending on the precision, it might be shown as `"1981"` or `"1981-12"`. ' release_date_precision: type: string example: day enum: - year - month - day description: 'The precision with which `release_date` value is known. ' resume_point: allOf: - $ref: '#/components/schemas/ResumePointObject' description: 'The user''s most recent position in the episode. Set if the supplied access token is a user token and has the scope ''user-read-playback-position''. ' type: type: string enum: - episode description: 'The object type. ' uri: type: string example: spotify:episode:0zLhl3WsOCQHbe1BPTiHgr description: 'The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the episode. ' restrictions: allOf: - $ref: '#/components/schemas/EpisodeRestrictionObject' description: 'Included in the response when a content restriction is applied. ' SimplifiedEpisodeObject: x-spotify-docs-type: SimplifiedEpisodeObject type: object allOf: - $ref: '#/components/schemas/EpisodeBase' - type: object ExternalUrlObject: type: object x-spotify-docs-type: ExternalUrlObject properties: spotify: type: string description: 'The [Spotify URL](/documentation/web-api/concepts/spotify-uris-ids) for the object. ' PagingSimplifiedEpisodeObject: type: object x-spotify-docs-type: PagingEpisodeObject allOf: - $ref: '#/components/schemas/PagingObject' - type: object properties: items: type: array items: $ref: '#/components/schemas/SimplifiedEpisodeObject' ErrorObject: type: object x-spotify-docs-type: ErrorObject required: - status - message properties: status: type: integer minimum: 400 maximum: 599 description: 'The HTTP status code (also returned in the response header; see [Response Status Codes](/documentation/web-api/concepts/api-calls#response-status-codes) for more information). ' message: type: string description: 'A short description of the cause of the error. ' SavedEpisodeObject: type: object x-spotify-docs-type: SavedEpisodeObject properties: added_at: type: string format: date-time x-spotify-docs-type: Timestamp description: 'The date and time the episode was saved. Timestamps are returned in ISO 8601 format as Coordinated Universal Time (UTC) with a zero offset: YYYY-MM-DDTHH:MM:SSZ. ' episode: allOf: - $ref: '#/components/schemas/EpisodeObject' description: Information about the episode. ImageObject: type: object x-spotify-docs-type: ImageObject required: - url - height - width properties: url: type: string example: 'https://i.scdn.co/image/ab67616d00001e02ff9ca10b55ce82ae553c8228 ' description: 'The source URL of the image. ' height: type: integer example: 300 nullable: true description: 'The image height in pixels. ' width: type: integer example: 300 nullable: true description: 'The image width in pixels. ' EpisodeObject: x-spotify-docs-type: EpisodeObject type: object allOf: - $ref: '#/components/schemas/EpisodeBase' - type: object required: - show properties: show: allOf: - $ref: '#/components/schemas/SimplifiedShowObject' description: 'The show on which the episode belongs. ' SimplifiedShowObject: x-spotify-docs-type: SimplifiedShowObject allOf: - $ref: '#/components/schemas/ShowBase' - type: object CopyrightObject: type: object x-spotify-docs-type: CopyrightObject properties: text: type: string description: 'The copyright text for this content. ' type: type: string description: 'The type of copyright: `C` = the copyright, `P` = the sound recording (performance) copyright. ' PagingObject: type: object x-spotify-docs-type: PagingObject required: - href - items - limit - next - offset - previous - total properties: href: type: string example: 'https://api.spotify.com/v1/me/shows?offset=0&limit=20 ' description: 'A link to the Web API endpoint returning the full result of the request ' limit: type: integer example: 20 description: 'The maximum number of items in the response (as set in the query or by default). ' next: type: string example: https://api.spotify.com/v1/me/shows?offset=1&limit=1 nullable: true description: 'URL to the next page of items. ( `null` if none) ' offset: type: integer example: 0 description: 'The offset of the items returned (as set in the query or by default) ' previous: type: string example: https://api.spotify.com/v1/me/shows?offset=1&limit=1 nullable: true description: 'URL to the previous page of items. ( `null` if none) ' total: type: integer example: 4 description: 'The total number of items available to return. ' EpisodeRestrictionObject: type: object x-spotify-docs-type: EpisodeRestrictionObject properties: reason: type: string description: 'The reason for the restriction. Supported values: - `market` - The content item is not available in the given market. - `product` - The content item is not available for the user''s subscription type. - `explicit` - The content item is explicit and the user''s account is set to not play explicit content. Additional reasons may be added in the future. **Note**: If you use this field, make sure that your application safely handles unknown values. ' ResumePointObject: type: object x-spotify-docs-type: ResumePointObject properties: fully_played: type: boolean description: 'Whether or not the episode has been fully played by the user. ' resume_position_ms: type: integer description: 'The user''s most recent position in the episode in milliseconds. ' ShowBase: type: object required: - available_markets - copyrights - description - explicit - external_urls - href - html_description - id - images - is_externally_hosted - languages - media_type - name - publisher - total_episodes - type - uri properties: available_markets: deprecated: true type: array items: type: string description: 'A list of the countries in which the show can be played, identified by their [ISO 3166-1 alpha-2](http://en.wikipedia.org/wiki/ISO_3166-1_alpha-2) code. ' copyrights: type: array items: $ref: '#/components/schemas/CopyrightObject' description: 'The copyright statements of the show. ' description: type: string description: 'A description of the show. HTML tags are stripped away from this field, use `html_description` field in case HTML tags are needed. ' html_description: type: string description: 'A description of the show. This field may contain HTML tags. ' explicit: type: boolean description: 'Whether or not the show has explicit content (true = yes it does; false = no it does not OR unknown). ' external_urls: allOf: - $ref: '#/components/schemas/ExternalUrlObject' description: 'External URLs for this show. ' href: type: string description: 'A link to the Web API endpoint providing full details of the show. ' id: type: string description: 'The [Spotify ID](/documentation/web-api/concepts/spotify-uris-ids) for the show. ' images: type: array items: $ref: '#/components/schemas/ImageObject' description: 'The cover art for the show in various sizes, widest first. ' is_externally_hosted: type: boolean description: 'True if all of the shows episodes are hosted outside of Spotify''s CDN. This field might be `null` in some cases. ' languages: type: array items: type: string description: 'A list of the languages used in the show, identified by their [ISO 639](https://en.wikipedia.org/wiki/ISO_639) code. ' media_type: type: string description: 'The media type of the show. ' name: type: string description: 'The name of the episode. ' publisher: deprecated: true type: string description: 'The publisher of the show. ' type: type: string enum: - show description: 'The object type. ' uri: type: string description: 'The [Spotify URI](/documentation/web-api/concepts/spotify-uris-ids) for the show. ' total_episodes: type: integer description: 'The total number of episodes in the show. ' x-spotify-policy: metadataPolicyList: - $ref: '#/components/x-spotify-policy/policies/Downloading' - $ref: '#/components/x-spotify-policy/policies/VisualAlteration' - $ref: '#/components/x-spotify-policy/policies/Attribution' responses: OneEpisode: description: An episode content: application/json: schema: $ref: '#/components/schemas/EpisodeObject' ManyEpisodes: description: A set of episodes content: application/json: schema: type: object required: - episodes properties: episodes: type: array items: $ref: '#/components/schemas/EpisodeObject' Forbidden: description: 'Bad OAuth request (wrong consumer key, bad nonce, expired timestamp...). Unfortunately, re-authenticating the user won''t help here. ' content: application/json: schema: type: object required: - error properties: error: $ref: '#/components/schemas/ErrorObject' Unauthorized: description: 'Bad or expired token. This can happen if the user revoked a token or the access token has expired. You should re-authenticate the user. ' content: application/json: schema: type: object required: - error properties: error: $ref: '#/components/schemas/ErrorObject' ArrayOfBooleans: description: Array of booleans content: application/json: schema: type: array example: - false - true items: type: boolean PagingSimplifiedEpisodeObject: description: Pages of episodes content: application/json: schema: $ref: '#/components/schemas/PagingSimplifiedEpisodeObject' PagingSavedEpisodeObject: description: Pages of episodes content: application/json: schema: $ref: '#/components/schemas/PagingSavedEpisodeObject' TooManyRequests: description: 'The app has exceeded its rate limits. ' content: application/json: schema: type: object required: - error properties: error: $ref: '#/components/schemas/ErrorObject' parameters: QueryMarket: name: market required: false in: query schema: title: Market description: "An [ISO 3166-1 alpha-2 country code](https://en.wikipedia.org/wiki/ISO_3166-1_alpha-2).\n If a country code is specified, only content that is available in that market will be returned.