Sonarr Indexer API
The Indexer API from Sonarr — 14 operation(s) for indexer.
The Indexer API from Sonarr — 14 operation(s) for indexer.
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-indexer-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 Indexer API
license:
name: GPL-3.0
url: https://github.com/Sonarr/Sonarr/blob/develop/LICENSE
version: '1.0'
description: 'Operations tagged Indexer 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: Indexer
paths:
/api/v3/indexer:
get:
tags:
- Indexer
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IndexerResource'
summary: Get api indexer
x-summary-source: derived
operationId: getApiV3Indexer
x-operation-id-source: derived
post:
tags:
- Indexer
parameters:
- name: forceSave
in: query
schema:
type: boolean
default: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
summary: Create api indexer
x-summary-source: derived
operationId: postApiV3Indexer
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/indexer/{id}:
put:
tags:
- Indexer
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
- name: forceSave
in: query
schema:
type: boolean
default: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
summary: Replace api indexer by id
x-summary-source: derived
operationId: putApiV3IndexerById
x-operation-id-source: derived
delete:
tags:
- Indexer
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
summary: Delete api indexer by id
x-summary-source: derived
operationId: deleteApiV3IndexerById
x-operation-id-source: derived
get:
tags:
- Indexer
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
'404':
description: Not Found
summary: Get api indexer by id
x-summary-source: derived
operationId: getApiV3IndexerById
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/indexer/bulk:
put:
tags:
- Indexer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerBulkResource'
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
summary: Replace api indexer bulk
x-summary-source: derived
operationId: putApiV3IndexerBulk
x-operation-id-source: derived
delete:
tags:
- Indexer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerBulkResource'
responses:
'200':
description: OK
summary: Delete api indexer bulk
x-summary-source: derived
operationId: deleteApiV3IndexerBulk
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/indexer/schema:
get:
tags:
- Indexer
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IndexerResource'
summary: Get api indexer schema
x-summary-source: derived
operationId: getApiV3IndexerSchema
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/indexer/test:
post:
tags:
- Indexer
parameters:
- name: forceTest
in: query
schema:
type: boolean
default: false
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'200':
description: OK
summary: Create api indexer test
x-summary-source: derived
operationId: postApiV3IndexerTest
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/indexer/testall:
post:
tags:
- Indexer
responses:
'200':
description: OK
summary: Create api indexer testall
x-summary-source: derived
operationId: postApiV3IndexerTestall
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v3/indexer/action/{name}:
post:
tags:
- Indexer
parameters:
- name: name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'200':
description: OK
summary: Create api indexer action by name
x-summary-source: derived
operationId: postApiV3IndexerActionByName
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer:
get:
tags:
- Indexer
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IndexerResource'
summary: Get api indexer
x-summary-source: derived
operationId: getApiV5Indexer
x-operation-id-source: derived
post:
tags:
- Indexer
parameters:
- name: skipTesting
in: query
schema:
type: boolean
default: false
- name: skipValidation
in: query
schema:
$ref: '#/components/schemas/SkipValidation'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'201':
description: Created
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
'404':
description: Not Found
summary: Create api indexer
x-summary-source: derived
operationId: postApiV5Indexer
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer/{id}:
put:
tags:
- Indexer
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
- name: skipTesting
in: query
schema:
type: boolean
default: false
- name: skipValidation
in: query
schema:
$ref: '#/components/schemas/SkipValidation'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'202':
description: Accepted
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
'404':
description: Not Found
summary: Replace api indexer by id
x-summary-source: derived
operationId: putApiV5IndexerById
x-operation-id-source: derived
delete:
tags:
- Indexer
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'204':
description: No Content
summary: Delete api indexer by id
x-summary-source: derived
operationId: deleteApiV5IndexerById
x-operation-id-source: derived
get:
tags:
- Indexer
parameters:
- name: id
in: path
required: true
schema:
type: integer
format: int32
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
'404':
description: Not Found
summary: Get api indexer by id
x-summary-source: derived
operationId: getApiV5IndexerById
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer/bulk:
put:
tags:
- Indexer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerBulkResource'
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IndexerResource'
'400':
description: Bad Request
summary: Replace api indexer bulk
x-summary-source: derived
operationId: putApiV5IndexerBulk
x-operation-id-source: derived
delete:
tags:
- Indexer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerBulkResource'
responses:
'204':
description: No Content
summary: Delete api indexer bulk
x-summary-source: derived
operationId: deleteApiV5IndexerBulk
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer/schema:
get:
tags:
- Indexer
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/IndexerResource'
summary: Get api indexer schema
x-summary-source: derived
operationId: getApiV5IndexerSchema
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer/test:
post:
tags:
- Indexer
parameters:
- name: skipValidation
in: query
schema:
$ref: '#/components/schemas/SkipValidation'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'204':
description: No Content
summary: Create api indexer test
x-summary-source: derived
operationId: postApiV5IndexerTest
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer/testall:
post:
tags:
- Indexer
responses:
'200':
description: OK
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProviderTestAllResult'
'400':
description: Bad Request
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ProviderTestAllResult'
summary: Create api indexer testall
x-summary-source: derived
operationId: postApiV5IndexerTestall
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
/api/v5/indexer/action/{name}:
post:
tags:
- Indexer
parameters:
- name: name
in: path
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/IndexerResource'
responses:
'400':
description: Bad Request
summary: Create api indexer action by name
x-summary-source: derived
operationId: postApiV5IndexerActionByName
x-operation-id-source: derived
servers:
- url: '{protocol}://{hostpath}'
variables:
protocol:
default: http
enum:
- http
- https
hostpath:
default: localhost:8989
components:
schemas:
PrivacyLevel:
enum:
- normal
- password
- apiKey
- userName
type: string
IndexerResource:
type: object
properties:
id:
type: integer
format: int32
name:
type:
- string
- 'null'
fields:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/Field'
implementationName:
type:
- string
- 'null'
implementation:
type:
- string
- 'null'
configContract:
type:
- string
- 'null'
infoLink:
type:
- string
- 'null'
message:
$ref: '#/components/schemas/ProviderMessage'
tags:
uniqueItems: true
type:
- array
- 'null'
items:
type: integer
format: int32
presets:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/IndexerResource'
enableRss:
type: boolean
enableAutomaticSearch:
type: boolean
enableInteractiveSearch:
type: boolean
supportsRss:
type: boolean
supportsSearch:
type: boolean
protocol:
$ref: '#/components/schemas/DownloadProtocol'
priority:
type: integer
format: int32
seasonSearchMaximumSingleEpisodeAge:
type: integer
format: int32
downloadClientId:
type: integer
format: int32
additionalProperties: false
IndexerBulkResource:
type: object
properties:
ids:
type:
- array
- 'null'
items:
type: integer
format: int32
tags:
type:
- array
- 'null'
items:
type: integer
format: int32
applyTags:
$ref: '#/components/schemas/ApplyTags'
enableRss:
type:
- boolean
- 'null'
enableAutomaticSearch:
type:
- boolean
- 'null'
enableInteractiveSearch:
type:
- boolean
- 'null'
priority:
type:
- integer
- 'null'
format: int32
seasonSearchMaximumSingleEpisodeAge:
type:
- integer
- 'null'
format: int32
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
ApplyTags:
enum:
- add
- remove
- replace
type: string
DownloadProtocol:
enum:
- unknown
- usenet
- torrent
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
ProviderMessageType:
enum:
- info
- warning
- error
type: string
ProviderMessage:
type: object
properties:
message:
type:
- string
- 'null'
type:
$ref: '#/components/schemas/ProviderMessageType'
additionalProperties: false
SkipValidation:
enum:
- none
- warnings
- all
type: string
ProviderTestAllResult:
type: object
properties:
id:
type: integer
format: int32
isValid:
type: boolean
readOnly: true
validationFailures:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ValidationFailure'
additionalProperties: false
Severity:
enum:
- error
- warning
- info
type: string
ValidationFailure:
type: object
properties:
propertyName:
type:
- string
- 'null'
errorMessage:
type:
- string
- 'null'
attemptedValue: {}
customState: {}
severity:
$ref: '#/components/schemas/Severity'
errorCode:
type:
- string
- 'null'
formattedMessageArguments:
type:
- array
- 'null'
items: {}
deprecated: true
formattedMessagePlaceholderValues:
type:
- object
- 'null'
additionalProperties: {}
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