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

# List Files

> Get all files in the media library

<Warning>
  **Not available yet.** The app-scoped Files API (`/api/v1/files*`) is not
  implemented — calls will 404. The `read_files` / `write_files` scopes are
  reserved in the OAuth catalog (requestable for forward-compat) but no file
  endpoints are bound. The shapes below are the planned contract and may change.
  To read/write **theme** assets today use the Themes assets endpoints
  (`read_themes` / `write_themes`); to pick existing media in an embedded UI use
  the App Bridge [file resource picker](/app-bridge/actions) (no app scope
  required).
</Warning>

## Query Parameters

<ParamField query="page" type="number" default="1">
  Page number
</ParamField>

<ParamField query="limit" type="number" default="50">
  Items per page (max 250)
</ParamField>

<ParamField query="type" type="string">
  Filter by file type: `image`, `video`, `document`
</ParamField>

## Response

The planned contract returns the standard response envelope. The `data` object
holds the file rows plus pagination counters.

<ResponseField name="status" type="integer">
  HTTP status code (e.g. `200`)
</ResponseField>

<ResponseField name="state" type="string">
  Response state: `success` or `error`
</ResponseField>

<ResponseField name="message" type="string">
  Human-readable message (`null` on success)
</ResponseField>

<ResponseField name="data" type="object">
  <Expandable title="properties">
    <ResponseField name="files" type="array">
      <Expandable title="file object">
        <ResponseField name="id" type="string">File ID</ResponseField>
        <ResponseField name="filename" type="string">Original filename</ResponseField>
        <ResponseField name="url" type="string">Public CDN URL</ResponseField>
        <ResponseField name="alt" type="string">Alt text for images</ResponseField>
        <ResponseField name="content_type" type="string">MIME type</ResponseField>
        <ResponseField name="size" type="number">File size in bytes</ResponseField>
        <ResponseField name="width" type="number">Image width (images only)</ResponseField>
        <ResponseField name="height" type="number">Image height (images only)</ResponseField>
        <ResponseField name="created_at" type="string">Upload timestamp</ResponseField>
      </Expandable>
    </ResponseField>

    <ResponseField name="pagination" type="object">
      Pagination info (`page`, `limit`, `total`, `hasMore`)
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseExample>
  ```json theme={null}
  {
    "status": 200,
    "state": "success",
    "message": null,
    "data": {
      "files": [
        {
          "id": "file_abc123",
          "filename": "product-hero.jpg",
          "url": "https://cdn.launchmystore.io/files/product-hero.jpg",
          "alt": "Product hero image",
          "content_type": "image/jpeg",
          "size": 245678,
          "width": 1920,
          "height": 1080,
          "created_at": "2024-01-15T10:30:00Z"
        }
      ],
      "pagination": {
        "page": 1,
        "limit": 50,
        "total": 156,
        "hasMore": true
      }
    }
  }
  ```
</ResponseExample>
