Get a key

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, invisible deploys, and copy edits. Downtime goes straight to incident response, by email to your account contact under the SLA, while it is happening rather than written up here afterward.

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.

5 October 2026

Changed A burst of renders waits its turn. When we are busy, higher plans are served first and every plan with stills queued still gets turns. A miss that will take a while is answered at once, uncounted, and its still keeps its place: a request from a server gets 202 Accepted with a few bytes of JSON, Retry-After and x-cs2-queued, and a request for an image gets the placeholder as a 200; the request that later gets the still is the one counted. A caller with too many stills waiting, or a full queue, gets 503 with code: "queue_full". See The render queue.

28 September 2026

Fixed The agent holds the item in its hands. In the Agent view some guns hung beside the hand, as far as 23 cm off on the SCAR-20 and the M4A4, and the Shadow Daggers stood more than a metre away. Every gun now sits in the agent's right hand, within a millimetre of the glove, and every knife is held the way the game holds it.

26 September 2026

New Best patterns. Families opens on the seeds traders pay for, ranked across all 1,001 seeds of each skin: the most blue on a Case Hardened AK-47 and Karambit, the highest fade on a Karambit and Glock-18 Fade, fire and ice on a Karambit Marble Fade, and on a Karambit Doppler the Ruby, Sapphire and Black Pearl first, then the most black in Phase 1, pink in Phase 2 and blue in Phase 4. Each seed shows as a picture with the number it was ranked by, and a click opens it in the studio.

25 September 2026

Fixed Charms look like the game's. Every charm drew with its surface detail turned inward and without its roughness, metal and pearl finish, and Butane Buddy drew all white. All 81 charms now match Valve's pictures of them closely. Glitter charms sparkle, POP Art's lettering shifts colour, and Butane Buddy shows its metal lid, glass and lighter fluid. Moving a charm to another spot on the gun is instant, and a charm that is still loading says so.

New Charm seeds in pictures. The Render API, share cards and the embed draw a charm at its seed: charm=60@75000 is Lil' Chirp at seed 75000. No seed draws the same picture as before. Charms in the Render API docs covers the charm list, spots, seeds and caching, and the docs overview shows four charms beside Valve's pictures of them.

New Charms by themselves. The Render API draws a charm alone, framed and lit like its inventory picture: /api/still?charm=60@75000, with no id, is Lil' Chirp at seed 75000. It takes a gun's backgrounds and sizes, the transparent cut-out included, and counts as one still. Standalone charms has the parameters.

New Stickers and charms by picture. Stickers, charm and name tag sit on the left of the studio at all times. Add sticker and Add charm open a picker with Valve's own picture of every sticker and charm, a search box, and the tournament, capsule or collection each came from. A charm has a seed, which recolours 135 of the 143 charms the way the game does, and Move puts a dot on every spot of the gun the charm can hang from.

New Collections, cases and skin families. The catalog groups its collections into cases, map collections, operations, weekly drops and armory sets, each with its case or collection picture, and a case lists the knives or gloves it drops. Families gathers every skin that shares a finish name, so Fade, Doppler and Asiimov each open on all of theirs.

New A backdrop picker with moving previews. The backdrop button opens every map and plain background, each map shown as a short loop of its own video. StatTrak, seed and wear moved to the right, and wear has one button per grade, FN to BS. The view buttons are Hero, Front and Back.

24 September 2026

New Every CS2 pet chicken in 3D. The chicken pages show all 40 pet chicken colours from the 22 September game update, across the Catalana, Polish and Silkie breeds, and the chick, in the 3D viewer. Each page plays the bird's moves and 13 tricks, moves the dials along which pets of one colour differ, changes its body shape, and copies a link that opens the same bird.

New Chickens in the studio. The browse sidebar has a Chickens row with all 41 birds, below the weapons. A pick stands the chicken on the ground of the video backdrop, Dust II when the one on screen has no ground under the middle, and it turns with a drag and comes closer with the scroll wheel. Its moves are the game's own photo booth set, Sit, Panic, Wag, Dance, Jump, Kick and Fly, with Valve's icons, on the chicken pages as well. The chicken cards show the bird alone on the card, the way the gun icons do.

Fixed The chickens' feet stay planted. A foot that stood still in the game swung by up to 22 mm between animation keys, and the idle loop drew at 60 frames a second on faster screens. Each foot now stands on the ankle target the game's animation carries for it, and the bird draws at the screen's own rate.

