Get a key

Limits & SLA

Download .md

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.

PlanEmbed loadsRendersInventory lookupsOver quota
Hobby50,000 / mo10,000 / mo2,500 / mo Throttled: 429 until the period renews
Pro · 500k loads500,000 / mo125,000 / mo50,000 / mo Throttled: 429 until the period renews
Pro · 1.5M loads1,500,000 / mo375,000 / mo150,000 / mo Throttled: 429 until the period renews
Pro · 5M loads5,000,000 / mo1,000,000 / mo500,000 / mo Throttled: 429 until the period renews
EnterpriseUncappedUncappedUncapped n/a
Lens5,000 / mo5,000 / moNone 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.

PlanRequests / 10s
Hobby60
Pro · 500k loads300
Pro · 1.5M loads600
Pro · 5M loads1200
EnterpriseUncapped
Lens60

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.

PlanEmbed loads / day Renders / dayLookups / day
Hobby1,0001,0001,000
Pro · 500k loads5,0001,2501,000
Pro · 1.5M loads15,0003,7501,500
Pro · 5M loads50,00010,0005,000
EnterpriseUncappedUncappedUncapped

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

PlanRegistered origins
Hobby3
Pro · 500k loads10
Pro · 1.5M loads20
Pro · 5M loads50
Enterprise100
Lens0

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