<!-- Generated from /docs/limits. Do not edit by hand. -->
> Source: https://inspekt.gg/docs/limits · Monthly quotas by plan, how embed loads are counted, rate limits, the daily limit per visitor, origins per key and the uptime SLA.

# Limits & SLA

Every plan is billed as one flat monthly fee, with no per-request or overage charges. Each plan has a monthly quota for each kind of request. Past a quota, the answer is `429` with `code: "quota_exceeded"` until the billing period renews.

## Monthly quotas

Each key has a quota per billing period for each kind of request: embed loads, renders and inventory lookups. A billing period starts on the day of the month your subscription started, at the same time of day in UTC, or on the month's last day in a month without that day. Buying a plan starts a new period with the full quota, and moving up a plan keeps the period. The [dashboard](https://inspekt.gg/dashboard) shows when the current period resets.

| Plan | Embed loads | Renders | Inventory lookups | Over quota |
| --- | --- | --- | --- | --- |
| Hobby | 50,000 / mo | 10,000 / mo | 2,500 / mo | Throttled: `429` until the period renews |
| Pro · 500k loads | 500,000 / mo | 125,000 / mo | 50,000 / mo | Throttled: `429` until the period renews |
| Pro · 1.5M loads | 1,500,000 / mo | 375,000 / mo | 150,000 / mo | Throttled: `429` until the period renews |
| Pro · 5M loads | 5,000,000 / mo | 1,000,000 / mo | 500,000 / mo | Throttled: `429` until the period renews |
| Enterprise | Uncapped | Uncapped | Uncapped | n/a |
| Lens | 5,000 / mo | 5,000 / mo | None | Throttled: `429` until the period renews |

**Lens renders through the secret key** and opens the 3D viewer on the marketplaces the [Inspekt Lens](https://inspekt.gg/docs/extension) extension supports. Other requests from a Lens account are refused with `not_in_plan` or `extension_only`.

**A plan stops at its quota.** Once a quota is spent, requests of that kind are refused with HTTP `429` and `code: "quota_exceeded"`, with a `Retry-After` at the end of the billing period, and the other kinds keep working. Moving up a plan raises the cap on the next request. Enterprise is uncapped by agreement.

An embed load counts once per viewer, per item, per 24 hours; see [Embed loads](#embed-loads). A render and an inventory lookup count once per request served, including a request answered from our cache ([Terms 5.6](https://inspekt.gg/legal/terms#plans)), so size the render quota by the stills your pages show. A still a visitor's browser already holds is shown from that copy without a request to us.

**A key serves requests only on a plan or a free trial.** A trial lasts 10 days, needs no card, and gives the key that plan's quotas and limits. Without either, the key is refused with HTTP `402` and `plan_required` on all three surfaces. Subscribing in the [dashboard](https://inspekt.gg/dashboard) restores service on the next request. Try the product without an account in the [sandbox](https://inspekt.gg/sandbox) or the [demo grid](https://inspekt.gg/embed-demo.html).

## Embed loads

**One load is one viewer seeing one item, counted once per 24 hours** from the load that counted. A listing page showing twelve different skins is twelve loads, and a visitor who reloads or comes back within the 24 hours is served without a new count.

Wear, pattern seed, stickers, charm, StatTrak and name tag define the item, so the same knife at two floats is two items. The camera (`view`), the backdrop (`bg`, `scene`) and the frame settings (`ui`, `theme`, `autorotate`) sit outside it. Each page `/embed` serves carries `x-cs2-counted`: `1` if the load counted, `0` if it did not. The count is approximate: an office behind one address reads as one viewer. Wherever a limit or count in these docs goes by address, an IPv6 address counts as its /64 network, the block one home or one server is given. How a returning viewer is recognised is in [Privacy 2.2](https://inspekt.gg/legal/privacy#embed-privacy).

## Requests per second

Each key has one requests-per-second allowance, shared across `/embed`, `/api/still` and `/api/inventory-lookup` and measured over a sliding ten-second window.

| Plan | Requests / 10s |
| --- | --- |
| Hobby | 60 |
| Pro · 500k loads | 300 |
| Pro · 1.5M loads | 600 |
| Pro · 5M loads | 1200 |
| Enterprise | Uncapped |
| Lens | 60 |

Over it, the response is `429` with `code: "rate_limited"` and a `Retry-After` header giving the seconds to wait. A Lens account is also held to 240 stills and 3D views a minute. A refused request does not count toward your monthly quota, whichever limit refused it. If your workload needs a higher limit, email [hello@inspekt.gg](mailto:hello@inspekt.gg).

## Daily limit per visitor

Each key limits how many requests one visitor address can make in a UTC day, counted separately for each of the three surfaces.

| Plan | Embed loads / day | Renders / day | Lookups / day |
| --- | --- | --- | --- |
| Hobby | 1,000 | 1,000 | 1,000 |
| Pro · 500k loads | 5,000 | 1,250 | 1,000 |
| Pro · 1.5M loads | 15,000 | 3,750 | 1,500 |
| Pro · 5M loads | 50,000 | 10,000 | 5,000 |
| Enterprise | Uncapped | Uncapped | Uncapped |

Each number is 1% of the plan's monthly quota for that surface, with a floor of 1,000 a day. Over it, the response is `429` with `code: "ip_daily_limit"` and a `Retry-After` at the next 00:00 UTC. An embed load already counted that day keeps its 24-hour window, so the visitor can still see that item.

Set your own limit in the [dashboard](https://inspekt.gg/dashboard) under Keys: one number for all three surfaces, or `0` to turn the limit off. Raise it if many of your visitors share one address, as on mobile networks, company proxies and university networks. The limit counts requests made with a publishable key or a token; the secret key is outside it.

## Operational rate limits

On every plan, inventory lookups allow 5 cache misses per IP per minute; see [Inventory API](https://inspekt.gg/docs/inventory-api). A render we cannot take when we are busy answers `503` with `queue_full`; see [Errors](https://inspekt.gg/docs/render-api#errors).

## Origins per key

| Plan | Registered origins |
| --- | --- |
| Hobby | 3 |
| Pro · 500k loads | 10 |
| Pro · 1.5M loads | 20 |
| Pro · 5M loads | 50 |
| Enterprise | 100 |
| Lens | 0 |

Manage origins in the [dashboard](https://inspekt.gg/dashboard). A key needs at least one registered origin before it serves a page. Lens registers none: the extension sends the secret key, and its 3D window opens on the marketplaces Lens includes.

## Uptime and coverage

- **99.5% monthly uptime**, under the [SLA](https://inspekt.gg/legal/sla).
- **2,105 of 2,105 weapon and finish combinations render**, as of 23 September 2026.
- **New CS2 cases are renderable within 7 days** of release ([Terms section 9](https://inspekt.gg/legal/terms#coverage)).
