API reference

Storage

A person's own S3-compatible buckets that spaces keep their files in (encrypted). Signed-in sessions only.

5 endpoints · Overview

GET/v1/storage

My storage profiles (never the secret key)
Bearer token

Responses

  • 200
    Profiles
    object
    › Show fields
    • itemsStorageProfile[]
      › 11 fields
      • idstringrequired
      • namestringrequired
      • kindstringrequired
        s3
      • endpointstringrequired
        Empty for AWS S3
      • bucketstringrequired
      • regionstringrequired
      • prefixstringrequired
        Keys go under it; empty or ends in /
      • access_keystringrequired
      • spacesintegerrequired
        How many spaces keep their files in it
      • created_atTimestamprequired
      • updated_atTimestamprequired
  • 4xx/5xx
    Error
    Error
Example request
curl "https://side.example.com/v1/storage" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"
Example response · 200
{
  "items": [
    {
      "id": "id",
      "name": "A001_C003.mov",
      "kind": "s3",
      "endpoint": "endpoint",
      "bucket": "bucket",
      "region": "region",
      "prefix": "prefix",
      "access_key": "access_key",
      "spaces": 1,
      "created_at": "2026-11-14T09:30:00Z",
      "updated_at": "2026-11-14T09:30:00Z"
    }
  ]
}

POST/v1/storage

Add a bucket. The gateway first writes, reads, lists and deletes a test object in it; 400 says what failed.
Bearer token

Request bodyStorageRequest application/json

  • namestring
  • kindstring
    s3
    default "s3"
  • endpointstring
    https URL of an S3-compatible service (R2, B2, OSS, MinIO…); empty for AWS S3
  • bucketstring
  • regionstring
    default "us-east-1"
  • prefixstring
  • access_keystring
  • secret_keystring
    Stored sealed; never returned. Required with access_key: the gateway never lends its own credentials.

Responses

Example request
curl -X POST "https://side.example.com/v1/storage" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"A001_C003.mov","kind":"s3","endpoint":"endpoint"}'
Example response · 201
{
  "id": "id",
  "name": "A001_C003.mov",
  "kind": "s3",
  "endpoint": "endpoint",
  "bucket": "bucket",
  "region": "region",
  "prefix": "prefix",
  "access_key": "access_key",
  "spaces": 1,
  "created_at": "2026-11-14T09:30:00Z",
  "updated_at": "2026-11-14T09:30:00Z"
}

GET/v1/storage/{id}

Bearer token

Parameters · path

  • idstringrequired

Responses

Example request
curl "https://side.example.com/v1/storage/id" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"
Example response · 200
{
  "id": "id",
  "name": "A001_C003.mov",
  "kind": "s3",
  "endpoint": "endpoint",
  "bucket": "bucket",
  "region": "region",
  "prefix": "prefix",
  "access_key": "access_key",
  "spaces": 1,
  "created_at": "2026-11-14T09:30:00Z",
  "updated_at": "2026-11-14T09:30:00Z"
}

PATCH/v1/storage/{id}

Rename, or change credentials or region (checked like an add). Kind, endpoint, bucket and prefix are fixed while spaces use it (409).
Bearer token

Parameters · path

  • idstringrequired

Request bodyStorageRequest application/json

  • namestring
  • kindstring
    s3
    default "s3"
  • endpointstring
    https URL of an S3-compatible service (R2, B2, OSS, MinIO…); empty for AWS S3
  • bucketstring
  • regionstring
    default "us-east-1"
  • prefixstring
  • access_keystring
  • secret_keystring
    Stored sealed; never returned. Required with access_key: the gateway never lends its own credentials.

Responses

Example request
curl -X PATCH "https://side.example.com/v1/storage/id" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{"name":"A001_C003.mov","kind":"s3","endpoint":"endpoint"}'
Example response · 200
{
  "id": "id",
  "name": "A001_C003.mov",
  "kind": "s3",
  "endpoint": "endpoint",
  "bucket": "bucket",
  "region": "region",
  "prefix": "prefix",
  "access_key": "access_key",
  "spaces": 1,
  "created_at": "2026-11-14T09:30:00Z",
  "updated_at": "2026-11-14T09:30:00Z"
}

DELETE/v1/storage/{id}

Remove a profile no space uses (409 otherwise)
Bearer token

Parameters · path

  • idstringrequired

Responses

  • 204
    Removed
  • 4xx/5xx
    Error
    Error
Example request
curl -X DELETE "https://side.example.com/v1/storage/id" \
  -H "Authorization: Bearer $SIDESPACE_TOKEN"