Changed An inventory lookup that fails answers one fixed sentence. The 502 from /api/inventory-lookup reads "The lookup did not finish. Try again in a minute." with a requestId, where it used to carry the text of whatever failed. See the inventory API.

Fixed A token minted with ttl: 0 lasts one second. POST /api/token clamps ttl to 1 to 3600 seconds, so 0 and every value below 1 mint a 1-second token. A ttl of 0 used to mint the 3600-second default. See Minting a token.

23 September 2026

Breaking /api/still waits for the render by default. A request for a picture that is not cached waits while it renders, up to 45 seconds, and gets the render. It used to get a placeholder at the default wear and pattern, and waiting took wait=1, which still works. wait=0 answers at once with the placeholder, as the old default did, and any other value of wait is refused with 400. When the render fails, cannot be queued or takes over 45 seconds, a request from a server gets 502, 503 or 504, and a request for an image gets the placeholder, uncounted. Notice starts once the service is live. This change landed before anyone could be affected by it. See Caching and the placeholder.

Changed A browser keeps a still for 24 hours. A cached still is sent with cache-control: private, max-age=86400, where it was public, max-age=31536000, immutable. A viewer who comes back after a day is counted again, as with the embed, and a CDN or proxy between us and the viewer does not keep the still. A renderer update reaches every browser within a day. See Caching and the placeholder.

Fixed A placeholder sent because rendering was full or down is free. It said X-CS2-Counted: 0 while it took one render from the plan's monthly quota. See Quota.

22 September 2026

Breaking A key is required from other sites. /embed, /api/still and /api/inventory-lookup refuse a request with no key with 401 and key_required, from another site's page and from a server alike. A keyless request used to be served as anonymous traffic, at 30 requests per 10 seconds per address. inspekt.gg's own pages are served without a key, and so are the Open Graph images those pages publish for link previews, which carry a sig parameter. Notice starts once the service is live. This change landed before anyone could be affected by it, which is the one case the policy above does not have to cover. See Keys and origins.

New An access refusal to an <img> is a picture. /api/still answers a request for an image that it refuses with a webp of the size the request asked for, the status and the code drawn on it, at the same status. Other clients get the JSON as before. A browser drops a JSON body inside an <img>, so the page used to show a broken image and no reason. See Render API.

Changed A placeholder is the size you asked for. When a skin's cut-out for the view is not cached yet, the placeholder is its catalog thumbnail fitted into your w × h on near-black. It used to be the 512 × 512 thumbnail itself, and an <img> changed shape when the render landed. A request that finds the server busy drawing gets a plain frame of that size. See Caching and the placeholder.

New /api/still says whether a request counted. Every response carries X-CS2-Counted: 1 when the request counted against the plan's render quota and 0 when it did not, as on the embed. See Quota and billing.

New Hobby and Pro have a 10-day free trial, with no card. Each account gets one free trial, of Hobby or of any size of Pro, for 10 days from the moment it starts the trial in the dashboard, with that plan's quotas, burst limit and origin limit. When the trial ends, the key is refused with 402 and plan_required until the account subscribes, and an email to the account says so. Subscribing during a trial ends it and starts billing that day. See Pricing and the 22 September version of the agreement.

21 September 2026

Changed The plans are Hobby and Pro, and Pro comes in three sizes. Hobby is $20 a month, where it was $19. Pro · 500k loads at $100 is what Pro was at $99, and Pro · 5M loads at $500 is what Scale was at $499, each with the quotas, burst limit and origin limit it had. Pro · 1.5M loads is new at $200 a month: 1,500,000 embed loads, 375,000 renders and 150,000 inventory lookups a month, 600 requests per ten seconds and 20 registered origins. Each step up the ladder still costs less per unit than the one below it. See Pricing, Limits & SLA and the 21 September version of the agreement.

18 September 2026

Breaking A pattern seed stops at 1000, the game's own range. seed on /api/still and on the embed accepted 0 to 100000, and CS2 assigns a paint seed from 0 to 1000 when an item is made, so every value above 1000 named a pattern no item carries. /api/still now refuses a seed above 1000 with 400 and seed must be an integer 0..1000; the embed drops it for the kit default and names it in x-cs2-dropped; an inspect link's seed is clamped to 1000. Notice starts once the service is live. This change landed before anyone could be affected by it, which is the one case the policy above does not have to cover. See Render API and Embed parameters.

Breaking A sticker's centre stays inside the area the game allows on that weapon. A st offset on /api/still and on the embed accepted -1 to 1 on every weapon, a range that puts a sticker's centre off the gun. Each weapon model carries the area its stickers' centres may occupy, the one the game's sticker editor holds them to, and every surface now reads it. /api/still refuses an offset that puts a centre outside it with 400, naming the slot and the nearest offset inside; the embed drops the offset, sits the sticker at its slot's default and names st slot 2 offset in x-cs2-dropped; an inspect link's sticker is moved to the nearest point inside. Notice starts once the service is live. This change landed before anyone could be affected by it, which is the one case the policy above does not have to cover. See Render API and Embed parameters.

Breaking A sticker is drawn at its slot's own size. st took a seventh field, a scale from 0.1 to 5, and the game's sticker editor moves and rotates a sticker and keeps its size. The field is ignored: /api/still says so in x-cs2-notes, and the embed names st scale in x-cs2-dropped. A URL that carries one is still served, at the slot's size. An inspect link keeps the scale it records, because that is the game's own record of the item. Notice starts once the service is live. This change landed before anyone could be affected by it, which is the one case the policy above does not have to cover. See Render API and Embed parameters.

Changed The legal documents have a new version, effective 19 September 2026. The wording is plainer across all five, and Privacy 2.6 now lists what an account record holds. What a plan costs, what it includes and what either of us owes stay the same. See the change history.

Changed A quota resets on the day of the month its subscription started. Quotas reset at 00:00 UTC on the 1st, so a plan bought on the 15th got a fresh quota 16 days later. A billing period now starts at the moment the subscription renews, and a month without that day uses its last day. Retry-After on a quota_exceeded refusal and the dashboard's reset date follow it. See Limits & SLA.

Changed The legal documents have a new version, effective 20 September 2026. Terms 5.1 and 5.2 count a quota per billing period, and the Privacy Policy lists the date a billing period is counted from. See the change history.

Fixed Foil and Gold stickers keep their colour. Every Foil and Gold sticker, and some Holo and Champion ones, 5,051 of the 11,145, drew as gray metal on a still and in the viewer. They now carry their print's colour. Every cached still was re-rendered.

Fixed bg=rarity paints the rarity the game shows. 403 finishes, all on the AK-47, AWP, M4A4, M4A1-S, Desert Eagle, Glock-18, P2000 and USP-S, stood one tier low. The AWP | Asiimov now stands on the Covert plate and the AK-47 | Redline on the Classified one. The studio's rarity colours, sort and filter follow it, for those finishes and for 538 knives.

Changed The embed says its 3D view is loading. While the still of the item is up, a "Loading 3D" label and a bar along its bottom edge show until the live view takes over.

17 September 2026

Breaking No still stands in a CS2 environment any more, and bg defaults to steel. bg=scene put the item in front of the captured environment that lit it, and it was what /api/still drew when you named no background at all. Both are gone. /api/still with no bg now draws the steel plate, and bg=scene is refused with the usual 400 listing the values we do draw. On the embed, bg=scene is dropped and named in x-cs2-dropped; leaving bg off says what it used to say, and the frame stands on the backdrop scene= named. scene= itself stays, and now takes only the backdrops the viewer offers: a video loop (plate_), a captured panorama (pano_) or a plain background (bg_). Anything else is dropped and named in the same header. A shared link that carried scene= unfurls onto the item's tier plate like every other link. Why: those environments are 256²-per-face cubemaps, so the picture behind the item was a 1024×512 capture magnified about sevenfold by the lens, and it was the backdrop on every still requested without a background. They keep the job they do well: lighting the video loops, the panoramas and every plate. Notice starts once the service is live. This change landed before anyone could be affected by it, which is the one case the policy above does not have to cover. Every cached still is renamed by this change, so the first request for one after the deploy renders it again. See Backgrounds and Scene, view and chrome.

16 September 2026

Breaking Four plans instead of seven, with every plan paid from the first request. The ladder is Hobby at $19 a month, Pro at $99 and Scale at $499, and Enterprise is now the pay-as-you-go plan: billed at the overage rates from the first request, against a card set up by email, with no monthly fee or included quota. Pro’s fee fell from $199 and its quotas halved with it, to 500,000 embed loads, 125,000 renders and 50,000 inventory lookups a month on 10 registered origins. Hobby and Scale stayed as they were. Starter and the separate Pay as you go plan were withdrawn: a key on Starter resolves to Pro, which is more quota for what it was already paying, and a key on Pay as you go resolves to Enterprise, which is the same terms under a different name. The Free plan was withdrawn, and every account now needs a paid plan. An account between plans (a new account, or one whose subscription has ended) keeps its key, its origins and its usage history, and all three surfaces refuse every request with 402 and plan_required until a plan is picked; no request is counted or billed until then. Trying the product needs no account: the sandbox and the demo grid are the trial. See Pricing, Limits & SLA and the 16 September version of the agreement.

