> ## Documentation Index
> Fetch the complete documentation index at: https://docs.salesive.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Download a title with an all-access link

> Open one title of the all-access pass. One token covers the whole pass, so the title is named in the path.

## Request

```http theme={null}
GET /downloads/9f2c1b7e4a6d8035c1e2f4a7b9d0c3e5a8b1d4f6c7e90123/6702c1a4e1b3a40012cd2001
```

## Path parameters

| Parameter | Type | Description |
| - | - | - |
| `token` | string | The download token of the all-access pass, from a library row's `downloadUrl`. |
| `productId` | string | The digital product to download. |

<Note>
  An all-access token works for listed products the seller marked as part of the pass, checked live: a title removed from the pass stops being downloadable straight away, and a title added tomorrow works tomorrow. A single-title token accepts its own `productId` here too, and answers `404` for any other.
</Note>

Responses, limits and error codes are the same as for [Download a purchased file](/api-reference/endpoint/downloads/download). The daily limit counts each title separately.


## OpenAPI

````yaml api-reference/openapi.json GET /downloads/{token}/{productId}
openapi: 3.1.0
info:
  title: Salesive Store API
  description: >-
    REST interface for querying products, categories, and merchandising banners
    exposed by Salesive storefronts.
  version: 1.0.0
servers:
  - description: Production
    url: https://store.salesive.com/api/v1
security:
  - BearerAuth: []
    ShopIdHeader: []
paths:
  /downloads/{token}/{productId}:
    get:
      summary: Download a title with an all-access link
      description: >-
        Same as `GET /downloads/{token}`, for an all-access pass: one token
        covers every title in the pass, so the title is named in the path. Only
        listed titles marked as part of the pass can be downloaded this way; a
        title removed from the pass stops being downloadable straight away. A
        single-title token accepts its own `productId` here too and `404`s any
        other.
      parameters:
        - name: token
          in: path
          required: true
          schema:
            type: string
            pattern: ^[0-9a-f]{32,128}$
          description: >-
            The download token from the buyer's email or the `downloadUrl` of a
            library row.
        - name: productId
          in: path
          required: true
          schema:
            type: string
          description: The digital product id.
      responses:
        '200':
          description: >-
            A PDF up to 30 MB, stamped on every page with the buyer's email, the
            store name and a short access id. Sent as an attachment with
            `Cache-Control: no-store`.
          content:
            application/pdf:
              schema:
                type: string
                format: binary
        '302':
          description: >-
            Any other format, or a PDF over 30 MB: a redirect to a short-lived
            (5 minutes) link to the file. Follow it right away.
        '403':
          description: >-
            The store is unavailable (`store_unavailable`) or the seller revoked
            this access (`revoked`).
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                  code:
                    type: string
                    description: Machine-readable reason.
                example:
                  status: 403
                  success: false
                  message: >-
                    Access to this title was removed by the store. Contact the
                    store if you think this is a mistake.
                  code: revoked
                  data: {}
        '404':
          description: >-
            The token is not valid or the title is no longer available
            (`not_found`), or the file is missing (`file_unavailable`).
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                  code:
                    type: string
                    description: Machine-readable reason.
                example:
                  status: 404
                  success: false
                  message: >-
                    This download link is not valid. Check that you copied the
                    whole link, or open your library from the store.
                  code: not_found
                  data: {}
        '410':
          description: >-
            A pass that has ended (`expired`). `renewUrl` points at the store's
            library.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                  code:
                    type: string
                    description: Machine-readable reason.
                example:
                  status: 410
                  success: false
                  message: >-
                    Your access to this title has ended. Renew it from the store
                    to download again.
                  code: expired
                  data: {}
        '429':
          description: >-
            Five downloads of this title today (`download_limit`). The
            `Retry-After` header counts the seconds to the next UTC midnight.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                  code:
                    type: string
                    description: Machine-readable reason.
                example:
                  status: 429
                  success: false
                  message: >-
                    You have reached today's download limit for this title.
                    Please try again tomorrow.
                  code: download_limit
                  data: {}
        '502':
          description: >-
            The file service could not prepare the file (`file_service_error`).
            The attempt does not count against the daily limit.
          content:
            application/json:
              schema:
                type: object
                properties:
                  status:
                    type: integer
                  success:
                    type: boolean
                  message:
                    type: string
                  data:
                    type: object
                  code:
                    type: string
                    description: Machine-readable reason.
                example:
                  status: 502
                  success: false
                  message: >-
                    We could not prepare your file. Please try again in a
                    moment.
                  code: file_service_error
                  data: {}
      security: []
components:
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: JWT issued by the Salesive Store API for authenticated shoppers.
    ShopIdHeader:
      type: apiKey
      in: header
      name: x-shop-id
      description: >-
        Optional storefront identifier sent as a header to scope responses to a
        specific shop. Try It requests remember this value once provided.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.