Sonarr Series API
The Series API from Sonarr — 5 operation(s) for series.
The Series API from Sonarr — 5 operation(s) for series.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/sonarr:sonarr-series-api"
curl "https://apis.io/api/v1/apis?limit=25"
Calls without X-API-Key need no key. Calls with it need a paid plan — get a 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.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Sonarr Series API
license:
name: GPL-3.0
url: https://github.com/Sonarr/Sonarr/blob/develop/LICENSE
version: '1.0'
description: 'Operations tagged Series across 2 of this provider''s published API definitions: openapi_v3.json, openapi_v5.json. Each path carries the servers of the definition it was published in.'
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
security:
- X-Api-Key: []
- apikey: []
tags:
- name: Series
paths:
/api/v3/series:
get:
tags:
- Series
parameters:
- name: tvdbId
in: query
schema:
type: integer
format: int32
- name: includeSeasonImages
in: query
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SeriesResource'
summary: Get api series
x-summary-source: derived
operationId: getApiV3Series
x-operation-id-source: derived
post:
tags:
- Series
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource'
summary: Create api series
x-summary-source: derived
operationId: postApiV3Series
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/series/{id}:
get:
tags:
- Series
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
- name: includeSeasonImages
in: query
schema:
type: boolean
default: false
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource'
summary: Get api series by id
x-summary-source: derived
operationId: getApiV3SeriesById
x-operation-id-source: derived
put:
tags:
- Series
parameters:
- name: moveFiles
in: query
schema:
type: boolean
default: false
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource'
summary: Replace api series by id
x-summary-source: derived
operationId: putApiV3SeriesById
x-operation-id-source: derived
delete:
tags:
- Series
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
- name: deleteFiles
in: query
schema:
type: boolean
default: false
- name: addImportListExclusion
in: query
schema:
type: boolean
default: false
responses:
'200':
description: OK
summary: Delete api series by id
x-summary-source: derived
operationId: deleteApiV3SeriesById
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/series:
get:
tags:
- Series
parameters:
- name: tvdbId
in: query
schema:
type: integer
format: int32
- name: includeSubresources
in: query
schema:
type: array
items:
$ref: '#/components/schemas/SeriesSubresource'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/SeriesResource_2'
summary: Get api series
x-summary-source: derived
operationId: getApiV5Series
x-operation-id-source: derived
post:
tags:
- Series
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource_2'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource_2'
'404':
description: Not Found
summary: Create api series
x-summary-source: derived
operationId: postApiV5Series
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/series/{id}:
get:
tags:
- Series
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
- name: includeSubresources
in: query
schema:
type: array
items:
$ref: '#/components/schemas/SeriesSubresource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource_2'
'404':
description: Not Found
summary: Get api series by id
x-summary-source: derived
operationId: getApiV5SeriesById
x-operation-id-source: derived
put:
tags:
- Series
parameters:
- name: moveFiles
in: query
schema:
type: boolean
default: false
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource_2'
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/SeriesResource_2'
'404':
description: Not Found
summary: Replace api series by id
x-summary-source: derived
operationId: putApiV5SeriesById
x-operation-id-source: derived
delete:
tags:
- Series
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
- name: deleteFiles
in: query
schema:
type: boolean
default: false
- name: addImportListExclusion
in: query
schema:
type: boolean
default: false
responses:
'204':
description: No Content
summary: Delete api series by id
x-summary-source: derived
operationId: deleteApiV5SeriesById
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/series/{id}/season:
put:
tags:
- Series
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/SeasonResource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/SeasonResource'
'404':
description: Not Found
summary: Replace api series by id season
x-summary-source: derived
operationId: putApiV5SeriesByIdSeason
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
components:
schemas:
SeasonStatisticsResource:
type: object
properties:
nextAiring:
type:
- string
- 'null'
format: date-time
previousAiring:
type:
- string
- 'null'
format: date-time
episodeFileCount:
type: integer
format: int32
episodeCount:
type: integer
format: int32
totalEpisodeCount:
type: integer
format: int32
sizeOnDisk:
type: integer
format: int64
releaseGroups:
type:
- array
- 'null'
items:
type: string
percentOfEpisodes:
type: number
format: double
readOnly: true
additionalProperties: false
NewItemMonitorTypes:
enum:
- all
- none
type: string
AlternateTitleResource:
type: object
properties:
title:
type:
- string
- 'null'
seasonNumber:
type:
- integer
- 'null'
format: int32
sceneSeasonNumber:
type:
- integer
- 'null'
format: int32
sceneOrigin:
type:
- string
- 'null'
comment:
type:
- string
- 'null'
additionalProperties: false
SeriesStatusType:
enum:
- continuing
- ended
- upcoming
- deleted
type: string
SeriesTranslationResource:
type: object
properties:
language:
$ref: '#/components/schemas/Language'
title:
type:
- string
- 'null'
overview:
type:
- string
- 'null'
additionalProperties: false
SeriesStatisticsResource:
type: object
properties:
seasonCount:
type: integer
format: int32
episodeFileCount:
type: integer
format: int32
episodeCount:
type: integer
format: int32
totalEpisodeCount:
type: integer
format: int32
sizeOnDisk:
type: integer
format: int64
releaseGroups:
type:
- array
- 'null'
items:
type: string
percentOfEpisodes:
type: number
format: double
readOnly: true
additionalProperties: false
SeriesTypes:
enum:
- standard
- daily
- anime
type: string
AddSeriesOptions:
type: object
properties:
ignoreEpisodesWithFiles:
type: boolean
ignoreEpisodesWithoutFiles:
type: boolean
monitor:
$ref: '#/components/schemas/MonitorTypes'
searchForMissingEpisodes:
type: boolean
searchForCutoffUnmetEpisodes:
type: boolean
additionalProperties: false
MediaCoverTypes:
enum:
- unknown
- poster
- banner
- fanart
- screenshot
- headshot
- clearlogo
type: string
Language:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
additionalProperties: false
SeasonResource:
type: object
properties:
seasonNumber:
type: integer
format: int32
monitored:
type: boolean
title:
type:
- string
- 'null'
statistics:
$ref: '#/components/schemas/SeasonStatisticsResource'
images:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MediaCover'
additionalProperties: false
MediaCover:
type: object
properties:
coverType:
$ref: '#/components/schemas/MediaCoverTypes'
url:
type:
- string
- 'null'
remoteUrl:
type:
- string
- 'null'
additionalProperties: false
MonitorTypes:
enum:
- unknown
- all
- future
- missing
- existing
- firstSeason
- lastSeason
- latestSeason
- pilot
- recent
- monitorSpecials
- unmonitorSpecials
- none
- skip
type: string
SeriesResource:
type: object
properties:
id:
type: integer
format: int32
title:
type:
- string
- 'null'
alternateTitles:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/AlternateTitleResource'
sortTitle:
type:
- string
- 'null'
status:
$ref: '#/components/schemas/SeriesStatusType'
ended:
type: boolean
readOnly: true
profileName:
type:
- string
- 'null'
overview:
type:
- string
- 'null'
nextAiring:
type:
- string
- 'null'
format: date-time
previousAiring:
type:
- string
- 'null'
format: date-time
network:
type:
- string
- 'null'
airTime:
type:
- string
- 'null'
images:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MediaCover'
language:
$ref: '#/components/schemas/Language'
originalLanguage:
$ref: '#/components/schemas/Language'
remotePoster:
type:
- string
- 'null'
seasonType:
type:
- string
- 'null'
seasons:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeasonResource'
seasonTypes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeasonTypeResource'
translations:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeriesTranslationResource'
year:
type: integer
format: int32
path:
type:
- string
- 'null'
pendingPath:
type:
- string
- 'null'
qualityProfileId:
type: integer
format: int32
seasonFolder:
type: boolean
monitored:
type: boolean
monitorNewItems:
$ref: '#/components/schemas/NewItemMonitorTypes'
useSceneNumbering:
type: boolean
runtime:
type: integer
format: int32
tvdbId:
type: integer
format: int32
tvRageId:
type: integer
format: int32
tvMazeId:
type: integer
format: int32
tmdbId:
type: integer
format: int32
firstAired:
type:
- string
- 'null'
format: date-time
lastAired:
type:
- string
- 'null'
format: date-time
seriesType:
$ref: '#/components/schemas/SeriesTypes'
cleanTitle:
type:
- string
- 'null'
originalTitle:
type:
- string
- 'null'
cleanOriginalTitle:
type:
- string
- 'null'
imdbId:
type:
- string
- 'null'
titleSlug:
type:
- string
- 'null'
rootFolderPath:
type:
- string
- 'null'
folder:
type:
- string
- 'null'
folders:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeriesFolderResource'
certification:
type:
- string
- 'null'
genres:
type:
- array
- 'null'
items:
type: string
tags:
uniqueItems: true
type:
- array
- 'null'
items:
type: integer
format: int32
added:
type: string
format: date-time
addOptions:
$ref: '#/components/schemas/AddSeriesOptions'
ratings:
$ref: '#/components/schemas/Ratings'
statistics:
$ref: '#/components/schemas/SeriesStatisticsResource'
episodesChanged:
type:
- boolean
- 'null'
languageProfileId:
type: integer
format: int32
readOnly: true
deprecated: true
additionalProperties: false
SeriesFolderResource:
type: object
properties:
language:
$ref: '#/components/schemas/Language'
folder:
type:
- string
- 'null'
additionalProperties: false
Ratings:
type: object
properties:
votes:
type: integer
format: int32
value:
type: number
format: double
additionalProperties: false
SeasonTypeResource:
type: object
properties:
name:
type:
- string
- 'null'
type:
type:
- string
- 'null'
seasonNumbers:
type:
- array
- 'null'
items:
type: integer
format: int32
episodeCount:
type: integer
format: int32
additionalProperties: false
SeriesSubresource:
enum:
- seasonImages
type: string
SeriesStatisticsResource_2:
type: object
properties:
seasonCount:
type: integer
format: int32
episodeFileCount:
type: integer
format: int32
episodeCount:
type: integer
format: int32
totalEpisodeCount:
type: integer
format: int32
monitoredEpisodeCount:
type: integer
format: int32
sizeOnDisk:
type: integer
format: int64
releaseGroups:
type:
- array
- 'null'
items:
type: string
releaseTypes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ReleaseType'
episodeFileQualities:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Quality'
percentOfEpisodes:
type: number
format: double
readOnly: true
additionalProperties: false
QualitySource:
enum:
- unknown
- television
- televisionRaw
- web
- webRip
- dvd
- bluray
- blurayRaw
type: string
SeasonStatisticsResource_2:
type: object
properties:
nextAiring:
type:
- string
- 'null'
format: date-time
previousAiring:
type:
- string
- 'null'
format: date-time
episodeFileCount:
type: integer
format: int32
episodeCount:
type: integer
format: int32
totalEpisodeCount:
type: integer
format: int32
monitoredEpisodeCount:
type: integer
format: int32
sizeOnDisk:
type: integer
format: int64
releaseGroups:
type:
- array
- 'null'
items:
type: string
releaseTypes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ReleaseType'
episodeFileQualities:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Quality'
percentOfEpisodes:
type: number
format: double
readOnly: true
additionalProperties: false
Quality:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
source:
$ref: '#/components/schemas/QualitySource'
resolution:
type: integer
format: int32
additionalProperties: false
ReleaseType:
enum:
- unknown
- singleEpisode
- multiEpisode
- seasonPack
type: string
SeriesFolderResource_2:
required:
- folder
- language
type: object
properties:
language:
$ref: '#/components/schemas/Language'
folder:
type:
- string
- 'null'
additionalProperties: false
SeriesResource_2:
type: object
properties:
id:
type: integer
format: int32
title:
type:
- string
- 'null'
alternateTitles:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/AlternateTitleResource'
sortTitle:
type:
- string
- 'null'
status:
$ref: '#/components/schemas/SeriesStatusType'
ended:
type: boolean
readOnly: true
profileName:
type:
- string
- 'null'
overview:
type:
- string
- 'null'
nextAiring:
type:
- string
- 'null'
format: date-time
previousAiring:
type:
- string
- 'null'
format: date-time
network:
type:
- string
- 'null'
airTime:
type:
- string
- 'null'
images:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MediaCover'
language:
$ref: '#/components/schemas/Language'
originalLanguage:
$ref: '#/components/schemas/Language'
remotePoster:
type:
- string
- 'null'
seasonType:
type:
- string
- 'null'
seasons:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeasonResource'
seasonTypes:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeasonTypeResource'
translations:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeriesTranslationResource'
year:
type: integer
format: int32
path:
type:
- string
- 'null'
pendingPath:
type:
- string
- 'null'
qualityProfileId:
type: integer
format: int32
seasonFolder:
type: boolean
monitored:
type: boolean
monitorNewItems:
$ref: '#/components/schemas/NewItemMonitorTypes'
useSceneNumbering:
type: boolean
runtime:
type: integer
format: int32
tvdbId:
type: integer
format: int32
tvRageId:
type: integer
format: int32
tvMazeId:
type: integer
format: int32
tmdbId:
type: integer
format: int32
malIds:
uniqueItems: true
type:
- array
- 'null'
items:
type: integer
format: int32
aniListIds:
uniqueItems: true
type:
- array
- 'null'
items:
type: integer
format: int32
firstAired:
type:
- string
- 'null'
format: date-time
lastAired:
type:
- string
- 'null'
format: date-time
seriesType:
$ref: '#/components/schemas/SeriesTypes'
originalTitle:
type:
- string
- 'null'
cleanTitle:
type:
- string
- 'null'
cleanOriginalTitle:
type:
- string
- 'null'
imdbId:
type:
- string
- 'null'
titleSlug:
type:
- string
- 'null'
rootFolderPath:
type:
- string
- 'null'
folder:
type:
- string
- 'null'
folders:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SeriesFolderResource_2'
certification:
type:
- string
- 'null'
genres:
type:
- array
- 'null'
items:
type: string
originalCountry:
type:
- string
- 'null'
tags:
uniqueItems: true
type:
- array
- 'null'
items:
type: integer
format: int32
added:
type: string
format: date-time
addOptions:
$ref: '#/components/schemas/AddSeriesOptions'
ratings:
$ref: '#/components/schemas/Ratings'
statistics:
$ref: '#/components/schemas/SeriesStatisticsResource_2'
episodesChanged:
type:
- boolean
- 'null'
additionalProperties: false
securitySchemes:
X-Api-Key:
type: apiKey
description: Apikey passed as header
name: X-Api-Key
in: header
apikey:
type: apiKey
description: Apikey passed as query parameter
name: apikey
in: query
x-refined-from:
- openapi_v3.json
- openapi_v5.json