Changed The Inspekt wordmark is no longer a plan requirement. The corner badge was required on the lower tiers and removable on the higher ones, enforced by your key’s plan rather than by ui. Every plan treats the wordmark the same now: the rule came off the plan table, the pricing page and the Terms, and the embed carries no plan-based rule about it. The badge itself stays, on every frame and every plan, because it is the frame’s link into the full studio; with ui=none hiding the name plate, it is the only thing in the frame a visitor can click. Clicking it now carries the whole item across: wear, seed, stickers and their placements, charm, StatTrak and name tag. See The frame’s own chrome.

15 September 2026

Changed Bursts of uncached stills finish sooner. An uncached still takes about 0.9 seconds at the median for a skin we have not rendered recently, and about 0.4 seconds for one we have. The last picture in a burst of listing pages arrives sooner than it did. The API did not change: the same parameters name the same picture, cache hits were already immediate, and the per-key requests-per-second ceiling is unchanged. See Caching and the placeholder.

11 September 2026

New Your dashboard shows usage day by day. The usage card counted a whole month in three numbers, which is the unit your quota is measured in. The question behind an unexpected bill is which day. The card now draws 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 stopped 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. We stopped drawing them.

Changed R8 and XM1014 renders are framed differently as a result. A shot is fitted to the geometry it draws, so the prop was inside the box: the gun was pushed off centre and rendered smaller to keep the prop 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 were 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, because the window slides forward each time. Only a request that succeeds draws on your quota or your bill; a refusal is free. The ceiling keeps one customer's catalogue crawl from slowing every other customer'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 rendered invisible from every angle, with the response silent about it. 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: the position comes from Valve's own markup data, and the model has no surface there for a sticker. In the studio the slot is marked not shown, and Add Sticker reaches for a position that works.

New Plain backgrounds. /api/still gained bg: black, white, charcoal, and three gradients (ember, steel and violet). It changes only what is behind the item, so it composes with view and with every item parameter; bg=scene was the same request as leaving it off, so already-cached renders were unaffected. The colours skip tone mapping 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 came out of the picker, along with the fifteen flat still plates the loops superseded. They still light the loops, which is the job they do best. Share links and ?scene= were unaffected: anything that loaded before kept loading.

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 only; view=hero is the same request as leaving it off, so already-cached renders are unaffected. 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 the response did not say so. 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 became 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 went 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 was 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 in full. 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 that were already in the catalog. Removing them took the catalog from 2,139 entries to 2,135, which is the true count of distinct weapon and finish combinations. Every remaining entry still renders.

8 September 2026

New Catalog coverage reached 100%. All 2,135 distinct weapon and finish combinations render, and none of them is approximated. The number comes from a tool run against the catalog and the disk.

Fixed Eight skins were missing, and no error flagged it. M4A1-S Emerald Marbleized, all four Gamma Doppler phases, MP5-SD Case Hardened, Nova Fade and P90 Desert Warfare were missing from the catalog. All eight now render.

Fixed Ninety-four gloves were on disk, missing from the index. The catalog index was stale, and re-indexing alone fixed it.

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. A roll-off replaced the clamp, so a Printstream's slide and other bright finishes keep their detail in the highlights. Mid-tones are untouched.

Changed Bloom looks like the game's. The glow around bright finishes now matches the game's. The difference shows only on bright finishes in the brighter scenes.

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 the visitor's browser refuses a stolen key as well as our server.

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.

Changed Renders got more than twenty times faster. Warm renders went from about 2.1 seconds to under a tenth of a second, and a caller's sustained throughput from about 28 stills a minute to several hundred.

5 September 2026

Changed Faster boot and real 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 Exposure and tone are closer to the game's. The change is largest in the four scenes that gained video backdrops.

New Video backdrops. Four environments got a recorded loop behind the item in place of a magnified cubemap. At the narrow inspect lens the cubemap read as a blur.

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.

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, 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 shading and posed arms, which have little in common 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 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 requested for the first time is rendered on that 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 CS2's classic finish styles, its own environment extracted from the game, stickers, charms, StatTrak and name tags within the first week. That is engineering history, of interest to us and beside the point for anyone deciding whether to depend on this service. The log above starts where there was something to integrate with.