autobrr Backups API

The Backups API from autobrr — 5 operation(s) for backups.

Operations 5

POST /api/instances/{instanceID}/backups/import Import backup manifest #
POST /api/instances/{instanceID}/backups/runs/{runId}/restore/preview Preview restore plan #
POST /api/instances/{instanceID}/backups/runs/{runId}/restore Execute restore #
GET /api/instances/{instanceID}/backups/runs/{runId}/download Download backup archive #
GET /api/instances/{instanceID}/backups/runs/{runId}/items/{torrentHash}/download Download torrent file from backup #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • 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.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/autobrr:autobrr-backups-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API 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 Specification

autobrr-backups-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: qui Backups 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: Backups
paths:
  /api/instances/{instanceID}/backups/import:
    post:
      tags:
      - Backups
      summary: Import backup manifest
      description: Import a backup manifest file to create a new backup run record. This allows restoring backup metadata from a previously exported manifest.
      parameters:
      - $ref: '#/components/parameters/instanceID'
      requestBody:
        description: Backup archive or manifest file to import. Provide either an archive (zip, tar.gz, tar.zst, tar.br, tar.xz, tar) or a JSON manifest file.
        required: true
        content:
          multipart/form-data:
            schema:
              type: object
              properties:
                archive:
                  type: string
                  format: binary
                  description: Compressed backup archive (zip, tar.gz, tar.zst, tar.br, tar.xz, tar) containing manifest.json and torrent files
                manifest:
                  type: string
                  format: binary
                  description: JSON manifest file exported from a backup run
      responses:
        '201':
          description: Manifest imported successfully
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BackupRun'
        '400':
          description: Invalid request - must provide either archive or manifest file, invalid instance ID, or unsupported archive format
        '500':
          description: Failed to import manifest
      operationId: postApiInstancesByInstanceIDBackupsImport
      x-operation-id-source: derived
  /api/instances/{instanceID}/backups/runs/{runId}/restore/preview:
    post:
      tags:
      - Backups
      summary: Preview restore plan
      description: Build a restore plan for the specified backup run without applying any changes.
      parameters:
      - $ref: '#/components/parameters/instanceID'
      - name: runId
        in: path
        required: true
        schema:
          type: integer
        description: Backup run ID
      requestBody:
        description: Restore options
        required: false
        content:
          application/json:
            schema:
              type: object
              properties:
                mode:
                  type: string
                  description: Restore mode
                  enum:
                  - incremental
                  - overwrite
                  - complete
                excludeHashes:
                  type: array
                  items:
                    type: string
                  description: Torrent hashes to exclude from the generated plan.
                startPaused:
                  type: boolean
                  description: Start restored torrents paused. Defaults to true.
                skipHashCheck:
                  type: boolean
                  description: Skip re-checking the restored torrent data. Defaults to false.
                autoResumeVerified:
                  type: boolean
                  description: Automatically resume torrents once qBittorrent reports them as fully verified. Defaults to true when skip recheck is enabled.
      responses:
        '200':
          description: Restore plan generated successfully
          content:
            application/json:
              schema:
                type: object
                description: Restore plan payload
        '400':
          description: Invalid request payload
        '404':
          description: Backup run not found
        '500':
          description: Failed to build restore plan
      operationId: postApiInstancesByInstanceIDBackupsRunsByRunIdRestorePreview
      x-operation-id-source: derived
  /api/instances/{instanceID}/backups/runs/{runId}/restore:
    post:
      tags:
      - Backups
      summary: Execute restore
      description: Execute the restore plan for the specified backup run.
      parameters:
      - $ref: '#/components/parameters/instanceID'
      - name: runId
        in: path
        required: true
        schema:
          type: integer
        description: Backup run ID
      requestBody:
        description: Restore execution options
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
              - mode
              properties:
                mode:
                  type: string
                  description: Restore mode
                  enum:
                  - incremental
                  - overwrite
                  - complete
                dryRun:
                  type: boolean
                  description: When true, no changes are applied and the plan is returned.
                excludeHashes:
                  type: array
                  items:
                    type: string
                  description: Torrent hashes to exclude from the restore plan and execution.
                startPaused:
                  type: boolean
                  description: Start restored torrents paused. Defaults to true.
                skipHashCheck:
                  type: boolean
                  description: Skip re-checking the restored torrent data. Defaults to false.
                autoResumeVerified:
                  type: boolean
                  description: Automatically resume torrents once qBittorrent reports them as fully verified. Defaults to true when skip recheck is enabled.
      responses:
        '200':
          description: Restore executed successfully
          content:
            application/json:
              schema:
                type: object
                description: Restore result payload
        '400':
          description: Invalid request payload
        '404':
          description: Backup run not found
        '500':
          description: Failed to execute restore
      operationId: postApiInstancesByInstanceIDBackupsRunsByRunIdRestore
      x-operation-id-source: derived
  /api/instances/{instanceID}/backups/runs/{runId}/download:
    get:
      tags:
      - Backups
      summary: Download backup archive
      description: Download the backup archive for the specified backup run in the requested format.
      parameters:
      - $ref: '#/components/parameters/instanceID'
      - name: runId
        in: path
        required: true
        schema:
          type: integer
        description: Backup run ID
      - name: format
        in: query
        required: false
        schema:
          type: string
          enum:
          - zip
          - tar.gz
          - tar.zst
          - tar.br
          - tar.xz
          - tar
          default: zip
        description: Archive format to download. Defaults to zip.
      responses:
        '200':
          description: Backup archive downloaded successfully
          content:
            application/zip:
              schema:
                type: string
                format: binary
                description: ZIP archive containing the backup
            application/gzip:
              schema:
                type: string
                format: binary
                description: GZIP compressed TAR archive
            application/zstd:
              schema:
                type: string
                format: binary
                description: Zstandard compressed TAR archive
            application/x-brotli:
              schema:
                type: string
                format: binary
                description: Brotli compressed TAR archive
            application/x-xz:
              schema:
                type: string
                format: binary
                description: XZ compressed TAR archive
            application/x-tar:
              schema:
                type: string
                format: binary
                description: Uncompressed TAR archive
        '400':
          description: Invalid instance ID, run ID, or format parameter
        '404':
          description: Backup run not found or not available for download
        '500':
          description: Failed to generate backup archive
      operationId: getApiInstancesByInstanceIDBackupsRunsByRunIdDownload
      x-operation-id-source: derived
  /api/instances/{instanceID}/backups/runs/{runId}/items/{torrentHash}/download:
    get:
      tags:
      - Backups
      summary: Download torrent file from backup
      description: Download a specific torrent file from the backup archive.
      parameters:
      - $ref: '#/components/parameters/instanceID'
      - name: runId
        in: path
        required: true
        schema:
          type: integer
        description: Backup run ID
      - name: torrentHash
        in: path
        required: true
        schema:
          type: string
        description: Torrent hash
      responses:
        '200':
          description: Torrent file downloaded successfully
          content:
            application/x-bittorrent:
              schema:
                type: string
                format: binary
                description: Torrent file
        '400':
          description: Invalid instance ID, run ID, or torrent hash
        '404':
          description: Backup run or torrent not found
        '500':
          description: Failed to retrieve torrent file
      operationId: getApiInstancesByInstanceIDBackupsRunsByRunIdItemsByTorrentHashDownload
      x-operation-id-source: derived
