← Back to blog
Product· May 24, 2026

How we keep the model catalogue current

Adding a new model to VideoGen is one INSERT, not a release. Here's the manifest pattern that makes it possible.

Every week WaveSpeed pushes new image and video models. If we had to ship a frontend release every time, this site would lag the actual catalogue by days, which is exactly the gap we want to close. So we don’t.

Each model lives as a row in our models table: internal id, vendor slug, capability (t2i / i2i / t2v / i2v), the JSON-schema-derived list of inputs and params, and a cost formula. The backend exposes that row through /v1/models; the studio frontend renders the form from the same row. There is no “model picker” code path that has to learn a new model — the row is the model.

A background job (we call it modelsync) pulls the WaveSpeed catalogue, converts each row into our manifest shape, and upserts. New rows land disabled by default so the catalogue never grows behind our backs — an operator flips one column to enable a model, and from that moment the studio picker shows it, with the right inputs, the right params, and the right credit cost. No release notes, no QA pass, no copy-paste from documentation.

The same pattern handles deletions and breaking schema changes: if a vendor drops a model or renames a param, the sync run flags the row for review instead of silently breaking jobs.

Curious which models are live right now? They’re on the Models page, rendered from the same table this post described.