Create and delete buckets
Create a bucket in any region that offers Object Storage, follow the naming rules, and delete a bucket with or without its objects.
In the dashboard
A bucket holds objects under one name. Each Object Storage service holds up to 25 buckets, and each bucket lives in one region. You create and delete buckets on the service's Buckets tab, or through the API. Access keys cannot create or delete buckets, so S3 commands such as aws s3 mb are refused.
Before you begin
Section titled Before you begin- Sign in to the dashboard and open the service.
- The service must be
activeto create or delete a bucket. While it waits for payment, while we set it up and while it is suspended, you can browse its buckets and download objects.
Bucket names
Section titled Bucket namesEvery bucket name on your account starts with your account namespace and a hyphen, such as u7-. The Name field shows this prefix in front of what you type, and every client uses the whole name. The Bucket prefix row on the Overview tab shows yours.
A bucket name must follow these rules:
- The whole name, prefix included, is 3–63 characters long. With the prefix
u7-, the part you type can be up to 60 characters. - It uses only lowercase letters, digits, hyphens (
-) and dots (.). - It starts and ends with a letter or a digit.
- A dot cannot sit next to another dot or next to a hyphen, so
u7-my..filesandu7-my.-filesare refused. Two hyphens in a row are allowed.
We change uppercase letters to lowercase. When you type the prefix yourself, we do not add it a second time.
Names are unique across your account, so two of your services cannot both have a bucket called u7-assets. After you delete a bucket, its name stays taken for 7 days.
You cannot rename a bucket or move it to another region. To change either, create a new bucket and copy the objects into it with an S3 client.
Create a bucket
Section titled Create a bucket- Open the service and select the Buckets tab, then select Create bucket…. From the Object Storage list, you can instead select Create bucket on the service's card, or Create bucket in its ... menu. Each opens the Create a bucket page. The page's address is
/dashboard/storage/<service id>/buckets/new. - Under Name, type the part after your prefix, such as
assets. The hint shows the full name and its length, such asFull name: u7-assets · 9/63. When the name breaks a rule, the message under the field says which. - Under Region, choose where the bucket lives. The service's home region is selected at first. The list holds every region that can take a bucket right now.
- Under Protection, tick Keep versions to keep what each overwrite and delete replaces (Keep earlier versions of objects). Tick Object Lock to stop anyone deleting a version before its retention ends (Protect objects with Object Lock). You can turn Object Lock on only now, and it keeps Keep versions ticked.
- When default encryption is available, Encrypt new objects is ticked. Untick it to leave the bucket's new objects unencrypted. You can change it later on the bucket's Settings tab (Encrypt the objects in a bucket). If the box is missing, default encryption is not available yet.
- Read the This bucket card beside the form. It names the region and says in words what encryption, versions and Object Lock will do. On a phone it sits under the form.
- Select Create bucket.
A message confirms it, such as u7-assets created., and the Buckets tab shows the bucket in its list. Cancel and the Buckets link at the top of the page return to the tab without creating anything. If the request is refused, the page stays open with everything you entered, and a Could not create the bucket message says why.
A new bucket starts with one lifecycle rule, abort-incomplete-uploads, which aborts multipart uploads left unfinished for 7 days (The default rule).
Read the bucket list
Section titled Read the bucket listThe Buckets card says how many buckets the service has out of its limit, such as 3 of 25 on this service. The list is sorted by name, and each column heading sorts it another way.
- Bucket
- The bucket's full name. Select it, or anywhere in its row, to open the bucket's page on its Objects tab (Upload, download and delete objects). A lock beside the name marks a bucket with Object Lock.
- Region
- The code of the region the bucket lives in, such as
FRA. - Objects and Size
- How many objects the bucket held, and their total size, at the last measurement. We measure every bucket once an hour.
- Measured
- When we last measured the bucket.
Not yetmeans we have not measured it since you created it. - Created
- The date you created the bucket.
The menu at the end of each row has Browse objects, Settings and, while the service is active, Delete bucket….
Delete a bucket
Section titled Delete a bucketCaution
Deleting a bucket with its contents destroys every object in it straight away. There is no undo and no copy.
- On the Buckets tab, open the bucket's menu and select Delete bucket….
- Read the dialog. For an empty bucket, it says that you lose nothing. For a bucket that holds objects, it gives how many objects and how much data you would destroy.
- For a bucket that holds objects, tick the box that offers to destroy them, such as
Destroy the 1,284 objects in it. Without the tick, we refuse to delete the bucket. - Type the bucket's full name, such as
u7-assets. - Select Delete bucket, or Delete bucket and contents for a bucket that holds objects.
A message confirms it, such as u7-assets deleted. or u7-assets deleted with 1,284 objects.
On a bucket that keeps versions, the contents include every older version and delete marker. A bucket with no current objects can still hold them, and its dialog then offers Destroy any older versions and delete markers in it. On a bucket with Object Lock, we refuse while any version is locked (Delete a bucket with Object Lock).
The dialog decides whether a bucket holds objects from the last hourly measurement. When you added objects to an empty bucket since then, the dialog shows no box, and we refuse the delete with u7-assets is not empty. Delete it with force to destroy its contents as well. Wait for the next measurement and try again, delete the objects first (Delete objects and folders), or delete the bucket through the API with force=true.
Deleting a bucket turns off its public URL and unlinks its custom domains. You can then link each domain to another bucket (Serve a bucket on your own domain).
Result
Section titled ResultThe bucket leaves the list at once, and:
- Its objects are destroyed. Clients that address the bucket get
NoSuchBucket. - Access keys whose scope is that one bucket stop working. They stay on the Access keys tab, marked Inactive, until we remove them with the bucket 7 days later.
- The bucket's name stays taken for 7 days.
- Within 5 minutes, we delete its replication rules, and the rules of other buckets that replicate into it (Replicate a bucket to another region).
A new bucket answers at its region's endpoint, such as https://s3.fra.coritan.com:7337/u7-assets, for every key whose scope covers it. A key whose scope is All buckets on this account covers it from the start.
Troubleshooting
Section titled TroubleshootingA bucket named u7-assets already exists- Your account already has a bucket with that name, on this service or on another one. Choose another name.
u7-assets was deleted recently and is still being removed. Pick another name, or wait for the removal to finish.- You deleted a bucket with that name in the last 7 days. Choose another name, or wait until 7 days have passed since the delete.
This service already has 25 buckets, which is the most one service may hold- Delete a bucket you no longer need, or order another service. The Create bucket… button is greyed out while the service is at its limit, and the Create a bucket page says
This service is at its bucket limitin place of the form. - An error under Name, such as
Dots and hyphens cannot be next to each other. - The name breaks one of the rules in Bucket names. Change it.
No region is available right now- No region can take a bucket at the moment. Try again later, or contact support.
That region does not offer object storage- The region stopped taking buckets after you opened the page. Choose another region.
u7-assets is not empty. Delete it with force to destroy its contents as well.- The bucket holds objects that the last measurement did not count. Delete a bucket gives three ways forward.
u7-assets still holds object versions. Delete it with force to destroy every version as well.- The bucket keeps versions, and older versions or delete markers are left in it. Tick the box in the dialog, or add
force=truethrough the API. u7-backups holds 3 locked versions, so it cannot be deleted yet.- Versions in the bucket are under retention or have a legal hold. Delete a bucket with Object Lock says what to do.
This service is suspended; it can be changed once it is active- You can create and delete buckets only while the service is
active. Pay the overdue invoice (Failed payments and suspended services), then try again. The same message names the statuspendingwhile the service waits for payment. - Create bucket… is missing
- The service is not active. The tab says
Buckets can be created and deleted once the service is active; browsing works now. Gateway refused the bucket:followed by a reason- The region's storage refused the request. Try again in a minute. If it keeps happening, contact support with the whole message.
Related
Section titled Related- Upload, download and delete objects
- Create and revoke access keys
- Object Storage limits
- Troubleshoot Object Storage
With the API
Section titled With the APIEach request takes the service ID. A service that is not Object Storage on your account answers 404 with Object storage service not found.
List buckets
Section titled List bucketsGET /api/v1/client/object-storage/{service_id}/buckets lists the service's buckets, sorted by name:
curl https://api.coritan.com/api/v1/client/object-storage/1207/buckets \
-H "Authorization: Bearer $CORITAN_TOKEN"
{
"items": [
{
"id": 31,
"name": "u7-assets",
"region": "fra",
"location_id": 1,
"location_name": "Frankfurt",
"quota_bytes": null,
"used_bytes": 48318382080,
"object_count": 1284,
"usage_measured_at": "2026-09-26T09:00:00",
"created_at": "2026-09-01T10:01:00",
"deleted_at": null,
"versioning": "enabled",
"object_lock": {"enabled": false, "mode": null, "days": null, "years": null},
"encryption": true,
"cors_rules": 1,
"lifecycle_rules": 2,
"public_url": null,
"custom_domains": 0,
"endpoint": "https://s3.fra.coritan.com:7337",
"url": "https://s3.fra.coritan.com:7337/u7-assets"
},
{
"id": 32,
"name": "u7-backups",
"region": "fra",
"location_id": 1,
"location_name": "Frankfurt",
"quota_bytes": null,
"used_bytes": 0,
"object_count": 0,
"usage_measured_at": null,
"created_at": "2026-09-26T08:40:00",
"deleted_at": null,
"versioning": "off",
"object_lock": {"enabled": false, "mode": null, "days": null, "years": null},
"encryption": false,
"cors_rules": 0,
"lifecycle_rules": 1,
"public_url": null,
"custom_domains": 0,
"endpoint": "https://s3.fra.coritan.com:7337",
"url": "https://s3.fra.coritan.com:7337/u7-backups"
}
],
"total": 2,
"bucket_prefix": "u7-",
"max_buckets": 25
}
Use id as the bucket_id in the other bucket and object requests, and name in S3 clients. endpoint is the regional endpoint the bucket answers at, and url is the bucket's address there. used_bytes and object_count come from the last hourly measurement at usage_measured_at, which is null until the first one. The list leaves out deleted buckets, so deleted_at is null.
versioningoff,enabledorsuspended. Once it isenabled, it is neveroffagain (Keep earlier versions of objects).object_lockenabledsays whether the bucket has Object Lock.modewithdaysoryearsis the default retention, allnullwhen there is none (Protect objects with Object Lock).cors_rulesandlifecycle_rules- How many CORS and lifecycle rules the bucket has. The dashboard's own CORS rule is not counted (Let websites use a bucket with CORS rules, Delete objects on a schedule with lifecycle rules).
encryptiontruewhen the bucket encrypts the objects written to it. Objects written before it turnedtrueare not encrypted (Encrypt the objects in a bucket).
GET /api/v1/client/object-storage/{service_id}/buckets/{bucket_id} returns one bucket in the same shape. A bucket that is not on this service, or that you deleted, answers 404 with Bucket not found.
public_url is the bucket's public URL while it is on, and null otherwise. custom_domains counts the domains linked to the bucket (Serve a bucket publicly).
url is the endpoint with the bucket's name added, as in https://s3.fra.coritan.com:7337/u7-assets. Where the region offers virtual-hosted addresses, url is the bucket's own hostname instead, such as https://u7-assets.s3.fra.coritan.com:7337, with no :7337 when the region answers on port 443. A name with a dot stays path style (Endpoints, ports and addressing styles).
Create a bucket through the API
Section titled Create a bucket through the APIPOST /api/v1/client/object-storage/{service_id}/buckets takes the name, with or without your prefix, and optionally a region's location_id from GET /api/v1/client/object-storage/regions. Without location_id, the bucket goes in the service's home region.
curl -X POST https://api.coritan.com/api/v1/client/object-storage/1207/buckets \
-H "Authorization: Bearer $CORITAN_TOKEN" \
-H "Content-Type: application/json" \
-d '{"name": "assets", "location_id": 1}'
To keep versions, add "versioning": true. To create the bucket with Object Lock, add object_lock, with a default retention or without one, such as "object_lock": {"mode": "COMPLIANCE", "years": 7} or "object_lock": {}. Object Lock turns versioning on whatever versioning says (Protect objects with Object Lock).
To leave out encryption, add "encryption": false. Without it, a new bucket encrypts its objects whenever default encryption is available, and "encryption": true answers 409 while it is not. The bucket in the answer has encryption set to true when its new objects are encrypted (Encrypt the objects in a bucket).
It answers 201 with the new bucket in the shape above. The errors:
| Status | detail |
Cause |
|---|---|---|
409 |
This service is pending; it can be changed once it is active |
The service is not active. The message names its status. |
409 |
This service already has 25 buckets, which is the most one service may hold |
The service is at its limit. |
409 |
A bucket named u7-assets already exists |
Your account has a bucket with that name. |
409 |
u7-assets was deleted recently and is still being removed. Pick another name, or wait for the removal to finish. |
You deleted a bucket with that name in the last 7 days. |
422 |
Bucket name is required |
The name is empty, or holds only your prefix. |
422 |
Bucket names are 3 to 63 characters including the account prefix |
The full name is too long. |
422 |
Bucket names use lowercase letters, digits, hyphens and dots, and start and end with a letter or digit |
The name has another character, or starts or ends with a dot or hyphen. |
422 |
Bucket names cannot have a dot next to another dot or a hyphen |
The name holds .., .- or -.. |
422 |
That region does not offer object storage |
The location cannot take a bucket. |
502 |
Gateway refused the bucket: and a reason |
The region's storage refused the request. |
Delete a bucket through the API
Section titled Delete a bucket through the APIDELETE /api/v1/client/object-storage/{service_id}/buckets/{bucket_id} deletes an empty bucket. Add force=true to destroy its objects as well:
curl -X DELETE "https://api.coritan.com/api/v1/client/object-storage/1207/buckets/31?force=true" \
-H "Authorization: Bearer $CORITAN_TOKEN"
{"ok": true, "bucket": "u7-assets", "region": "fra", "objects_destroyed": 1284}
objects_destroyed counts the objects the request destroyed. Without force, a bucket that holds objects answers 409 with u7-assets is not empty. Delete it with force to destroy its contents as well., and nothing is deleted. A service that is not active answers 409 as it does for a create.
On a bucket that keeps versions, force=true destroys every version and delete marker as well. Without it, a bucket that holds any answers 409 with u7-assets still holds object versions. Delete it with force to destroy every version as well. On a bucket with Object Lock, the delete answers 409 while any version is locked, with a message such as u7-backups holds 3 locked versions, so it cannot be deleted yet.
The delete also turns off the bucket's public URL and unlinks its custom domains.
API operations on this page
| Method | Path | What it does |
|---|---|---|
GET | /api/v1/client/object-storage/{service_id}/buckets | List buckets |
POST | /api/v1/client/object-storage/{service_id}/buckets | Make a bucket in the chosen region, or the service's home region |
GET | /api/v1/client/object-storage/{service_id}/buckets/{bucket_id} | Get bucket |
DELETE | /api/v1/client/object-storage/{service_id}/buckets/{bucket_id} | Remove a bucket |