autobrr ARR Integrations API
Sonarr/Radarr instance management for external ID lookups
Sonarr/Radarr instance management for external ID lookups
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/autobrr:autobrr-arr-integrations-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: qui ARR Integrations API
description: 'qui API for managing multiple qBittorrent instances.
If allowedHosts is configured, a missing, invalid, or unlisted received Host
returns HTTP 400 before authentication or routing. X-Forwarded-Host is ignored.
Request ports do not affect matching. Only direct loopback GET and HEAD
requests to /health, /healthz/readiness, and /healthz/liveness bypass the list.
For automation create and update requests, set `conditions.category.enabled` to `true`
and `conditions.category.category` to an empty string to remove the torrent category.
Set `conditions.category.enabled` to `false` to disable the category action.'
version: 1.0.0
license:
name: GPL-2.0-or-later
url: https://opensource.org/licenses/GPL-2.0
servers:
- url: http://localhost:7476
description: Local development server
- url: /
description: Current server
security:
- ApiKeyAuth: []
- SessionAuth: []
tags:
- name: ARR Integrations
description: Sonarr/Radarr instance management for external ID lookups
paths:
/api/arr/instances:
get:
tags:
- ARR Integrations
summary: List ARR instances
description: Get all configured Sonarr/Radarr instances
responses:
'200':
description: List of ARR instances
content:
application/json:
schema:
type: array
items:
$ref: '#/components/schemas/ArrInstance'
operationId: getApiArrInstances
x-operation-id-source: derived
post:
tags:
- ARR Integrations
summary: Create ARR instance
description: Add a new Sonarr or Radarr instance configuration
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ArrInstanceCreate'
responses:
'201':
description: ARR instance created
content:
application/json:
schema:
$ref: '#/components/schemas/ArrInstance'
'400':
description: Invalid request
'409':
description: An instance with this URL already exists for this type
operationId: postApiArrInstances
x-operation-id-source: derived
/api/arr/instances/{id}:
get:
tags:
- ARR Integrations
summary: Get ARR instance
description: Get a single Sonarr/Radarr instance by ID
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: ARR instance details
content:
application/json:
schema:
$ref: '#/components/schemas/ArrInstance'
'404':
description: ARR instance not found
operationId: getApiArrInstancesById
x-operation-id-source: derived
put:
tags:
- ARR Integrations
summary: Update ARR instance
description: Update an existing Sonarr/Radarr instance configuration
parameters:
- name: id
in: path
required: true
schema:
type: integer
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ArrInstanceUpdate'
responses:
'200':
description: ARR instance updated
content:
application/json:
schema:
$ref: '#/components/schemas/ArrInstance'
'404':
description: ARR instance not found
'409':
description: An instance with this URL already exists for this type
operationId: putApiArrInstancesById
x-operation-id-source: derived
delete:
tags:
- ARR Integrations
summary: Delete ARR instance
description: Delete an ARR instance configuration
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'204':
description: ARR instance deleted successfully
'404':
description: ARR instance not found
operationId: deleteApiArrInstancesById
x-operation-id-source: derived
/api/arr/instances/{id}/test:
post:
tags:
- ARR Integrations
summary: Test ARR instance
description: Test connectivity to an existing ARR instance
parameters:
- name: id
in: path
required: true
schema:
type: integer
responses:
'200':
description: Test result
content:
application/json:
schema:
$ref: '#/components/schemas/ArrTestResponse'
'404':
description: ARR instance not found
operationId: postApiArrInstancesByIdTest
x-operation-id-source: derived
/api/arr/test:
post:
tags:
- ARR Integrations
summary: Test ARR connection
description: Test connectivity to an ARR instance before saving
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ArrTestConnectionRequest'
responses:
'200':
description: Test result
content:
application/json:
schema:
$ref: '#/components/schemas/ArrTestResponse'
'400':
description: Invalid request
operationId: postApiArrTest
x-operation-id-source: derived
/api/arr/resolve:
post:
tags:
- ARR Integrations
summary: Resolve title to external IDs
description: Use configured ARR instances to resolve a title to external IDs (IMDb, TMDb, TVDb, TVMaze)
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/ArrResolveRequest'
responses:
'200':
description: Resolved IDs
content:
application/json:
schema:
$ref: '#/components/schemas/ArrResolveResponse'
'400':
description: Invalid request
'500':
description: Failed to resolve title
operationId: postApiArrResolve
x-operation-id-source: derived
components:
schemas:
ArrIDCacheEntry:
type: object
properties:
id:
type: integer
format: int64
title_hash:
type: string
content_type:
type: string
arr_instance_id:
type: integer
nullable: true
external_ids:
$ref: '#/components/schemas/ArrExternalIDs'
titles:
type: array
items:
type: string
has_titles:
type: boolean
episode_map:
$ref: '#/components/schemas/ArrEpisodeMap'
has_episode_map:
type: boolean
is_negative:
type: boolean
cached_at:
type: string
format: date-time
expires_at:
type: string
format: date-time
ArrInstance:
type: object
properties:
id:
type: integer
type:
type: string
enum:
- sonarr
- radarr
name:
type: string
base_url:
type: string
basic_username:
type: string
nullable: true
enabled:
type: boolean
priority:
type: integer
timeout_seconds:
type: integer
last_test_at:
type: string
format: date-time
nullable: true
last_test_status:
type: string
enum:
- unknown
- ok
- error
last_test_error:
type: string
nullable: true
created_at:
type: string
format: date-time
updated_at:
type: string
format: date-time
ArrInstanceCreate:
type: object
required:
- type
- name
- base_url
- api_key
properties:
type:
type: string
enum:
- sonarr
- radarr
name:
type: string
base_url:
type: string
api_key:
type: string
writeOnly: true
basic_username:
type: string
description: Optional HTTP basic auth username for reverse proxies
basic_password:
type: string
writeOnly: true
description: Optional HTTP basic auth password for reverse proxies
enabled:
type: boolean
default: true
priority:
type: integer
default: 0
timeout_seconds:
type: integer
default: 15
ArrInstanceResult:
type: object
properties:
instance_id:
type: integer
instance_name:
type: string
instance_type:
type: string
ids:
$ref: '#/components/schemas/ArrExternalIDs'
error:
type: string
nullable: true
ArrResolveRequest:
type: object
required:
- title
- content_type
properties:
title:
type: string
content_type:
type: string
enum:
- movie
- tv
ArrExternalIDs:
type: object
properties:
imdb_id:
type: string
tmdb_id:
type: integer
tvdb_id:
type: integer
tvmaze_id:
type: integer
ArrInstanceUpdate:
type: object
properties:
name:
type: string
base_url:
type: string
api_key:
type: string
writeOnly: true
description: Only update if provided
basic_username:
type: string
description: Optional HTTP basic auth username for reverse proxies (empty string clears)
basic_password:
type: string
writeOnly: true
description: Optional HTTP basic auth password for reverse proxies
enabled:
type: boolean
priority:
type: integer
timeout_seconds:
type: integer
ArrResolveResponse:
type: object
properties:
title:
type: string
title_hash:
type: string
content_type:
type: string
enum:
- movie
- tv
cache_hit:
type: boolean
cache_entry:
$ref: '#/components/schemas/ArrIDCacheEntry'
instances_available:
type: integer
instance_results:
type: array
items:
$ref: '#/components/schemas/ArrInstanceResult'
error:
type: string
nullable: true
ArrTestConnectionRequest:
type: object
required:
- type
- base_url
- api_key
properties:
type:
type: string
enum:
- sonarr
- radarr
base_url:
type: string
api_key:
type: string
writeOnly: true
basic_username:
type: string
description: Optional HTTP basic auth username for reverse proxies
basic_password:
type: string
writeOnly: true
description: Optional HTTP basic auth password for reverse proxies
ArrEpisodeMap:
type: object
description: Sonarr season, episode, and absolute number for the one episode a release name resolves to.
properties:
season:
type: integer
episode:
type: integer
absolute:
type: integer
ArrTestResponse:
type: object
properties:
success:
type: boolean
error:
type: string
nullable: true
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: X-API-Key
description: API key for authentication
ApiKeyQuery:
type: apiKey
in: query
name: apikey
description: API key via query parameter for external webhook integrations
SessionAuth:
type: apiKey
in: cookie
name: qui_user_session
description: 'Browser session cookie set by the qui web UI. POST, PUT, PATCH, and DELETE
requests authenticated by this cookie must also send an `X-Requested-With`
header. Other clients should use an API key.
'