Skip to content

Use upstream per-token prices for subscription plan providers instead of $0 #3302

Description

@zlliang

Subscription plan providers currently represent reference model prices inconsistently. Most text models use an explicit $0, while OpenCode Go uses the underlying models' public USD pay-as-you-go prices even though it is also a subscription.

This makes paid plan models appear free in price comparisons and causes downstream cost tracking to report $0 for usage that consumes a paid quota.

Evidence

The same underlying model currently has different prices depending on the subscription provider:

Entry base_model input output cache_read
moonshotai/kimi-k2.7-code $0.95 $4.00 $0.19
opencode-go/kimi-k2.7-code moonshotai/kimi-k2.7-code $0.95 $4.00 $0.19
kimi-for-coding/k2p7 moonshotai/kimi-k2.7-code $0 $0 $0

OpenCode Go has reference prices for all 21 models. Across the 16 subscription plan providers below, only 5 of 107 token-priced text models are priced; 96 have an explicit $0, and 6 omit cost.

Provider Explicit $0 Missing cost Priced Total
alibaba-coding-plan 10 0 2 12
alibaba-coding-plan-cn 10 0 2 12
alibaba-token-plan 14 0 0 14
alibaba-token-plan-cn 14 0 0 14
kimi-for-coding 6 0 0 6
kuae-cloud-coding-plan 1 0 0 1
minimax-coding-plan 7 0 0 7
minimax-cn-coding-plan 7 0 0 7
stepfun-ai-step-plan 0 3 0 3
stepfun-step-plan 0 3 0 3
umans-ai-coding-plan 6 0 0 6
xiaomi-token-plan-ams 3 0 0 3
xiaomi-token-plan-cn 3 0 0 3
xiaomi-token-plan-sgp 3 0 0 3
zai-coding-plan 6 0 0 6
zhipuai-coding-plan 6 0 1 7

There are also inconsistencies within a provider: alibaba-coding-plan prices two Qwen models while the other ten are $0, and zhipuai-coding-plan prices one GLM model while the other six are $0.

Requested change

Use the underlying model's public USD pay-as-you-go price for subscription plan text models, including documented context tiers and cache prices. This keeps the plan's billing model separate from the model's reference price.

A proposed implementation is available in #3304. I am willing to contribute and maintain the fix based on maintainer feedback.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions