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

# List files

> List all files uploaded by the authenticated user, flattened across upload batches. Returns newest files first.

List all files uploaded by the authenticated user, flattened across upload batches. Returns newest files first.

## Query params

* `page` (default: `1`)
* `limit` (default: `50`, max: `200`)
* `upload_status` (optional): `pending`, `uploading`, `completed`, `failed`

## Example

```bash theme={"system"}
curl -X GET "https://api.soket.ai/files?page=1&limit=50&upload_status=completed" \
  -H "Authorization: Bearer $JWT_TOKEN"
```

## Typical response

```json theme={"system"}
{
  "page": 1,
  "limit": 50,
  "total_pages": 1,
  "total_files": 2,
  "count": 2,
  "files": [
    {
      "batch_upload_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "file_id": "1374132b-b5db-4ec3-9cf1-f61f982e89b0",
      "filename": "audio1.wav",
      "content_type": "audio/wav",
      "size_bytes": 1048576,
      "estimated_duration_seconds": 65.5,
      "upload_status": "completed",
      "gcs_key": "uploads/2026/06/03/1374132b-b5db-4ec3-9cf1-f61f982e89b0.wav"
    }
  ]
}
```

`gcs_key` is only included when `upload_status` is `completed`.


## OpenAPI

````yaml GET /files
openapi: 3.0.3
info:
  title: Dhrith ASR API
  version: 1.0.0
  description: >-
    Upload audio, submit batches, track progress, and fetch merged transcription
    results.
servers:
  - url: https://api.soket.ai/transcribe
    description: Batch transcription, status, results, and download
  - url: https://api.soket.ai
    description: File upload and management
security:
  - bearerAuth: []
paths:
  /files:
    servers:
      - url: https://api.soket.ai
    get:
      summary: List files
      description: >-
        List all files uploaded by the authenticated user, flattened across
        upload batches. Returns newest files first.
      operationId: listFiles
      parameters:
        - name: page
          in: query
          required: false
          schema:
            type: integer
            default: 1
            minimum: 1
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            default: 50
            minimum: 1
            maximum: 200
        - name: upload_status
          in: query
          required: false
          schema:
            type: string
            enum:
              - pending
              - uploading
              - completed
              - failed
      responses:
        '200':
          description: Paginated file list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/FileListResponse'
        '401':
          description: Missing or invalid token
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    FileListResponse:
      type: object
      properties:
        page:
          type: integer
        limit:
          type: integer
        total_pages:
          type: integer
        total_files:
          type: integer
        count:
          type: integer
        files:
          type: array
          items:
            type: object
            additionalProperties: true
    ErrorResponse:
      type: object
      properties:
        detail:
          oneOf:
            - type: string
            - type: object
              additionalProperties: true
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer

````