The files attached to a bug
const url = 'https://beta-api.plune.ai/v1/bugs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/files';const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
try { const response = await fetch(url, options); const data = await response.json(); console.log(data);} catch (error) { console.error(error);}curl --request GET \ --url https://beta-api.plune.ai/v1/bugs/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/files \ --header 'Authorization: Bearer <token>'The finished files a person attached to a bug (#1066), newest first, and what the budget would send away for one more picture (budget.evicts). Not the bug’s copies of the pictures of its evidence: those are the card’s files. Anyone who reads the bug reads them; a bug of another project, or in the Bin, is a 404.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”Header Parameters
Section titled “Header Parameters ”Which of your projects to act in — an id from GET /v1/projects. Absent, your default project. A project you are not a member of answers 404, the same as one that does not exist. Ignored under a bearer token, which is bound to the project it was minted in.
Responses
Section titled “ Responses ”The files and the budget
object
Only finished files. A case’s own, newest first; those waiting on the case being marked, in the order they were added.
A file a person added — to a case of its own, or to the case being marked in a manual run (#1234). Everything but its bytes, and who added it and when.
object
The last segment of the name it was uploaded with, cleaned of credentials as a text is.
In the database (storage: db): image/png, image/jpeg, image/webp, application/json or text/plain — a log is text/plain. In the bucket (storage: bucket): the media type it was announced with, lower case and without parameters, any type.
Bytes as kept: in the database a picture at most 2 MiB and a text at most 512 KiB, counted after its credentials are cleaned, so it can differ from what was sent; in the bucket the size that was announced and found there.
db: Plune keeps the bytes, GET /v1/files/{id} returns them. bucket: they are in the project’s own bucket, and GET /v1/files/{id} answers 409 in_bucket (the way to read them is GET /v1/files/{id}/link).
The user who added it; null once that account is gone.
What the project’s files take of its budget, and what one more picture would cost (#1234), so a person is told before an upload, not only after. A project with a bucket sends a person’s files there: nothing of the budget is spent and evicts is null.
object
The project has its own bucket connected.
The bytes of the files kept in the database, the Bin’s included.
The budget: 1 GiB.
What an upload of a picture at the 2 MiB ceiling would send away now — the oldest files, oldest first — or null when it fits. An estimate for a smaller file: the answer of the upload says what really went.
object
When the newest of them was added: everything added before it goes.
Example
{ "files": [ { "id": "3f0c2a7e-1b5d-4c8e-9a61-2d7f4e8b0c15", "name": "price-list-eur.png", "contentType": "image/png", "size": 48213, "storage": "db", "createdAt": "2026-10-13T09:00:00.000Z", "createdBy": "6f1c2b3a-0000-4000-8000-0000000000a2" } ], "budget": { "bucket": false, "usedBytes": 48213, "limitBytes": 1073741824, "evicts": null }}No / invalid token or session
No such bug in this project
object
Example generated
{ "error": "example"}