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 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 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. A render and an inventory lookup count once per request served, including a request answered from our cache (Terms 5.6), 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 restores service on the next request. Try
the product without an account in the sandbox or the
demo grid.
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.
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.
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 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. A render we cannot take when we are busy
answers 503 with queue_full; see
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. 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.
- 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).