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

# Get a presigned download URL for a specific version



## OpenAPI

````yaml /api-reference/openapi.yml get /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}
openapi: 3.0.3
info:
  title: DataLinks
  version: 3.10.0
servers:
  - url: https://api.datalinks.com/api/v1
    description: production server
security:
  - bearerAuth: []
  - openId:
      - implicit
paths:
  /data-assets/{username}/{namespace}/{assetId}/versions/{versionNo}:
    get:
      tags:
        - data-assets
      summary: Get a presigned download URL for a specific version
      operationId: getDataAssetVersion
      parameters:
        - name: username
          in: path
          description: The username associated with the request.
          required: true
          schema:
            type: string
        - name: namespace
          in: path
          description: Namespace for the dataset.
          required: true
          schema:
            type: string
          example: cinematography
        - name: assetId
          in: path
          description: The data asset's id.
          required: true
          schema:
            type: string
            format: uuid
        - name: versionNo
          in: path
          description: The version number.
          required: true
          schema:
            type: integer
        - name: ttl
          in: query
          description: Presigned download URL lifetime in seconds (default 900, max 3600).
          required: false
          schema:
            type: integer
      responses:
        '200':
          description: The version's download URL
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DataAssetVersionDownloadResponse'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          $ref: '#/components/responses/NotFound'
        '422':
          $ref: '#/components/responses/UnprocessableEntity'
components:
  schemas:
    DataAssetVersionDownloadResponse:
      required:
        - downloadUrl
        - expiresAt
        - versionNo
      type: object
      properties:
        versionNo:
          type: integer
        downloadUrl:
          type: string
          description: >
            Presigned GET URL, valid until `expiresAt`. Send no `Authorization`
            header - the

            signature is the credential.


            A `Content-Disposition: attachment` naming the asset is signed into
            the URL, so S3

            returns it on the response and a browser saves the file under the
            asset's name rather

            than the opaque S3 key. Because it is part of the signature it
            cannot be overridden by

            the caller. Every version of an asset downloads under the same name,
            so saving two

            versions to one directory will collide - rename client-side if that
            matters.
        expiresAt:
          type: string
          format: date-time
    ErrorResponse:
      required:
        - error_code
        - message
      type: object
      properties:
        error_code:
          type: string
          example: UNAUTHORIZED
        error_message:
          type: string
          example: ''
        message:
          type: string
          example: Missing authentication token
        sub_errors:
          type: array
          items:
            required:
              - code
              - message
            type: object
            properties:
              code:
                type: string
              message:
                type: string
  responses:
    Unauthorized:
      description: >-
        Unauthorized. This error occurs if the authentication token is missing
        or invalid.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    NotFound:
      description: The requested resource was not found.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
    UnprocessableEntity:
      description: Invalid request (e.g. version out of retention, TTL above max).
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ErrorResponse'
  securitySchemes:
    bearerAuth:
      type: http
      description: >
        Use a Bearer token for authentication. Submit the token using the
        `Authorization`

        header: `Authorization: Bearer <token>`.
      scheme: bearer
    openId:
      type: oauth2
      flows:
        implicit:
          authorizationUrl: >-
            https://login.datalinks.com/realms/datalinks-realm/protocol/openid-connect/auth
          scopes:
            openid: openid

````

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