> ## 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.

# Upload File

> Upload a file to the media library

<Warning>
  **Not available yet.** The app-scoped Files API (`/api/v1/files*`) is not
  implemented — calls will 404. `read_files` / `write_files` are reserved scopes
  (requestable for forward-compat) with no endpoints bound yet. The shape below
  is the planned contract and may change.
</Warning>

## Body Parameters

<ParamField body="file" type="file" required>
  The file to upload (multipart/form-data)
</ParamField>

<ParamField body="alt" type="string">
  Alt text for the image (for accessibility)
</ParamField>

<ParamField body="folder" type="string">
  Optional folder path for organization
</ParamField>

## Supported File Types

| Type      | Extensions                     | Max Size |
| --------- | ------------------------------ | -------- |
| Images    | jpg, jpeg, png, gif, webp, svg | 20MB     |
| Videos    | mp4, webm, mov                 | 100MB    |
| Documents | pdf, doc, docx                 | 10MB     |

## Response

The planned contract returns the standard response envelope with the uploaded
file under `data.file`.

<ResponseExample>
  ```json theme={null}
  {
    "status": 201,
    "state": "success",
    "message": null,
    "data": {
      "file": {
        "id": "file_new789",
        "filename": "banner-summer-sale.png",
        "url": "https://cdn.launchmystore.io/files/banner-summer-sale.png",
        "alt": "Summer sale banner",
        "content_type": "image/png",
        "size": 156234,
        "width": 1200,
        "height": 400,
        "created_at": "2024-01-20T14:30:00Z"
      }
    }
  }
  ```
</ResponseExample>

## Example Request

```bash theme={null}
curl -X POST "https://api.launchmystore.io/api/v1/files.json" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
  -F "file=@/path/to/image.jpg" \
  -F "alt=Product image"
```
