clave docs

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.