Sonarr Episode File API
The EpisodeFile API from Sonarr — 7 operation(s) for episodefile.
The EpisodeFile API from Sonarr — 7 operation(s) for episodefile.
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-episodefile-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 Episode File API
license:
name: GPL-3.0
url: https://github.com/Sonarr/Sonarr/blob/develop/LICENSE
version: '1.0'
description: 'Operations tagged EpisodeFile 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: EpisodeFile
paths:
/api/v3/episodefile:
get:
tags:
- EpisodeFile
parameters:
- name: seriesId
in: query
schema:
type: integer
format: int32
- name: episodeFileIds
in: query
schema:
type: array
items:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EpisodeFileResource'
summary: Get api episodefile
x-summary-source: derived
operationId: getApiV3Episodefile
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/episodefile/{id}:
put:
tags:
- EpisodeFile
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
responses:
'200':
description: OK
content:
text/plain:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
text/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
summary: Replace api episodefile by id
x-summary-source: derived
operationId: putApiV3EpisodefileById
x-operation-id-source: derived
delete:
tags:
- EpisodeFile
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
summary: Delete api episodefile by id
x-summary-source: derived
operationId: deleteApiV3EpisodefileById
x-operation-id-source: derived
get:
tags:
- EpisodeFile
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
'404':
description: Not Found
summary: Get api episodefile by id
x-summary-source: derived
operationId: getApiV3EpisodefileById
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/episodefile/editor:
put:
tags:
- EpisodeFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileListResource'
responses:
'200':
description: OK
deprecated: true
summary: Replace api episodefile editor
x-summary-source: derived
operationId: putApiV3EpisodefileEditor
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/episodefile/bulk:
delete:
tags:
- EpisodeFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileListResource'
responses:
'200':
description: OK
summary: Delete api episodefile bulk
x-summary-source: derived
operationId: deleteApiV3EpisodefileBulk
x-operation-id-source: derived
put:
tags:
- EpisodeFile
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EpisodeFileResource'
responses:
'200':
description: OK
summary: Replace api episodefile bulk
x-summary-source: derived
operationId: putApiV3EpisodefileBulk
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/episodefile:
get:
tags:
- EpisodeFile
parameters:
- name: seriesId
in: query
schema:
type: integer
format: int32
- name: episodeFileIds
in: query
schema:
type: array
items:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EpisodeFileResource'
'400':
description: Bad Request
summary: Get api episodefile
x-summary-source: derived
operationId: getApiV5Episodefile
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/episodefile/{id}:
put:
tags:
- EpisodeFile
parameters:
- name: id
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
'404':
description: Not Found
summary: Replace api episodefile by id
x-summary-source: derived
operationId: putApiV5EpisodefileById
x-operation-id-source: derived
delete:
tags:
- EpisodeFile
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'204':
description: No Content
'404':
description: Not Found
summary: Delete api episodefile by id
x-summary-source: derived
operationId: deleteApiV5EpisodefileById
x-operation-id-source: derived
get:
tags:
- EpisodeFile
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileResource'
'404':
description: Not Found
summary: Get api episodefile by id
x-summary-source: derived
operationId: getApiV5EpisodefileById
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/episodefile/bulk:
delete:
tags:
- EpisodeFile
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EpisodeFileListResource_2'
responses:
'204':
description: No Content
summary: Delete api episodefile bulk
x-summary-source: derived
operationId: deleteApiV5EpisodefileBulk
x-operation-id-source: derived
put:
tags:
- EpisodeFile
requestBody:
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EpisodeFileResource'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/EpisodeFileResource'
summary: Replace api episodefile bulk
x-summary-source: derived
operationId: putApiV5EpisodefileBulk
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
components:
schemas:
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
Revision:
type: object
properties:
version:
type: integer
format: int32
real:
type: integer
format: int32
isRepack:
type: boolean
additionalProperties: false
QualityModel:
type: object
properties:
quality:
$ref: '#/components/schemas/Quality'
revision:
$ref: '#/components/schemas/Revision'
additionalProperties: false
PrivacyLevel:
enum:
- normal
- password
- apiKey
- userName
type: string
Language:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
additionalProperties: false
MediaInfoResource:
type: object
properties:
id:
type: integer
format: int32
audioBitrate:
type: integer
format: int64
audioChannels:
type: number
format: double
audioCodec:
type:
- string
- 'null'
audioLanguages:
type:
- string
- 'null'
audioStreamCount:
type: integer
format: int32
videoBitDepth:
type: integer
format: int32
videoBitrate:
type: integer
format: int64
videoCodec:
type:
- string
- 'null'
videoFps:
type: number
format: double
videoDynamicRange:
type:
- string
- 'null'
videoDynamicRangeType:
type:
- string
- 'null'
resolution:
type:
- string
- 'null'
runTime:
type:
- string
- 'null'
scanType:
type:
- string
- 'null'
subtitles:
type:
- string
- 'null'
additionalProperties: false
SelectOption:
type: object
properties:
value:
type: integer
format: int32
name:
type:
- string
- 'null'
order:
type: integer
format: int32
hint:
type:
- string
- 'null'
additionalProperties: false
ReleaseType:
enum:
- unknown
- singleEpisode
- multiEpisode
- seasonPack
type: string
EpisodeFileListResource:
type: object
properties:
episodeFileIds:
type:
- array
- 'null'
items:
type: integer
format: int32
languages:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Language'
quality:
$ref: '#/components/schemas/QualityModel'
sceneName:
type:
- string
- 'null'
releaseGroup:
type:
- string
- 'null'
additionalProperties: false
EpisodeFileResource:
type: object
properties:
id:
type: integer
format: int32
seriesId:
type: integer
format: int32
seasonNumber:
type: integer
format: int32
relativePath:
type:
- string
- 'null'
path:
type:
- string
- 'null'
size:
type: integer
format: int64
dateAdded:
type: string
format: date-time
sceneName:
type:
- string
- 'null'
releaseGroup:
type:
- string
- 'null'
languages:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Language'
quality:
$ref: '#/components/schemas/QualityModel'
customFormats:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CustomFormatResource'
customFormatScore:
type: integer
format: int32
indexerFlags:
type:
- integer
- 'null'
format: int32
releaseType:
$ref: '#/components/schemas/ReleaseType'
mediaInfo:
$ref: '#/components/schemas/MediaInfoResource'
qualityCutoffNotMet:
type: boolean
additionalProperties: false
CustomFormatSpecificationSchema:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
implementation:
type:
- string
- 'null'
implementationName:
type:
- string
- 'null'
infoLink:
type:
- string
- 'null'
negate:
type: boolean
required:
type: boolean
fields:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Field'
presets:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CustomFormatSpecificationSchema'
additionalProperties: false
QualitySource:
enum:
- unknown
- television
- televisionRaw
- web
- webRip
- dvd
- bluray
- blurayRaw
type: string
Field:
type: object
properties:
order:
type: integer
format: int32
name:
type:
- string
- 'null'
label:
type:
- string
- 'null'
unit:
type:
- string
- 'null'
helpText:
type:
- string
- 'null'
helpTextWarning:
type:
- string
- 'null'
helpLink:
type:
- string
- 'null'
value: {}
type:
type:
- string
- 'null'
advanced:
type: boolean
selectOptions:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/SelectOption'
selectOptionsProviderAction:
type:
- string
- 'null'
section:
type:
- string
- 'null'
hidden:
type:
- string
- 'null'
privacy:
$ref: '#/components/schemas/PrivacyLevel'
placeholder:
type:
- string
- 'null'
isFloat:
type: boolean
additionalProperties: false
CustomFormatResource:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
includeCustomFormatWhenRenaming:
type:
- boolean
- 'null'
specifications:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CustomFormatSpecificationSchema'
additionalProperties: false
MediaInfoSubtitleStreamResource:
type: object
properties:
language:
type:
- string
- 'null'
format:
type:
- string
- 'null'
title:
type:
- string
- 'null'
forced:
type:
- boolean
- 'null'
hearingImpaired:
type:
- boolean
- 'null'
additionalProperties: false
MediaInfoResource_2:
type: object
properties:
id:
type: integer
format: int32
videoBitDepth:
type: integer
format: int32
videoBitrate:
type: integer
format: int64
videoCodec:
type:
- string
- 'null'
videoFps:
type: number
format: double
videoDynamicRange:
type:
- string
- 'null'
videoDynamicRangeType:
type:
- string
- 'null'
resolution:
type:
- string
- 'null'
runTime:
type:
- string
- 'null'
scanType:
type:
- string
- 'null'
audioStreams:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MediaInfoAudioStreamResource'
subtitleStreams:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/MediaInfoSubtitleStreamResource'
additionalProperties: false
MediaInfoAudioStreamResource:
type: object
properties:
language:
type:
- string
- 'null'
codec:
type:
- string
- 'null'
profile:
type:
- string
- 'null'
bitrate:
type: integer
format: int64
channels:
type: number
format: double
channelPositions:
type:
- string
- 'null'
title:
type:
- string
- 'null'
additionalProperties: false
EpisodeFileListResource_2:
type: object
properties:
episodeFileIds:
type:
- array
- 'null'
items:
type: integer
format: int32
additionalProperties: false
CustomFormatSpecificationSchema_2:
required:
- fields
- implementation
- implementationName
- infoLink
- name
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
implementation:
type:
- string
- 'null'
implementationName:
type:
- string
- 'null'
infoLink:
type:
- string
- 'null'
negate:
type: boolean
required:
type: boolean
fields:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Field'
presets:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CustomFormatSpecificationSchema_2'
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