---
title: "Upload a screenshot or video to private Linear storage"
method: POST
path: "/v1/workspaces/{workspaceId}/feedback/attachments"
---

# Upload a screenshot or video to private Linear storage

`POST /v1/workspaces/{workspaceId}/feedback/attachments`

## Request

- Base URL: `https://api.bangermail.com`
- URL: `https://api.bangermail.com/v1/workspaces/{workspaceId}/feedback/attachments`
- Auth: HTTP bearer

Binary uploads support up to 25 MiB. JSON base64 uploads support up to 2 MiB. Reuse attachment_id when retrying the same file. Requires automation:execute for API keys.

## Path parameters

- `workspaceId` string, uuid, required

## Query parameters

- `attachment_id` string, uuid

## Headers

- `x-banger-filename` string

## Request body

- object
  - `attachment_id` string, uuid, required
  - `filename` string, required
  - `mime_type` 'image/png' | 'image/jpeg' | 'image/gif' | 'image/webp' | 'video/mp4' | 'video/webm' | 'video/quicktime', required
  - `base64` string, required

## Response `200`

Existing completed attachment.

- object
  - `data` object, required
    - `attachment_id` string, uuid, required
    - `status` 'ready', required

## Other responses

- `201`: Uploaded and verified attachment; data contains attachment_id and status ready.
- `400`: Invalid metadata or base64.
- `413`: File exceeds the supported size.
- `415`: Unsupported or mismatched media format.
- `429`: Upload limit reached.
- `502`: Linear upload failed.

---

[API](https://skmtc.dev/bangermail/apis/banger-api.md) · [All operations](https://skmtc.dev/bangermail/apis/banger-api/llms.txt) · [OpenAPI document](https://skmtc.dev/bangermail/apis/banger-api/revisions/a149909267f9?raw)
