TIDAL · Capability

TIDAL Playback API — Downloads, Offline Tasks, Usage Rules

TIDAL Playback API — Downloads, Offline Tasks, Usage Rules. 12 operations. Self-contained Naftiko capability covering one TIDAL business surface.

TIDAL Playback API — Downloads, Offline Tasks, Usage Rules is a Naftiko capability published by TIDAL, one of 36 capabilities the APIs.io network indexes for this provider. It bundles 12 operations across the GET, PATCH, and POST methods.

The capability includes 10 read-only operations and 2 state-changing operations. Lead operation: Get multiple downloads. Can be deployed as a REST endpoint, MCP tool, or Agent Skill via Naftiko.

Tagged areas include TIDAL, Music, downloads, offlineTasks, and usageRules.

Run with Naftiko TIDALMusicdownloadsofflineTasksusageRules

What You Can Do

GET
Getdownloads — Get multiple downloads.
/v2/downloads
GET
Getdownloads — Get single download.
/v2/downloads/{id}
GET
Getdownloads — Get owners relationship ("to-many").
/v2/downloads/{id}/relationships/owners
GET
Getofflinetasks — Get multiple offlineTasks.
/v2/offlineTasks
GET
Getofflinetasks — Get single offlineTask.
/v2/offlineTasks/{id}
PATCH
Patchofflinetasks — Update single offlineTask.
/v2/offlineTasks/{id}
GET
Getofflinetasks — Get collection relationship ("to-one").
/v2/offlineTasks/{id}/relationships/collection
GET
Getofflinetasks — Get item relationship ("to-one").
/v2/offlineTasks/{id}/relationships/item
GET
Getofflinetasks — Get owners relationship ("to-many").
/v2/offlineTasks/{id}/relationships/owners
GET
Getusagerules — Get multiple usageRules.
/v2/usageRules
POST
Postusagerules — Create single usageRule.
/v2/usageRules
GET
Getusagerules — Get single usageRule.
/v2/usageRules/{id}

MCP Tools

tidal-getdownloads

Get multiple downloads.

read-only idempotent
tidal-getdownloads

Get single download.

read-only idempotent
tidal-getdownloads

Get owners relationship ("to-many").

read-only idempotent
tidal-getofflinetasks

Get multiple offlineTasks.

read-only idempotent
tidal-getofflinetasks

Get single offlineTask.

read-only idempotent
tidal-patchofflinetasks

Update single offlineTask.

tidal-getofflinetasks

Get collection relationship ("to-one").

read-only idempotent
tidal-getofflinetasks

Get item relationship ("to-one").

read-only idempotent
tidal-getofflinetasks

Get owners relationship ("to-many").

read-only idempotent
tidal-getusagerules

Get multiple usageRules.

read-only idempotent
tidal-postusagerules

Create single usageRule.

tidal-getusagerules

Get single usageRule.

read-only idempotent

Capability Spec

playback-downloads.yaml Raw ↑
naftiko: 1.0.0-alpha2
info:
  label: TIDAL Playback API — Downloads, Offline Tasks, Usage Rules
  description: TIDAL Playback API — Downloads, Offline Tasks, Usage Rules. 12 operations. Self-contained Naftiko capability
    covering one TIDAL business surface.
  tags:
  - TIDAL
  - Music
  - downloads
  - offlineTasks
  - usageRules
  created: '2026-05-25'
  modified: '2026-05-25'
binds:
- namespace: env
  keys:
    TIDAL_ACCESS_TOKEN: TIDAL_ACCESS_TOKEN
