Skip to main content
POST
/
object-storage
Create object storage bucket
curl --request POST \
  --url https://api.sevalla.com/v3/object-storage \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "display_name": "My Bucket",
  "location": "enam",
  "jurisdiction": "default",
  "public_access": false,
  "project_id": "fb5e5168-4281-4bec-94c5-0d1584e9e657"
}
'
{
  "id": "fb5e5168-4281-4bec-94c5-0d1584e9e657",
  "company_id": "fb5e5168-4281-4bec-94c5-0d1584e9e657",
  "project_id": "fb5e5168-4281-4bec-94c5-0d1584e9e657",
  "name": "my-bucket",
  "display_name": "My Bucket",
  "location": "enam",
  "jurisdiction": "default",
  "bucket_name": "my-bucket",
  "domain": "my-bucket.sevalla.storage",
  "endpoint": "https://account-id.r2.cloudflarestorage.com",
  "access_key": "access-key-id",
  "secret_key": "secret-access-key",
  "created_at": "2025-01-30T00:00:00.000Z",
  "updated_at": "2025-01-30T00:00:00.000Z"
}

Authorizations

Authorization
string
header
required

API key authentication. Pass your API key as a Bearer token in the Authorization header.

Body

application/json
display_name
string
required

Human-readable name for the new object storage bucket. Must be between 2 and 64 characters.

Required string length: 2 - 64
Example:

"My Bucket"

location
enum<string>

Geographic hint for where most data access occurs. Defaults to enam (Eastern North America). apac - Asia-Pacific. eeur - Eastern Europe. enam - Eastern North America. oc - Oceania. weur - Western Europe. wnam - Western North America.

Available options:
apac,
eeur,
enam,
oc,
weur,
wnam
Example:

"enam"

jurisdiction
enum<string>

Data residency jurisdiction. Defaults to default (no restriction). default - no jurisdiction restriction. eu - data stored exclusively in the EU. fedramp - FedRAMP-compliant storage.

Available options:
default,
eu,
fedramp
Example:

"default"

public_access
boolean

Whether to enable a public CDN domain for this bucket. Defaults to false.

Example:

false

project_id
string<uuid> | null

Identifier of the project to group this bucket under. When omitted, the bucket is not assigned to any project.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Example:

"fb5e5168-4281-4bec-94c5-0d1584e9e657"

Response

Default Response

id
string<uuid>
required

Unique identifier for the object storage bucket

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Example:

"fb5e5168-4281-4bec-94c5-0d1584e9e657"

company_id
string
required

Identifier of the company that owns this object storage bucket

Example:

"fb5e5168-4281-4bec-94c5-0d1584e9e657"

project_id
string<uuid> | null
required

Identifier of the project this object storage bucket is grouped under

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
Example:

"fb5e5168-4281-4bec-94c5-0d1584e9e657"

name
string
required

Unique system name used in internal references. Auto-generated from the display name and cannot be changed after creation.

Example:

"my-bucket"

display_name
string
required

Human-readable name shown in the dashboard and API responses

Example:

"My Bucket"

location
enum<string>
required

Geographic hint for where most data access occurs. apac - Asia-Pacific. eeur - Eastern Europe. enam - Eastern North America. oc - Oceania. weur - Western Europe. wnam - Western North America.

Available options:
apac,
eeur,
enam,
oc,
weur,
wnam
Example:

"enam"

jurisdiction
enum<string>
required

Data residency jurisdiction for the bucket. default - no jurisdiction restriction. eu - data stored exclusively in the EU. fedramp - FedRAMP-compliant storage.

Available options:
default,
eu,
fedramp
Example:

"default"

bucket_name
string
required

Name of the R2 bucket in Cloudflare

Example:

"my-bucket"

domain
string | null
required

Public CDN domain for accessing objects in the bucket. Null if public access is not enabled.

Example:

"my-bucket.sevalla.storage"

endpoint
string | null
required

S3-compatible API endpoint URL for programmatic access to the bucket

Example:

"https://account-id.r2.cloudflarestorage.com"

access_key
string | null
required

Access key ID for S3-compatible API authentication. Only returned when the bucket is first created.

Example:

"access-key-id"

secret_key
string | null
required

Secret access key for S3-compatible API authentication. Only returned when the bucket is first created.

Example:

"secret-access-key"

created_at
string<date-time>
required

Timestamp when the object storage bucket was created, in ISO 8601 format

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Example:

"2025-01-30T00:00:00.000Z"

updated_at
string<date-time>
required

Timestamp when the object storage bucket was last modified, in ISO 8601 format

Pattern: ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))T(?:(?:[01]\d|2[0-3]):[0-5]\d(?::[0-5]\d(?:\.\d+)?)?(?:Z))$
Example:

"2025-01-30T00:00:00.000Z"