Skip to content
Coritan Docs

Object Storage limits

The limits on billing, budgets, buckets, bucket names, object keys, access keys, listings, presigned URLs, usage history and API requests in Object Storage.

View as Markdown

This page lists every fixed limit in Object Storage, with the message you see when you reach one. Pay as you go has no storage allowance, and How Object Storage is billed explains the rates and the free amounts.

What Limit
Storage No allowance on pay as you go. We bill what the buckets hold by the GB-month, above the account's free amounts. On a plan that is no longer sold, the plan's included storage, with a rate per GB-month above it. A GB is 1024³ bytes.
Buckets 25 on each service. Over it: This service already has 25 buckets, which is the most one service may hold.
Access keys No fixed number.
Plan change Pay as you go has one plan. A plan that is no longer sold can switch to it (Switch to pay as you go).
Changes while the service is not active You cannot create or delete a bucket or create a key: This service is suspended; it can be changed once it is active, with the service's status in place of suspended. The dashboard shows Upload… and New folder… only while the service is active. You can revoke a key in any status.
Suspension Keys stop working within a couple of minutes and work again when the service is active. The objects stay where they are, and we bill nothing for the hours it is suspended.
After the service ends Keys stop working within a couple of minutes. We keep the objects for 7 days, then delete them with their buckets (Cancel the service).
What Limit
Free each month 10 GB-month of storage on the Free plan, 250 on Pro, 1,024 on Business and what your agreement sets on Enterprise, with 1 million Class A and 10 million Class B operations on every plan (Free each month).
Who shares the free amounts Every pay as you go service on the account. A second service adds no free use.
When the free amounts start again 00:00 UTC on the 1st of each month. Unused amounts do not carry over.
Rating Every hour, two to three hours after the hour ends. Until then, the hour is not in Estimated so far.
Rounding None on the use. Each amount is rounded to the cent on the invoice.
A meter under half a cent Waits for the next invoice. Once the service has ended, we do not bill it.
Final invoice after the service ends Due 3 days after we make it, by default.
Budget One on each service, from $1 to $1,000,000 a month. Alerts at 50%, 80% and 100%, each once a month for each amount. A budget never stops the service.
Budget changes 30 an hour for each account, across all its services (Rate limits). Over it: Too many requests for this action. Try again later.
Usage download One calendar month in each file, with a row for each bucket and day.
What Limit
Prefix Every name starts with your account namespace and a hyphen, such as u7-. We add it when you leave it out.
Length 3–63 characters, prefix included. With the prefix u7-, you can type up to 60. Over it: Use at most 63 characters, including the prefix.
Characters Lowercase letters, digits, hyphens and dots. We change uppercase letters to lowercase. Anything else: Use lowercase letters, digits, hyphens and dots, and start and end with a letter or digit.
First and last character A letter or a digit.
Dots Not next to another dot or a hyphen: Dots and hyphens cannot be next to each other.
Uniqueness One bucket with each name across your account, whichever service holds it: A bucket named u7-assets already exists.
After a delete The name stays taken for 7 days: u7-assets was deleted recently and is still being removed. Pick another name, or wait for the removal to finish.
Rename or move Not possible. Create a new bucket and copy the objects into it with an S3 client.

The dashboard checks the length, the characters and the dots as you type, and shows the message under Name. It shows the messages about a name that is taken after you select Create bucket. Create a bucket through the API lists the messages the API gives for each rule.

What Limit
Region One, chosen when you create the bucket. The bucket answers only at that region's endpoint.
Objects in a bucket No fixed number.
Public access Off until you turn on the bucket's public URL or link a custom domain (Serve a bucket publicly). Nobody can list a bucket without a key.
Versions Off until you turn on versioning. An upload then keeps the version it replaces, and a delete adds a delete marker (Keep earlier versions of objects).
Custom domains 10 on each bucket. A hostname serves one bucket.
Deleting a bucket that holds objects Needs the tick box in the dashboard, or force=true through the API. Otherwise: u7-assets is not empty. Delete it with force to destroy its contents as well.
What Limit
Requests to a public URL 1,200 a minute from one visitor address by default. The Public URL card shows the current figure. Over it: 429. Custom domains have no such limit.
Methods GET and HEAD, and OPTIONS for CORS. Anything else answers 405.
While the service is not active Public URLs and custom domains answer 404.
Cached copies Objects of 10 MB or less, for an hour, or for as long as the object's Cache-Control allows, up to a day.
Purges 60 an hour for each account, each of up to 100 paths or everything.
Changes to public URLs, websites and domains 60 an hour for each account.
Domain checks 120 an hour for each account.
A domain another bucket linked and never verified Released after 72 hours.
Index and error documents Object keys of up to 1,024 bytes.

