Limits & Usage
CMS Assets tracks usage per user across all projects per month. Understanding how limits work helps you plan your usage and avoid unexpected interruptions.
What is tracked
Each project tracks two metrics, aggregated at the user level for quota enforcement:
| Metric | Description |
|---|---|
| Requests | Total number of asset requests served. This is the primary billing metric. |
| Bandwidth (bytes) | Total bytes served, measured from the Content-Length header of each response. Both cache hits and cache misses count toward bandwidth. |
Usage is aggregated into monthly buckets using UTC time. The bucket resets on the 1st of each month.
Plan limits
| Limit | Free | Pro |
|---|---|---|
| Projects | 1 | Unlimited |
| Requests | 500,000 / month | 5,000,000 included |
| Bandwidth | 5 GB / month | 200 GB included |
| Over limit | Requests pause | $1/1M requests, $0.05/10GB BW |
Limits are shared across all your projects. If project A uses 300,000 requests and project B uses 200,000 requests, you've hit the 500,000 free limit.
Quota enforcement
Usage is tracked per request via fire-and-forget ingest events from the edge worker. The worker itself does not perform quota checks — it always serves the request and records usage asynchronously.
Quota enforcement happens at the API/billing layer, where usage is aggregated and reconciled:
- If within quota → no action needed
- If over quota (free plan) → requests may be paused until the quota resets on the 1st of the next month
- If over quota (Pro plan) → overage billing applies; requests continue to be served
Fail-open design
The usage ingest is non-blocking. If the ingest endpoint is temporarily unavailable (network error, timeout, etc.), the asset request is still served normally. Usage tracking never blocks the response.
Viewing usage
Dashboard
Navigate to your projects to see usage at a glance for each project. Click into a specific project to see detailed usage including:
- Current month requests and bandwidth
- Previous month requests and bandwidth
- Last request timestamp
Reducing usage
Here are some strategies to stay within your limits:
- Increase cache TTL — Longer TTL means fewer origin fetches. The default is 2 days, but you can increase it up to 30 days for static assets.
- Optimize image sizes — Serve appropriately sized images from your CMS. Smaller images = less bandwidth.
- Use modern formats — WebP and AVIF are significantly smaller than JPEG/PNG.
- Block bots — The default bot blocklist prevents crawlers from consuming requests. Customize it to block additional unwanted traffic.
Upgrading
If you're consistently hitting the free tier limits, consider upgrading to Pro:
- 5,000,000 requests included (10x more)
- 200 GB bandwidth included
- Overage billing instead of requests pausing
- Upgrade from your profile page