components:
  schemas:
    CategorySnapshot:
      type: object
      properties:
        savePath:
          type: string
    BackupRun:
      type: object
      properties:
        id:
          type: integer
          format: int64
        instanceId:
          type: integer
        kind:
          type: string
          enum:
          - manual
          - hourly
          - daily
          - weekly
          - monthly
        status:
          type: string
          enum:
          - pending
          - running
          - success
          - failed
          - canceled
        requestedBy:
          type: string
        requestedAt:
          type: string
          format: date-time
        startedAt:
          type: string
          format: date-time
          nullable: true
        completedAt:
          type: string
          format: date-time
          nullable: true
        archivePath:
          type: string
          nullable: true
        manifestPath:
          type: string
          nullable: true
        totalBytes:
          type: integer
          format: int64
        torrentCount:
          type: integer
        categoryCounts:
          type: object
          additionalProperties:
            type: integer
          nullable: true
        errorMessage:
          type: string
          nullable: true
        categories:
          type: object
          additionalProperties:
            $ref: '#/components/schemas/CategorySnapshot'
          nullable: true
        tags:
          type: array
          items:
            type: string
          nullable: true
  parameters:
    instanceID:
      name: instanceID
      in: path
      required: true
      schema:
        type: integer
        minimum: 0
      description: qBittorrent instance ID. 0 is the unified scope on the endpoints that support it.
  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.

        '