Skip to content

feat: per-tier Veo video pricing - #419

Merged
dylanuys merged 2 commits into
mainfrom
feat/veo-per-tier-pricing
Jul 21, 2026
Merged

feat: per-tier Veo video pricing#419
dylanuys merged 2 commits into
mainfrom
feat/veo-per-tier-pricing

Conversation

@kenobijon

@kenobijon kenobijon commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Problem

#418 merged with Veo priced as the fast variant at each (tier, audio) combination. Two refinements landed on the branch after the squash-merge and never reached main:

  1. Veo manifests never expose the model variant — any variant-based floor (lite, fast, standard) is an assumption, not a detection.
  2. Veo's real price rises with resolution, so its 1080p output deserves a premium over 720p.

Change

Veo videos (C2PA-blind, model_name=None) are now priced by delivered tier alone via _VEO_TIER_PRICES (audio-independent):

Tier Price (USD/s) Multiplier Anchor
480p $0.07 1.53x = Seedance fast 480p (same resolution, same multiplier)
720p $0.152 2.25x = Seedance fast 720p
1080p $0.40 3.65x veo-3.1 standard 1080p rate

The ladder is strictly monotonic, so Veo miners have a real incentive to deliver 1080p. min(observed, requested) capping, the unknown-resolution -> baseline rule, and all Seedance/image pricing are unchanged. The OpenRouter-parsed MODEL_TIER_PRICES tables remain as the live Veo price reference and become the pricing source again if variants ever become distinguishable (manifest signal or a 4K capability probe).

Testing

Full test suite passes (37 tests). Unit-verified: per-tier prices, audio-independence, overshoot capping, unknown-resolution baseline, Seedance paths untouched.


Note

Medium Risk
Changes how validator video rewards are computed for all C2PA-blind Veo submissions; economic incentives shift (especially 1080p vs prior fast-floor + audio), though scope is limited to rewards.py pricing logic.

Overview
Veo reward pricing for C2PA-blind videos (model_name=None) no longer assumes the veo-3.1-fast floor with per-(tier, audio) lookups from MODEL_TIER_PRICES. It now uses a dedicated _VEO_TIER_PRICES table keyed only by delivered resolution tier (480p / 720p / 1080p), audio-independent, with a monotonic ladder that pays more for 1080p.

_get_video_generation_price was simplified for the Veo branch: after effective_tier (still min(observed, requested)), it reads _VEO_TIER_PRICES instead of _VEO_FLOOR_MODEL + has_audio + Seedance fallback for sub-floor tiers. MODEL_TIER_PRICES stays in the tree as a live OpenRouter reference but is documented as not used for Veo until variants might be distinguishable again.

Version bump 4.9.4 → 4.9.5 in VERSION and gas/__init__.py. Seedance/named-model and image pricing paths are unchanged.

Reviewed by Cursor Bugbot for commit e5e5d8e. Bugbot is set up for automated code reviews on this repo. Configure here.

kenobijon and others added 2 commits July 21, 2026 17:15
Veo manifests never expose the model variant, so any variant-based floor is
an assumption, not a detection. Drop the guessing: Veo videos are priced by
delivered tier alone (_VEO_TIER_PRICES, audio-independent) — 480p $0.07 and
720p $0.152 match Seedance fast (same resolution, same multiplier), and
1080p prices at $0.40/s, the veo-3.1 standard 1080p rate, reflecting that
Veo's real price rises with resolution. Multipliers: 1.53x / 2.25x / 3.65x.
MODEL_TIER_PRICES stays as the live Veo price reference and becomes the
pricing source again if variants ever become distinguishable.
@dylanuys
dylanuys merged commit 582cf19 into main Jul 21, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants