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

# Get File Signed URL

> Generates a presigned S3 URL for a specific file variant (original, redact, or OCR). Supports browser behavior overrides such as inline vs attachment, custom filename, and expiration time.



## OpenAPI

````yaml GET /files/{id}/signed-url
openapi: 3.0.1
info:
  title: Indora Labs API
  description: >-
    Comprehensive API for search, ingestion, file ops, redaction, detections,
    audit trail, and case management. All endpoints return strongly-typed JSON
    with explicit field descriptions and examples.
  version: 1.0.0
  license:
    name: Proprietary
servers:
  - url: https://api.indoralabs.com
security:
  - apiKeyAuth: []
tags:
  - name: Search
  - name: Uploads
  - name: Files
  - name: Redactions
  - name: Detections
  - name: Cases
  - name: Audit
  - name: Auth
  - name: Embeddings
  - name: Policy
paths:
  /files/{id}/signed-url:
    get:
      tags:
        - Files
      summary: Generate a signed download URL for a file variant
      description: >-
        Generates a presigned S3 URL for a specific file variant (original,
        redact, or OCR). Supports browser behavior overrides such as inline vs
        attachment, custom filename, and expiration time.
      parameters:
        - name: id
          in: path
          required: true
          schema:
            type: string
            format: uuid
          description: The unique ID of the file.
        - name: variant
          in: query
          required: false
          schema:
            type: string
            enum:
              - original
              - redact
              - ocr
            default: original
          description: Which file variant to sign. If not provided, defaults to `original`.
        - name: expires
          in: query
          required: false
          schema:
            type: integer
            minimum: 60
            maximum: 86400
            default: 3600
          description: >-
            Expiration time in seconds for the signed URL. Must be between 60
            and 86400 seconds.
        - name: filename
          in: query
          required: false
          schema:
            type: string
          description: Optional filename override used in the Content-Disposition header.
      responses:
        '200':
          description: Signed URL successfully generated.
          content:
            application/json:
              schema:
                type: object
                properties:
                  url:
                    type: string
                    description: Presigned S3 URL.
                  variant:
                    type: string
                    enum:
                      - original
                      - parsed
                      - ocr
                    description: >-
                      The actual variant that was signed (may differ if fallback
                      occurred).
                  bucket:
                    type: string
                    description: S3 bucket containing the file.
                  key:
                    type: string
                    description: S3 object key.
                  expires:
                    type: integer
                    description: Expiration time in seconds.
        '400':
          description: Invalid request parameters.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '401':
          description: Unauthorized (missing or invalid token).
        '404':
          description: File or requested variant not found.
        '500':
          description: Internal server error.
components:
  schemas:
    Error:
      type: object
      required:
        - error
        - message
      properties:
        error:
          type: string
          description: Short error code or category.
        message:
          type: string
          description: Human-readable error explanation.
        details:
          type: object
          description: Optional structured error details for debugging.
      example:
        error: BadRequest
        message: Missing required parameter 'fileId'.
        details:
          param: fileId
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key

````