Changelog
Everything that changed in Inspekt, dated, newest first. This page exists so that somebody deciding whether to depend on a one-person service can see whether it is alive, and how fast it moves.
What is on this page
Here: anything that changes what you can build, what you see rendered, what a request costs against your quota, or what a document you agreed to says. New parameters, new endpoints, render accuracy, catalog coverage, plans, and the account surface.
Not here: refactors, internal tooling, deploys with no customer-visible effect, and copy edits. Downtime is not here either, because a changelog written after the fact is the wrong place for it. Incidents go to your account contact by email under the SLA.
Dates are the day the change reached the live service, in UTC.
Breaking changes. A change that can break a working integration gets its own entry, marked Breaking, and an email to the address on every account holding a key. It goes out at least 30 days before the change takes effect, and the old behaviour keeps working for at least 90 days from that email before it is removed. Adding a parameter, a response field or an endpoint is not breaking and ships without a window. This is a product commitment on top of Terms section 16, which governs changes to the agreement itself.
11 September 2026
New Your dashboard shows usage day by day. The usage card counted a whole month in three numbers, which is what your quota is measured in and not what anyone actually wants to know: the question behind a surprising bill is always which day. There is now a bar per day under the monthly tiles, split by embed loads, renders and lookups, with a month picker going back as far as your account does. Days that spent quota you had already used up are ruled in red, because those are the requests an overage line is made of. The bars are re-derived from the request log itself rather than from the monthly counter above them, so the chart and the totals cannot drift apart. Request logs are kept for 13 months (Privacy § 6); a month older than that still has its totals, and the page says so rather than drawing an empty chart.
Fixed Two weapons stop rendering a prop that is not part of the gun. The R8 Revolver shipped with its speedloader inside the same mesh as the revolver, and the XM1014 with four spare shells. CS2 only shows those mid-reload; we play no animation, so they sat where the model's bind pose left them — the speedloader floating about a gun-length in front of the muzzle, the shells hanging under the receiver — in every render of those weapons since they were extracted. They are no longer drawn.
Changed R8 and XM1014 renders are framed
differently as a result. A shot is fitted to the geometry it actually draws, so the
prop was inside the box: the gun was pushed off centre and rendered smaller to keep a thing
nobody wanted in shot. Both now fill the frame the way every other weapon already did. If you
have cached /api/still URLs for either weapon, the parameters still name the same
file — the picture behind it is better, and re-fetching is the only way to see it. The
catalog thumbnails for all 74 affected finishes have been re-baked.
10 September 2026
Changed A requests-per-second limit, per key.
Your monthly quota says what you bought; this says how fast you may spend it. One allowance per
key shared across /embed, /api/still and
/api/inventory-lookup, over a sliding ten-second window: 30 on Free, 150 on
Starter, 600 on Pro, uncapped on Enterprise. Over it you get 429 with
code: "rate_limited" and a Retry-After in seconds — honour it
and you come back to a free slot, there is no backoff to compute. A refused request is not
counted against your quota and is never billable. There is one render worker behind all of
this, and without a ceiling a single catalogue crawl empties the queue in front of everybody
else's listing pages. If a real workload needs more, the ceiling is a field on your account and
we can lift it without a deploy. See
Requests per second.
Fixed A sticker we cannot draw now says so.
Eight of the sixty-nine weapon bodies we render declare a sticker position that their own model
has no visible surface at — the Nova's first, the Tec-9's fourth, the M249's fourth, and
two of the R8's five, one of them the position on the cylinder. A sticker sent to one of those
was accepted, applied, and then appeared nowhere on the item from any angle, and the response
said nothing. It now comes back in x-cs2-notes naming the slot, on every request rather
than only on inspect, and on a cached render too. The picture is unchanged: this
is Valve's own markup data, not something we can put a sticker on. In the studio the slot is
marked not shown, and Add Sticker reaches for a position that works.
See What we could not draw.
New Plain backgrounds.
/api/still gained bg: black, white,
charcoal, and three gradients — ember,
steel, violet. It changes what is behind the item and nothing else,
so it composes with view and with every item parameter, and
bg=scene is the same request as leaving it off, so nothing already cached moves.
The colours are not tone-mapped on the way out: white lands on
#ffffff and black on #000000, so a still butts up
against a page of the same colour with no seam. The same values work on the
embed. See Backgrounds.
Changed The scene picker is video loops and
plain backgrounds. The studio used to offer every extracted CS2 vanity scene as a
backdrop. Those are 256²-per-face cubemaps — a 1024×512 picture magnified
about sevenfold by the viewer's lens — and next to a 1440p60 map loop or a
6016×3008 captured panorama they read as mud. They are gone from the picker, along with
the fifteen flat still plates the loops superseded. They still light the loops, which is what
they were always best at. Share links and ?scene= are unaffected: anything that
loaded before still loads.
New Square-on views of each face.
/api/still gained view=hero|front|back|top. front is the
flat, near-orthographic listing shot: muzzle-left, the way CS2's own inspect pose and Steam's
inventory icons print it. back is the other flank, top is straight
down. It changes the camera and nothing else, and view=hero is the same request as
leaving it off, so nothing already cached moves. The same values work on the
embed, where top is new too. See
Views.
New Charms, StatTrak counters and free sticker
placement render in stills. /api/still gained charm and
stattrak parameters, and st gained CS2's four free-placement fields
(slot:stickerId:wear:offsetX:offsetY:rotation:scale, each of the last four
optional). An inspect link now renders every one of them without being asked. The
same parameters work on the embed and on share links. See
Stickers and free placement.
New Stills say what they could not draw.
A render from an inspect link that had to leave something out comes back with an
x-cs2-notes header saying which. Two things can appear there: a charm whose model
we have not extracted yet, and a StatTrak knife, which the game etches rather than fitting with
the counter box a gun wears.
Changed st now refuses a slot the
game does not have. Slots are numbered 0 to 4. A slot of
5 or higher, or the same slot named twice, is a 400 with a message
saying which; it used to pass validation and then land the sticker on a position that was
already taken, so the render was wrong and said nothing. If you are 1-indexing your slots, this
is the change to look at.
9 September 2026
New Inspekt is live at inspekt.gg. The renderer that had been a personal project since July is now a product with a name, a domain and a published price. The embed, the Render API and the Inventory API are all reachable with a key you issue yourself.
New Self-serve accounts, with no human in the loop. Sign in with an emailed link, get a key, register the origins it may be embedded on, rotate the key, and watch this month's usage against your quota, all from the dashboard. Sign-in links are single use and expire in 15 minutes.
New Paid plans you can start and change yourself. Checkout and the billing portal are live, and moving between tiers no longer goes through us. Plans, quotas and overage rates are on Pricing; what counts against a quota and what does not is on Limits & SLA.
New The documentation site. Quickstart, embed parameters, the postMessage API, both HTTP APIs, error codes, limits, framework snippets, and a sandbox that builds a working embed and hands you the code, with no account needed to use it.
New The customer agreement is published. Terms of Service, Privacy Policy, Acceptable Use, the SLA and the Refunds and Cancellation policy, all readable without an account so your counsel can review them before you sign up. The SLA describes the infrastructure honestly rather than hiding it behind a number. See Legal and the change history.
Changed Every skin has its own page, and its own share card. Per-skin URLs, a sitemap that lists them, and an unfurl image rendered from that specific skin rather than the site's generic card.
Changed Four prototype catalog entries removed. Four hand-built folders from the earliest days of the renderer were duplicates of skins the extraction pipeline already produced properly. Removing them took the catalog from 2,139 entries to 2,135, which is the true count of distinct weapon and finish combinations. Nothing became unrenderable.
8 September 2026
New Catalog coverage reached 100%. All 2,135 distinct weapon and finish combinations render, and none of them is approximated: every compositor branch each finish uses is ported. The number is produced by a tool run against the catalog and the disk, not remembered.
Fixed Eight skins were missing and nothing had said so. M4A1-S Emerald Marbleized, all four Gamma Doppler phases, MP5-SD Case Hardened, Nova Fade and P90 Desert Warfare were invisible to the extraction pipeline because of a mismatched separator in the catalog builder. All eight now render.
Fixed Ninety-four gloves were on disk but not in the index. A stale catalog index, not a rendering gap. Re-indexing was the whole fix.
Changed Bright finishes no longer crush to flat white. The tone curve used to clamp at the white point, which sent the whole top of the range to one flat value. On the worst case we measured, 84.8% of a Printstream's slide was fully clipped. A roll-off replaces the clamp and removes about 89% of that clipping on the item. Mid-tones are untouched, and four of our reference scenes came back bit-identical because their content never reaches the shoulder.
Changed The bloom chain now matches the game's. The generic blur was replaced with CS2's own chain: four levels, its bright pass and soft knee, its combine radius, and its sampler behaviour at the frame edge. Visible on bright finishes in the brighter scenes and nowhere else.
Fixed Imported inventories put stickers in the wrong slots. Steam's description line lists sticker names in slot order rather than by slot number, so every empty slot shifted the rest of them left. Placement now comes from the item's own certificate, which carries real slot numbers, per-sticker scratch wear and free placement. A fifth sticker on a weapon with four positions renders on the grip, matching the game.
7 September 2026
New The embed became something you can put in
someone else's page. A dedicated /embed route, the
cs2embed.js loader, a two-way postMessage API for
driving the frame from the host page, and framing headers built from your key's registered
origins so a stolen key is refused by the visitor's browser and not only by us.
New API keys, per-key origins, quotas and metering. Every embed load, render and inventory lookup is counted against the key that made it, with a documented refusal for an unknown key, an unregistered origin or an exhausted quota. The meter was built before there was any traffic worth billing, on purpose.
New The Render API accepts a Steam inspect
link. GET /api/still?inspect= resolves the link on our side to the same
config the explicit parameters produce, so both forms hash and cache identically.
New A golden-image regression suite. Reference renders covering every compositor style, both ends of the wear ramp, two pattern seeds, a knife, stickers, a name tag and one finish across six scenes. Every change to lighting or grade now has to prove it did not move anything else.
Changed Renders got more than twenty times faster. The render worker had been running on the CPU with a perfectly good GPU idle in the same box, because headless Chrome does not ask for the card unless it is told to. Warm renders went from about 2.1 seconds to under a tenth of a second, and throughput from about 28 a minute to several hundred.
5 September 2026
Changed Faster boot and honest loading states. The viewer shows a poster and a real progress state instead of an empty canvas while assets stream in, and holds fewer resources while it is off screen.
3 September 2026
Changed The grade was matched term by term against a reference renderer. Six skins in matched scenes at a matched camera. The largest single error turned out to be the sun. Per-scene exposure calibration landed with it, for the four scenes that have a reference to fit against.
New Video backdrops. Four environments got a real recorded loop behind the item instead of a magnified cubemap, which is the difference between a background and a blur at the narrow inspect lens.
25 August 2026
New Steam inventory lookup. Give it a Steam ID, a vanity name or a profile URL and get that account's public CS2 items parsed into wear, seed, stickers, StatTrak and name tag. See Inventory API.
Changed Share stills stopped blocking. A request for an image that has not been rendered yet returns the catalog thumbnail immediately and renders the real one in the background, because social crawlers give up in a couple of seconds and cache whatever they got. The Render API docs explain how to work with that, and it is the single most common surprise on that endpoint.
Changed The public surface was hardened. Every public parameter validated, concurrency capped, and everything that spawns a process moved out of reach of an anonymous request.
24 July 2026
New First-person inspect. The animated viewmodel, the arms, the weapon audio and the inspect animations, the way the item looks in the player's hands rather than on a turntable. Gloves included.
New Inspect links round-trip. Paste a link and the exact item loads; copy one back out of any configuration you have built.
13 July 2026
New Fourteen environments from the game. The vanity scenes CS2 uses to show an item off, extracted and selectable at runtime, so an item can be shown against a recognisable backdrop instead of one neutral studio.
12 July 2026
New Gloves, as a whole new class. Their own cloth compositor and posed arms, which share almost nothing with a weapon finish.
New Knife finishes, including the Doppler phases. Phase and variant labels, and the seed data behind the gem and marble patterns people actually shop for.
New Composite-material finishes. The finishes that are built from a graph of materials rather than a single paint kit, composited live rather than baked.
11 July 2026
New Any catalogued skin renders on demand. A skin that has never been requested before is extracted, composited and cached on the first request, in seconds, instead of waiting for a batch run that covers everything up front.
Before this
The renderer started on 9 July 2026 and had exact ports of CS2's classic finish compositor styles, its own environment extracted from the game, stickers, charms, StatTrak and name tags within the first week. That history is real but it is engineering history, not product history, and reproducing it here would not help anyone decide anything. It starts above at the point where there was something to integrate with.