capless
Docs Limits & quotas

Limits & quotas

Plan allowances

Allowances are per project, per calendar month. See pricing for prices.

Unclaimed (14 days)Free trial (14 days)StarterTeamEnterprise
Membersnone (read-only via the claim secret)unlimited1unlimitedcustom
Events / month250,000250,000250,000 included250,000 includedcustom
Session replays / month2,5002,5002,500 included2,500 includedcustom
Storage10 GB10 GB10 GB-months included10 GB-months includedcustom
Sitesunlimitedunlimitedunlimitedunlimitedcustom
Web analytics, session replay, reading data✓✓✓✓✓
API keys, MCP, writes, erasures, members, settings✓✓✓✓
ClickHouse SQL✓✓✓✓
Beyond the included usagecollection pausescollection pausespay as you gopay as you gocontract
  • An event is each web analytics event (pageview, click, …) or each entry inserted via the API.
  • A replay is one recorded session in one browser tab.
  • A site is a hostname that sent events. One snippet works on any number of them.
  • Storage is the compressed size of your streams plus your ClickHouse tables, measured hourly.
  • On Starter and Team, usage beyond the included amount is billed: events $2 per 1M (first 100M), then $1 per 1M; replays $0.50 per 1,000 (first 100,000), then $0.25 per 1,000; storage $0.10 per GB-month.
  • The trial has no card on file, so its limits are hard: collection pauses at a limit until you pick a plan. Data you already collected is untouched.
  • An unclaimed project is one created by a snippet from analytics.capless.sh that nobody has claimed yet. Its limits are hard, and it is deleted with all its data 14 days after it was created unless it is claimed. Claiming starts the 14-day trial (or needs a plan if the account already had a trial) and keeps the data.
  • Data is kept until you delete it (erasures, or deleting a stream); deleted data stops counting toward storage once it is purged.

Spend cap

On Starter and Team, owners and admins can set a monthly limit on the whole bill (plan price plus usage beyond the included amount), in USD, at least 5:

curl -s -X PATCH https://api.capless.sh/v1/billing -H "authorization: Bearer $CAPLESS_API_KEY" -d '{"spendCap":50}'
# → {"spendCap":50}; {"spendCap":null} removes it

When the period's estimated bill reaches the cap, collection pauses (402 spend_cap_reached) until the next period or until you raise or remove the cap. Data you already collected is untouched. It is off by default, and it is the protection against traffic you did not expect, for example from a copied snippet.

API

LimitValue
Request body8 MiB (413 request_too_large)
Entries per batch1–100 000
Entry size / depth1 MiB / 32 levels
Idempotency key≤ 256 characters, kept 7 days
Stream and materialization names^[A-Za-z0-9][A-Za-z0-9_.\-]{0,127}$ (names starting with $ are built-in)
List page size1–1000 (default 100)
Commits per streamon the order of 1000/s; batch, or shard hot streams

Reads

LimitDefaultMax
limitReadEntries (positions examined)10 0001 000 000
limitResultEntries1 000100 000
limitReadBytes (stored bytes examined)16 MiB256 MiB
limitBytes (result bytes)1 MiB32 MiB
Inlined erasure IDs in /changes1000
Erasure affected-ID page (limit)100010 000

CEL

LimitValue
Expression length4096 characters
AST nodes / depth1000 / 32
Nested comprehensions2
Literal list elements / map entries256 / 256

ClickHouse queries

LimitValue
Statements per request1
Time / memory30 s / 4 GB
Returned rows (maxRows)default 10 000, max 100 000

Web collector

LimitValue
Payload per request1 MiB compressed, 4 MiB decompressed
Session timeout30 minutes of inactivity
New projects (first event of an unknown key)20 per minute per IP address (429 rate_limited)

This page as Markdown

← API reference · Security & privacy →