Serve a bucket publicly, Serve a bucket on your own domain and Host a static website in a bucket explain each one.

What Limit
Object key Up to 1,024 bytes in UTF-8 for uploads in the dashboard and presigned URLs from the API. Over it: Object keys are at most 1024 bytes.
Object size The dashboard and the API check no size. The dashboard sends each file in one request, so upload files of several gigabytes with an S3 client, which sends them in parts.
Uploads in the dashboard Files only, one request each. Upload a folder with its contents from an S3 client.
Downloads in the dashboard One object at a time.
Folder names in the dashboard No backslash: Enter a folder name without backslashes. We remove a / at the start or the end.
What Limit
Turning versioning off Not possible once it is on. You can suspend it, and the bucket keeps the versions it holds. A bucket with Object Lock keeps it on.
Object Lock Turned on when you create the bucket, and never removed.
Default retention 1–36,500 days, or 1–100 years. A year is 365 days.
Retention on one version Ends at least 1 minute and at most 36,500 days from now.
Versions on a page 200 in the dashboard. 1–1000 through the API, 100 by default.
Versions in an object's details The newest 50.
Restoring a version Up to 5 GB, in the dashboard or through the API. Over it: This version is larger than 5 GB, which is the most we copy in one request. Copy it with an S3 client instead.
Deleting a bucket with Object Lock Refused while any version is locked. We read the locks of up to 10,000 versions, and in a larger bucket we delete the versions that are not locked and then refuse.
Changes to versioning, retention, legal holds and versions 300 an hour for each account. Over it: 429 with Retry-After.

Keep earlier versions of objects and Protect objects with Object Lock explain each one.

What Limit
CORS rules on a bucket 99. The dashboard keeps one more so its file browser can upload.
Lifecycle rules on a bucket 100.
The rules as one document 64 KB, for CORS and for lifecycle.
Tags in a lifecycle rule 10.
Keep the newest 1–100 old versions of each key.
Lifecycle runs Once a day. Each run checks at most 100,000 objects in a bucket, and the next run carries on from there.
Rule changes 60 an hour for each account, CORS and lifecycle together. Over it: 429 with Retry-After.

Let websites use a bucket with CORS rules and Delete objects on a schedule with lifecycle rules explain each one.

What Limit
Keys on a service No fixed number.
Label 1–64 characters: letters, digits, spaces, dots, hyphens and underscores, starting with a letter or a digit. Otherwise: Labels use letters, digits, spaces, dots, hyphens and underscores.
Label on a service Each key on a service has a label of its own, and labels that differ only in upper and lower case count as the same: A key labelled ci deploy already exists on this service.
Access key ID 24 characters, starting with AKIA.
Secret key 43 characters, shown once when you create the key.
Permissions Read only or Read and write. No key can create or delete a bucket.
Bucket settings No key can change them. Writes to versioning, CORS, lifecycle and the other settings answer 403 with Change this setting in the dashboard or the Object Storage API. Reading them works (Bucket settings).
Scope One bucket of the service, or All buckets on this account.
Regions A key works at every regional endpoint.
Time to take effect Up to a couple of minutes after you create or revoke a key.

What a key can do explains the permissions and scopes.

What Limit
Lifetime 900–43200 seconds (15 minutes to 12 hours). The default is 3600. The dashboard offers 15 minutes, 1 hour and 12 hours.
Permissions Read only or Read and write, as for an access key. Never a bucket setting, an ACL, Object Lock, or creating or deleting a bucket.
Scope One bucket of the service, or All buckets on this account, and optionally a key prefix.
Key prefix At most 256 bytes. No *, ?, $ or backslash, and no leading slash. A request that reads or writes an object does not tell upper and lower case apart in it.
Revoking Not possible. They stop at their expiry.
Regions Send each request to the endpoint of the region that holds the bucket, as for an access key.
Creating them 120 an hour for each account. Over it: 429 with the header Retry-After: 3600 and Too many requests for this action. Try again later.
Availability Only while we have the feature on: Temporary credentials are not available yet. Create an access key instead. While a region's storage servers catch up: Temporary credentials are not ready in this region yet. Try again in a few minutes.

Create temporary credentials explains each one.

What Limit
Availability Only while we have default encryption on. Until then a bucket's Default encryption card reads Not available yet, and turning it on answers 409 with Default encryption is not available yet. We are getting it ready and will turn it on soon.
Which objects Those written after you turn it on. Objects already in the bucket keep the state they were written in.
Algorithm AES-256 (AES256).
Turning it off Always possible while the service is active. Encrypted objects stay readable.
Changes while the service is not active Refused with 409 and This service is suspended. You can change encryption once it is active., with the service's status in place of suspended.
Changes 60 an hour for each account. Over it: 429 with the header Retry-After: 3600.
Your own key (SSE-C) A 256-bit key, sent with each upload and each read. It needs no setup and works with default encryption on or off.

