Limits
Every limit on this platform is reported by GET /v1/account.
Read them by lookup. Do not learn them by being refused.
What is capped
| Limit | What it bounds |
|---|---|
max_sites |
running sites on the account |
max_archived_sites |
archived sites, counted apart |
max_domains |
onboarded domains |
max_files_per_deployment |
files in one deployment |
max_file_bytes |
one file |
max_deployment_bytes |
one deployment, in total |
max_file_path_bytes |
the length of one path |
max_previews_per_site |
draft slots for each site: 1 |
deployments_per_site_day |
publishes for each site each day |
max_redirects |
redirect rules on a site |
max_payout_accounts |
payout accounts on the account |
A draft's limits
A draft counts apart from the live site, against lower caps. Its link is
unlisted, not private, and what it holds is test data.
GET /v1/account reports them as draft_limits.
| Limit | Live | Draft |
|---|---|---|
| form messages | 10 a minute, 200 a day | 3 a minute, 50 a day |
| mail sent by the site's code | 100 a day | 20 a day |
| file storage | 1 GiB | 100 MiB |
| files | 10,000 | 500 |
| uploads | 500 a day | 50 a day |
A draft cap is never above the plan's own. Only caps on how much are lower. A cap on one item (one file, one call, one secret) is the same on a draft, so what a draft accepts the live site accepts too. A refusal on a draft says "this draft".
Archived sites are counted apart from running ones on purpose. Archiving is how an owner starts something new without destroying what they had, so it must not spend the running-sites cap.
What a site has spent
GET /v1/sites/{id}/usage gives each count that a site spends, beside its
limit. A day is the last 24 hours. Builds and pictures count for the
owner's account. The other counts are for the site. Mail has a site limit
and an account limit: account_mails_today and mails_per_account_day
count the mail of all sites and drafts of the account.
{
"usage": {
"deployments_today": 7, "builds_today": 12, "assets_today": 3,
"comments_today": 0, "mails_today": 0, "account_mails_today": 0,
"payments_today": 0,
"drafts": 1, "source_bytes": 4200000, "content_bytes": null
},
"limits": {
"deployments_per_day": 50, "builds_per_account_day": 200,
"assets_per_account_day": 1000, "comments_per_day": 200,
"mails_per_day": 100, "mails_per_account_day": 200,
"payments_per_day": 500, "drafts": 3,
"repository_bytes": 524288000, "requests_per_month": 2000000
}
}
source_bytes and content_bytes are the size of the site's two source
repositories, as measured after the last change. Each is null until its
repository changes once. A push to a repository at repository_bytes is
refused.
The app shows the same counts. The site's overview shows all of them, and each tab shows the one its actions spend.
Visitors in a month
Each plan includes a number of requests for each site in a calendar month
(UTC): requests_per_month. The live site and its drafts count together.
A request that Clave's firewall stops does not count.
| Requests this month | What happens |
|---|---|
past requests_per_month |
the owner gets an email |
| 3 times it | each visitor gets a short check before the site. People pass it. Search engines are not checked |
| 10 times it | the site is blocked |
Each step ends when the month ends. To raise the number, ask Clave.
A site that runs code also has a limit on the rows its database reads
and writes in a month. Past it, the code runs with no database until the
month ends. The pages keep working, and code that uses env.DB fails.
Why bytes are always capped
Counts are metered by the plan. Bytes are capped whatever the plan says, because bytes are the abuse vector.
Clave's caps sit under the hosting provider's own ceilings, so Clave's bind first. A caller gets a clear 400 rather than a provider rejection part way through publishing.
A feature that cannot work is not advertised
A deployment that lacks a credential does not offer the feature that needs it. No Turnstile key, no forms. No mail sender, enquiries are stored and not mailed. No stock-photo key, no photo tools.
GET /v1/account reports which of these are on. A tool that fails is
worse than an absent one, because an agent spends calls finding out.