The free plan's stored-bytes budget and each project's use of it
The free plan keeps at most budget_bytes logical bytes of events per project: the uncompressed size of the stored rows' values (47 bytes of fixed-size columns plus every stored string: name, property keys and values, page, URL parts, referrer, title), counted over the rows the retention window still keeps. It is not the compressed size on disk. Each total is ingest's running count, set again from ClickHouse every reconcile_interval_seconds and after an erasure or an import. At warning_percent the dashboard warns; once a project's total reaches the budget its ingest answers 402 storage_budget_exceeded and nothing already stored is touched. Paid plans and self-hosted installs have no budget: limited is false and projects is empty. See docs/STORAGE_BUDGET.md.
Authorization
bearerAuth Session token issued by the accounts service (or the legacy /v1/auth routes).
In: header
Response Body
application/json
application/json
application/json
curl -X GET "https://example.com/v1/usage/storage"{ "budget_bytes": 700000000, "limited": true, "measure": "logical_row_bytes", "plan_code": "free", "projects": [ { "name": "Storefront", "percent": 83.250112, "project_uuid": "5f1c2e7a-1c2d-4b3e-9f10-1a2b3c4d5e6f", "reconciled_at": "2026-09-13T12:30:45Z", "state": "warning", "used_bytes": 83250112 } ], "reconcile_interval_seconds": 3600, "warning_percent": 80}