Upload a file (multipart, "file" field, ≤15MB)
multipart/form-data upload to R2. Any linked issue (directly via issueId, or via the target comment's issue) must belong to the caller's org (else 404). 400 when the file is missing or larger than ~15MB; 501 when storage is not configured. Returns 200 (not 201).
View as MarkdownAuthorization
bearer In: header
Request Body
multipart/form-data
TypeScript Definitions
Use the request body type in TypeScript.
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/v1/attachments" \ -F file="string"{ "attachment": { "id": "497f6eca-6276-4993-bfeb-53cbbbba6f08", "url": "string", "filename": "string", "contentType": "string", "size": 0, "created": "2019-08-24T14:15:22Z" }}List an issue's attachments
Newest first. Each url points at the public presigned-redirect route.
Fetch an attachment (no auth — presigned redirect)
PUBLIC — deliberately unauthenticated and not org-checked so presigned redirects work directly in an <img src>: the unguessable attachment UUID is the access capability. 302-redirects to a presigned R2 URL valid for 24 hours. 501 when storage is not configured.