capability:
  consumes:
  - type: http
    namespace: playback-downloads
    baseUri: https://openapi.tidal.com
    description: TIDAL Playback API — Downloads, Offline Tasks, Usage Rules business capability. Self-contained, no shared
      references.
    resources:
    - name: downloads
      path: /downloads
      operations:
      - name: getdownloads
        method: GET
        description: Get multiple downloads.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: owners'
          required: false
        - name: filter[id]
          in: query
          type: array
          description: Download id (e.g. `VFJBQ0tTOjEyMzQ1`)
          required: false
    - name: downloads-id
      path: /downloads/{id}
      operations:
      - name: getdownloads
        method: GET
        description: Get single download.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Download id
          required: true
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: owners'
          required: false
    - name: downloads-id-relationships-owners
      path: /downloads/{id}/relationships/owners
      operations:
      - name: getdownloads
        method: GET
        description: Get owners relationship ("to-many").
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Download id
          required: true
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: owners'
          required: false
        - name: page[cursor]
          in: query
          type: string
          description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not
            specified
          required: false
    - name: offlineTasks
      path: /offlineTasks
      operations:
      - name: getofflinetasks
        method: GET
        description: Get multiple offlineTasks.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: page[cursor]
          in: query
          type: string
          description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not
            specified
          required: false
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: collection,
            item, owners'
          required: false
        - name: filter[id]
          in: query
          type: array
          description: List of offline task IDs (e.g. `a468bee8-8def-4a1b-8c1e-123456789abc`)
          required: false
        - name: filter[installation.id]
          in: query
          type: array
          description: List of offline task IDs (e.g. `a468bee88def`)
          required: false
    - name: offlineTasks-id
      path: /offlineTasks/{id}
      operations:
      - name: getofflinetasks
        method: GET
        description: Get single offlineTask.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Offline task id
          required: true
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: collection,
            item, owners'
          required: false
      - name: patchofflinetasks
        method: PATCH
        description: Update single offlineTask.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Offline task id
          required: true
        - name: body
          in: body
          type: object
          description: JSON:API document request body.
          required: true
    - name: offlineTasks-id-relationships-collection
      path: /offlineTasks/{id}/relationships/collection
      operations:
      - name: getofflinetasks
        method: GET
        description: Get collection relationship ("to-one").
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Offline task id
          required: true
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: collection'
          required: false
    - name: offlineTasks-id-relationships-item
      path: /offlineTasks/{id}/relationships/item
      operations:
      - name: getofflinetasks
        method: GET
        description: Get item relationship ("to-one").
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Offline task id
          required: true
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: item'
          required: false
    - name: offlineTasks-id-relationships-owners
      path: /offlineTasks/{id}/relationships/owners
      operations:
      - name: getofflinetasks
        method: GET
        description: Get owners relationship ("to-many").
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Offline task id
          required: true
        - name: include
          in: query
          type: array
          description: 'Allows the client to customize which related resources should be returned. Available options: owners'
          required: false
        - name: page[cursor]
          in: query
          type: string
          description: Server-generated cursor value pointing a certain page of items. Optional, targets first page if not
            specified
          required: false
    - name: usageRules
      path: /usageRules
      operations:
      - name: getusagerules
        method: GET
        description: Get multiple usageRules.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: filter[id]
          in: query
          type: array
          description: List of usage rules IDs (e.g. `VFJBQ0tTOjEyMzpOTw`)
          required: false
      - name: postusagerules
        method: POST
        description: Create single usageRule.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: body
          in: body
          type: object
          description: JSON:API document request body.
          required: true
    - name: usageRules-id
      path: /usageRules/{id}
      operations:
      - name: getusagerules
        method: GET
        description: Get single usageRule.
        outputRawFormat: json
        outputParameters:
        - name: result
          type: object
          value: $.
        inputParameters:
        - name: id
          in: path
          type: string
          description: Usage rules id
          required: true
    authentication:
      type: bearer
      value: '{{env.TIDAL_ACCESS_TOKEN}}'
      placement: header
      header: Authorization
      prefix: 'Bearer '
  exposes:
  - type: rest
    namespace: playback-downloads-rest
    port: 8080
    description: REST adapter for TIDAL Playback API — Downloads, Offline Tasks, Usage Rules. One Spectral-compliant resource
      per consumed operation, prefixed with /v2.
    resources:
    - path: /v2/downloads
      name: downloads
      description: REST surface for downloads.
      operations:
      - method: GET
        name: getdownloads
        description: Get multiple downloads.
        call: playback-downloads.getdownloads
        with:
          include: rest.query.include
          filter[id]: rest.query.filter[id]
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/downloads/{id}
      name: downloads-id
      description: REST surface for downloads-id.
      operations:
      - method: GET
        name: getdownloads
        description: Get single download.
        call: playback-downloads.getdownloads
        with:
          id: rest.path.id
          include: rest.query.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/downloads/{id}/relationships/owners
      name: downloads-id-relationships-owners
      description: REST surface for downloads-id-relationships-owners.
      operations:
      - method: GET
        name: getdownloads
        description: Get owners relationship ("to-many").
        call: playback-downloads.getdownloads
        with:
          id: rest.path.id
          include: rest.query.include
          page[cursor]: rest.query.page[cursor]
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/offlineTasks
      name: offlineTasks
      description: REST surface for offlineTasks.
      operations:
      - method: GET
        name: getofflinetasks
        description: Get multiple offlineTasks.
        call: playback-downloads.getofflinetasks
        with:
          page[cursor]: rest.query.page[cursor]
          include: rest.query.include
          filter[id]: rest.query.filter[id]
          filter[installation.id]: rest.query.filter[installation.id]
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/offlineTasks/{id}
      name: offlineTasks-id
      description: REST surface for offlineTasks-id.
      operations:
      - method: GET
        name: getofflinetasks
        description: Get single offlineTask.
        call: playback-downloads.getofflinetasks
        with:
          id: rest.path.id
          include: rest.query.include
        outputParameters:
        - type: object
          mapping: $.
      - method: PATCH
        name: patchofflinetasks
        description: Update single offlineTask.
        call: playback-downloads.patchofflinetasks
        with:
          id: rest.path.id
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/offlineTasks/{id}/relationships/collection
      name: offlineTasks-id-relationships-collection
      description: REST surface for offlineTasks-id-relationships-collection.
      operations:
      - method: GET
        name: getofflinetasks
        description: Get collection relationship ("to-one").
        call: playback-downloads.getofflinetasks
        with:
          id: rest.path.id
          include: rest.query.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/offlineTasks/{id}/relationships/item
      name: offlineTasks-id-relationships-item
      description: REST surface for offlineTasks-id-relationships-item.
      operations:
      - method: GET
        name: getofflinetasks
        description: Get item relationship ("to-one").
        call: playback-downloads.getofflinetasks
        with:
          id: rest.path.id
          include: rest.query.include
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/offlineTasks/{id}/relationships/owners
      name: offlineTasks-id-relationships-owners
      description: REST surface for offlineTasks-id-relationships-owners.
      operations:
      - method: GET
        name: getofflinetasks
        description: Get owners relationship ("to-many").
        call: playback-downloads.getofflinetasks
        with:
          id: rest.path.id
          include: rest.query.include
          page[cursor]: rest.query.page[cursor]
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/usageRules
      name: usageRules
      description: REST surface for usageRules.
      operations:
      - method: GET
        name: getusagerules
        description: Get multiple usageRules.
        call: playback-downloads.getusagerules
        with:
          filter[id]: rest.query.filter[id]
        outputParameters:
        - type: object
          mapping: $.
      - method: POST
        name: postusagerules
        description: Create single usageRule.
        call: playback-downloads.postusagerules
        with:
          body: rest.body
        outputParameters:
        - type: object
          mapping: $.
    - path: /v2/usageRules/{id}
      name: usageRules-id
      description: REST surface for usageRules-id.
      operations:
      - method: GET
        name: getusagerules
        description: Get single usageRule.
        call: playback-downloads.getusagerules
        with:
          id: rest.path.id
        outputParameters:
        - type: object
          mapping: $.
  - type: mcp
    namespace: playback-downloads-mcp
    port: 9090
    transport: http
    description: MCP adapter for TIDAL Playback API — Downloads, Offline Tasks, Usage Rules. One tool per consumed operation.
    tools:
    - name: tidal-getdownloads
      description: Get multiple downloads.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getdownloads
      with:
        include: tools.include
        filter[id]: tools.filter[id]
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getdownloads
      description: Get single download.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getdownloads
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getdownloads
      description: Get owners relationship ("to-many").
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getdownloads
      with:
        id: tools.id
        include: tools.include
        page[cursor]: tools.page[cursor]
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getofflinetasks
      description: Get multiple offlineTasks.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getofflinetasks
      with:
        page[cursor]: tools.page[cursor]
        include: tools.include
        filter[id]: tools.filter[id]
        filter[installation.id]: tools.filter[installation.id]
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getofflinetasks
      description: Get single offlineTask.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getofflinetasks
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-patchofflinetasks
      description: Update single offlineTask.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: playback-downloads.patchofflinetasks
      with:
        id: tools.id
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getofflinetasks
      description: Get collection relationship ("to-one").
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getofflinetasks
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getofflinetasks
      description: Get item relationship ("to-one").
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getofflinetasks
      with:
        id: tools.id
        include: tools.include
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getofflinetasks
      description: Get owners relationship ("to-many").
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getofflinetasks
      with:
        id: tools.id
        include: tools.include
        page[cursor]: tools.page[cursor]
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getusagerules
      description: Get multiple usageRules.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getusagerules
      with:
        filter[id]: tools.filter[id]
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-postusagerules
      description: Create single usageRule.
      hints:
        readOnly: false
        destructive: false
        idempotent: false
      call: playback-downloads.postusagerules
      with:
        body: tools.body
      outputParameters:
      - type: object
        mapping: $.
    - name: tidal-getusagerules
      description: Get single usageRule.
      hints:
        readOnly: true
        destructive: false
        idempotent: true
      call: playback-downloads.getusagerules
      with:
        id: tools.id
      outputParameters:
      - type: object
        mapping: $.