File Storage

Upload files to R2 storage via multipart form:

# Upload
POST /p/{id}/storage/upload
Content-Type: multipart/form-data
Authorization: Bearer {token}

# -> { url, key, size, content_type }

# Download
GET /p/{id}/storage/{key}

# Delete
DELETE /p/{id}/storage/{key}
X-Admin-Key: sk_...

Using with file columns

Use file type columns in your schema. Upload the file first, then store the returned URL in the column:

# 1. Upload
POST /p/{id}/storage/upload  ->  { "url": "https://..." }

# 2. Save to record
PATCH /p/{id}/api/users/{user_id}
{ "avatar": "https://..." }