feat: per-tier Veo video pricing - #419
Merged
Merged
Conversation
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
approved these changes
Jul 21, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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:
Change
Veo videos (C2PA-blind,
model_name=None) are now priced by delivered tier alone via_VEO_TIER_PRICES(audio-independent):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-parsedMODEL_TIER_PRICEStables 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.pypricing 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 fromMODEL_TIER_PRICES. It now uses a dedicated_VEO_TIER_PRICEStable keyed only by delivered resolution tier (480p / 720p / 1080p), audio-independent, with a monotonic ladder that pays more for 1080p._get_video_generation_pricewas simplified for the Veo branch: aftereffective_tier(stillmin(observed, requested)), it reads_VEO_TIER_PRICESinstead of_VEO_FLOOR_MODEL+has_audio+ Seedance fallback for sub-floor tiers.MODEL_TIER_PRICESstays 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
VERSIONandgas/__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.