---
title: "POST /v1/admin/models/pricing/estimate"
method: POST
path: "/v1/admin/models/pricing/estimate"
tags: ["AdminModelService"]
---

# POST /v1/admin/models/pricing/estimate

`POST /v1/admin/models/pricing/estimate`

EstimateModelPricing 计费表达式 dry-run: 前端 Token 估算器实时预览。

 语义: 用与生产结算完全一致的 billingexpr 引擎, 按传入 token 参数跑一次
 表达式, 返回 cost + matched_tier。**不落任何数据**、不触发缓存, 纯计算。

 权限: 与 UpdateModel 同门槛 (models:update), 避免非管理员探测定价规则。

 请求侧不校验表达式一定要属于某个已存在模型——同一表达式可以在多个模型
 之间复制粘贴调试。表达式不合法/负数返回 400。

## Request body

- AdminV1EstimateModelPricingRequest — EstimateModelPricingRequest 计费表达式 dry-run 入参。 tokens 字段命名与后端 billingexpr.TokenParams 对齐 (与结算路径同一源代码), 前端 UI 只暴露常用的 p/c/cr/cc/cc1h, 其它可选字段留空。 语义: - mode 必须是合法 billing_mode; MVP 仅支持 "tiered_expr" (其它 mode 的估算走前端本地既可, 不需要 API) - expr 必填, 空串或语法错误返回 400 - 表达式价格系数单位为积分/百万 token - tokens 全部 optional, 缺省视为 0 - **口径契约 (DEF-7)**: 各 token 字段为 canonical disjoint 口径——p/c 为纯 文本 token (已剔除缓存与多模态子类别); cr/cc/img/img_o/ai/ao 与 p 互斥, 各自独立填真实 token 数, 不与 p 重叠。后端按 disjoint 语义求值 (不再从 p 扣减子类别), 与生产结算的 anthropic/disjoint 路径同口径, 使 dry-run 忠实 预览真实结算金额。 **注意 cc/cc1h 是包含关系, 非互斥**: cc 为 cache-creation token 总量, cc1h 是其中 1h TTL 的子集 (cc1h ⊆ cc), 5m 部分 = cc - cc1h。填写时 cc 必须填总量, 常见表达式如 (cc - cc1h) * 5 + cc1h * 10 据此区分两档单价; 若把 cc 只填 5m 部分会导致 len 漏算 1h 部分并算错金额。 len 由后端按 p+cr+cc+img+ai 重算 (完整上下文长度, cc 已含 cc1h 故不再单加), 管理员直接填的 len 仅作参考、以重算值为准 (与生产一致: 档位由真实 token 决定, 不接受人工强制)。
  - `ai` number, double
  - `ao` number, double
  - `c` number, double
  - `cc` number, double
  - `cc1h` number, double
  - `cr` number, double
  - `expr` string
  - `img` number, double
  - `imgO` number, double
  - `len` number, double
  - `mode` string
  - `p` number, double

## Response `200`

OK

- AdminV1EstimateModelPricingReply — EstimateModelPricingReply dry-run 结果。 - cost_micros: 与生产结算一致的 CRD 基础金额, 单位 micros CRD (int64). 1 CRD = 1_000_000 micros; 与其它金额 API (balance_micros / billed_micros / amount_micros 等) 单位完全对齐, 前端统一走 microsToCreditsDisplay 展示。 不含渠道销售倍率 (真实计费时才乘, 估算只展示基础价). - matched_tier: tier(...) 命中的档位 name; 表达式未使用 tier() 时为空串 - used_vars: 表达式 AST 内省识别到的子类别变量集, 前端用来提示"你写了 cc1h 但没在 UI 里填对应 token 数"这类边界
  - `costMicros` string — cost_micros 单位 micros CRD (int64). 命名带 _micros 强制提醒对端: proto JSON 序列化会成 string (Go int64 保护), 前端要按字符串解析。
  - `matchedTier` string
  - `usedVars` AdminV1EstimateUsedVars — EstimateUsedVars 表达式使用的子类别变量集。 bool 类型: true 表示表达式引用了该变量; p/c/len 是"兜底变量"不在此报告。
    - `ai` boolean
    - `ao` boolean
    - `cc` boolean
    - `cc1h` boolean
    - `cr` boolean
    - `img` boolean
    - `imgO` boolean

---

[API](https://skmtc.dev/apiqik/apis/apiqik-api.md) · [All operations](https://skmtc.dev/apiqik/apis/apiqik-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/apiqik/apiqik-api/revisions/e06b96127408/schema)
