Cheapest model right now, per category. Updated every 15 minutes from fal.ai and hourly from Replicate. Per-megapixel and per-clip prices are normalized to 1 MP / 5 s where exact equivalents aren't published — see About for the assumptions.
Biggest price drops and spikes vs the snapshot taken closest to days ago. Only models whose pricing unit didn't change are included.
Drops
Spikes
| Model | Lab | Category | Source | Price | Unit | Per image | Per second | History |
|---|
Last 50 cron runs. Each row records seen/priced counts and any error message — useful for catching schema drift in upstream sources.
| Started | Source | Status | Seen | Priced | Duration | Error |
|---|
About gen-floor
gen-floor is a live floor-price tracker for generative-AI media APIs. Token-floor for pixels and frames. It answers: which provider is cheapest right now for text-to-image / text-to-video / image-edit, which model just dropped this week, and what's the per-model price history.
Data sources
- fal.ai catalog —
GET https://fal.ai/api/models?page=N&size=40— public JSON, ~1,350 models, refreshed every 15 minutes. We parse thepricingInfoOverridemarkdown for per-image, per-megapixel, per-second, and per-video prices. - Replicate model pages —
GET https://replicate.com/<owner>/<slug>— server-rendered HTML, curated slug list (~30 high-signal models), refreshed every 60 minutes. Pricing is parsed from natural-language phrases like "333 images for $1" or "$0.40 per second".
Normalization assumptions
per_megapixel→ treated as equivalent toper_imageat 1 MP. Most demo configurations on fal.ai and Replicate default close to 1 MP.per_video→ divided by 5 to derive an approximateper_secondfigure (5 s is the modal default-clip length across Kling, Veo, Pixverse, Wan).- Drop / spike percentages compare the latest snapshot to the snapshot closest to N days ago, but only when the pricing unit hasn't changed between snapshots.
What's not here
Hardware-second pricing (e.g. fal.ai's $1.89/h H100), per-token text-mode pricing, and training prices are intentionally excluded — those are not comparable units.
No mock data
Every row is fetched live. If both sources fail, the dashboard shows "awaiting data" rather than seeding fake numbers. The full per-run log is at the Fetch log tab.
JSON endpoints
GET /gen-floor/health
GET /gen-floor/api/floors
GET /gen-floor/api/models[?category=&source=&q=]
GET /gen-floor/api/model/<id>/history
GET /gen-floor/api/movers[?days=7&limit=10]
GET /gen-floor/api/categories
GET /gen-floor/api/fetch-log[?limit=50]