# GET /files/:id/signed-url

**Resource:** [Files](./files.md)  
**Scopes:** `files:read`  
**Write operation:** no

Generate a short-lived signed URL for a private image file stored in private R2. Only applicable to image files (type=image) with is_private=true. The signed URL expires after 600 seconds (10 minutes) and allows temporary read access without making the file permanently public. Returns the signed URL, expiry timestamp, and MIME type.

## Parameters

| Name | In | Type | Required | Description |
|------|----|------|----------|-------------|
| `id` | path | uuid | yes | File UUID of a private image (company_files row with is_private=true) |

## Response example

```json
{
  "data": {
    "signed_url": "https://private.r2.dev/trustpager-private/...?X-Amz-Signature=...",
    "expires_at": "2026-05-16T12:10:00.000Z",
    "mime_type": "image/jpeg"
  }
}
```

---
Base URL: `https://api.trustpager.com/functions/v1/api/v1` — Auth: `Authorization: Bearer YOUR_API_KEY`