For engineers

A content API you did not have to write.

The model marketing builds arrives in your repository as a typed client. It autocompletes, it type-checks, and nothing anyone does on the content side can turn your build red.

The fields from that collection, arriving in the editor as typed properties on the generated client.

Set up the client

What changes.

Typed from the model, not from a guess
A Vite plugin generates the client from the live content model. Selects arrive as unions, references as the entries they point at, and the whole thing updates as the model does.
Schema changes are information, not incidents
A deleted field becomes a deprecation in the generated types and keeps serving its last value. You find out in your editor, not from a failing pipeline at 5pm.
No CMS code to maintain
No schema files in your repository to review, no admin UI to keep running, no migration to write because someone wanted a subtitle.
Rendering stays yours
Stet is not a page builder and not a host. Your app renders your content, so previews and draft views are yours to build with the same client.
Analytics through your own infrastructure
Events post to a route in your app and are enriched server-side. Type-safe at the call site, immune to ad-blockers, and never able to throw in the browser.
Open source, self-hostable
Run it on your own Cloudflare account if you would rather. The hosted version is a convenience, not a hostage situation.

Stop making one team wait for the other.

Model your first collection in a couple of minutes, or have us walk you through it first.

$10 per user per month. Free to self-host.