Encrypt the objects in a bucket explains each one.

What Limit
Lifetime of a link from the API 60–3600 seconds, 900 by default. We shorten a request for up to 86400 seconds to 3600. Below 60 or above 86400, the API answers 422.
What a link does One operation on one object: get, put or delete.
Older versions A get link can name a version_id, and then downloads that version.
Uses Any number, until the link expires.
Object key Up to 1,024 bytes: Object keys are at most 1024 bytes.
Content type Up to 255 characters, for put.
Links from an S3 client Signed with your key. They stop working when they expire or when you revoke the key.

Share a file with a presigned URL shows both ways to create one.

What Limit
Entries per page in the dashboard 200. Load more lists the next 200.
Entries per page through the API 1–1000 (max_keys), 200 by default.
prefix through the API Up to 1,024 characters.
token through the API Up to 2,048 characters.
Keys in one delete request through the API 1–1000.
Deleting a folder in the dashboard Up to 10,000 objects under each folder in one run. Over it: A folder had more than the browser deletes at once; run the delete again for the rest.
What Limit
Measurement Every hour, for every bucket. Sizes and object counts come from the last measurement.
Storage history through the API 1–366 days, 30 by default: days on GET /api/v1/client/object-storage/{service_id}/usage.
Request history through the API 1–90 days, 30 by default, one entry for each day: days on GET /api/v1/client/object-storage/{service_id}/requests.
Stored over time chart The last 7, 30 or 90 days, in at most 120 bars.
Requests chart The last 7, 30 or 90 days.
What Limit
Endpoint https://s3.<region>.coritan.com, one for each region, with :7337 unless the region also answers on port 443.
Port 7337 in every region, and 443 in a region whose endpoint the dashboard shows without a port.
Protocol HTTPS with TLS 1.2 or 1.3. A plain HTTP request to port 7337 answers 400 Bad Request.
Addressing Path style in every region. Virtual-hosted style where the dashboard offers it. A bucket name with a dot is path style only.
Signature AWS Signature Version 4, with any region name.
Host The host and port of the address you connect to, exactly: the endpoint, or the bucket's own hostname in virtual-hosted style. A request sent to an IP address, or through a proxy that changes the Host header, fails with SignatureDoesNotMatch.

Connect an S3 client explains each setting, and Endpoints, ports and addressing styles says which ports and addresses a region answers.

What Limit
Rules on a bucket 100. Over it: A bucket has at most 100 notification rules.
Events object-create and object-delete (Events).
Prefix and suffix 1024 characters each, matched exactly, capitals included.
Description 100 characters.
Overlapping rules Refused: two rules may not share an event for any one key (Overlapping rules).
Address https:// only, on the public internet and outside Coritan, at most 2048 characters.
Answer we wait for 10 seconds. Only a 2xx status counts as delivered. We do not follow redirects.
Attempts 6: at once, then after 1 minute, 5 minutes, 30 minutes, 2 hours and 6 hours.
Pause We pause a rule whose every delivery failed for a day, and email the account's owner.
Delivery log 30 days.
Rule changes 120 an hour for each account: adding, editing, pausing and deleting a rule, and rotating its secret. Over it: 429 with Retry-After: 3600.
Test events 30 an hour for each account. Over it: 429 with Retry-After: 3600.

Get notified when objects change explains each one.

What Limit
Migrations queued or running in one service 3.
Largest object a migration or replication copies 625 GB.
Failed objects kept for each migration 1000.
Starting, cancelling and retrying migrations 30 an hour for each account.
Check source 30 in 10 minutes for each account.
Replication rules on a bucket 10.
Replication passes Every 5 minutes, with a full comparison once a day.
Replication rule changes 60 an hour for each account.

Migrate objects from another provider and Replicate a bucket to another region explain each one.

What Limit
Setting or removing a budget 30 requests an hour for each account, shared by PUT and DELETE on /api/v1/billing/object-storage/{service_id}/budget and by Save budget and Remove budget in the dashboard. Over it: 429 with the header Retry-After: 3600 (Set or remove a budget).
Creating temporary credentials 120 requests an hour for each account, by the dashboard and by POST /api/v1/client/object-storage/{service_id}/credentials. Over it: 429 with the header Retry-After: 3600 (Create temporary credentials).
Every Object Storage route of the Coritan API Counts towards the limits on requests from one address that Rate limits describes.
S3 requests Go to the regional endpoint, and do not count towards the Coritan API's limits.

Changes to a bucket's settings and rules have hourly limits of their own, which the sections above list. Over one, the API answers 429 with Retry-After, and the dashboard shows Too many requests for this action. Try again later.