The bucket the project keeps its result files in
const url = 'https://beta-api.plune.ai/v1/projects/example/storage';const options = {method: 'GET', headers: {cookie: 'plune_session=<plune_session>'}};
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/projects/example/storage \ --cookie plune_session=<plune_session>Every member of the project reads it, a reader too — the connection and what is known of it, never its Secret: { "configured": false } when none is connected, otherwise the provider, the bucket, the folder, the region, accessKeyLast4 (the last four characters of the access key id — not the whole of it), who connected it and when, and what the last check of it found. The project is the one in the path; a project you are not in answers 404, the same as one that does not exist. Session cookie only: a CLI token is refused with 401, because a leaked token must not be able to read — or, on the routes below, point — where a project’s files go.
Authorizations
Section titled “Authorizations ”Parameters
Section titled “ Parameters ”Path Parameters
Section titled “Path Parameters ”An id from GET /v1/projects
Responses
Section titled “ Responses ”The connection, or { "configured": false }
The bucket of a project, as every member of it reads it. { "configured": false } when none is connected. The Secret is not in it, nor is the whole access key id.
object
Present exactly when configured is true, as every field below.
auto for r2.
r2 only.
s3 only.
Exactly the last four characters of the access key id: enough to tell two keys apart, not to use one.
userId of the owner who connected it.
When the SAVED connection was last checked (POST …/test with no body); null if it never was, or since it last changed.
What that check found; null when verifiedAt is.
object
object
Present exactly when result is failed.
The HTTP status the bucket answered with, when it answered and the step did not want that. Never its body.
Example
{ "configured": true, "provider": "aws", "bucket": "acme-test-results", "prefix": "plune", "region": "eu-central-1", "pathStyle": false, "accessKeyLast4": "MPLE", "savedBy": "u-shop", "savedAt": "2026-09-16T09:12:04.151Z", "verifiedAt": null, "verifyResult": null}No / invalid session — a CLI token is refused here
No such project among yours
object
Example
{ "error": "project 'u-shop::default' not found"}The server has no key to keep Secrets under — the operator has not set STORAGE_ENCRYPTION_KEY
object
Example
{ "error": "storage is not configured on this server — contact your operator"}