---
title: "Give the app a private, S3-compatible bucket"
method: POST
path: "/client/apps/{id}/storage"
tags: ["App data"]
---

# Give the app a private, S3-compatible bucket

`POST /client/apps/{id}/storage`

## Request

- Base URL: `https://api.roar-ai.com`
- URL: `https://api.roar-ai.com/client/apps/{id}/storage`
- Auth: HTTP bearer

Creates a bucket and a key that opens only that bucket, and redeploys the app so the S3 variables reach it. Idempotent. Files are private: share one with a presigned URL from the app; an S3 ACL such as `public-read` has no effect. Removing storage and making files public are console actions. Requires `apps:deploy`.

## Path parameters

- `id` string, uuid, required

## Response `200`

File storage status. (Response shape not yet modelled in this spec.)

- object

## Other responses

- `400`: Not available for this app
- `404`: No such app for you

---

[API](https://skmtc.dev/roar-ai/apis/roar-ai-api.md) · [All operations](https://skmtc.dev/roar-ai/apis/roar-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/roar-ai/apis/roar-ai-api/revisions/37e4d0d5a7fe?raw)
