---
title: "定价与计费"
description: "pirouter 预付费：先往工作区钱包充值，每个请求按实际用掉的 token 扣费，余额不够预估费用时返回 402，转发给 provider 之前被拒绝的请求不计费。"
canonical: "https://pirouter.ai/zh/docs/guides/billing"
last-updated: "2026-10-17"
lang: "zh"
source: "content/docs/zh/guides/billing.mdx"
---

# 定价与计费

pirouter 预付费：先往工作区钱包充值，每个请求按实际用掉的 token 扣费，余额不够预估费用时返回 402，转发给 provider 之前被拒绝的请求不计费。

先往工作区的钱包里充值，之后每个请求按实际用掉的 token 从钱包里扣，单价因模型而异。余额不够这次请求的预估费用时，请求在转发前就以 `402` 被拒绝。

## 钱包

每个工作区有一个钱包，以美元计。这个工作区下的所有 key 共用它。

钱包里有三类额度，在控制台的 **Token 钱包** 里分开显示：

| 额度 | 来源                |
| -- | ----------------- |
| 赠送 | 由 pirouter 发放     |
| 奖励 | 由 pirouter 在活动中发放 |
| 充值 | 你自己购买             |

注册不附带额度，赠送和奖励只由 pirouter 发放，所以新工作区的余额是 0。

pirouter 扣费时先用钱包里的赠送额度，再用奖励，最后用充值。

请求进行中，网关会先按预估费用预留一部分额度。请求结束后按实际用量结算，多预留的部分退回。

## 价格

价格按 token 计，每个模型不同。[模型页](https://pirouter.ai/zh/models)列出每个模型的输入、输出和缓存价格。

用 API 取价格：`GET /v1/models` 返回的每个模型带一个 `pricing` 对象，里面的数字是每个 token 的美元价。

| 字段                     | 计价的内容              |
| ---------------------- | ------------------ |
| `prompt`               | 输入 token           |
| `completion`           | 输出 token           |
| `input_cache_read`     | 从缓存读取的输入 token     |
| `input_cache_write`    | 写入缓存的输入 token      |
| `input_cache_write_1h` | 写入 1 小时缓存的输入 token |
| `internal_reasoning`   | 推理 token           |
| `image_token`          | 图像输入 token         |
| `image_output`         | 图像输出 token         |

模型没有的计价项不会出现在 `pricing` 里。

图像请求按哪些 token 计费，见[生成与编辑图像](https://pirouter.ai/zh/docs/guides/images.md#怎么计费)。

### 长上下文分档

部分模型对长输入另有一档价格，列在 `pricing.overrides` 里。每一档带一个 `min_prompt_tokens`。一个请求的输入 token 数达到这个门槛时，这个请求按该档的价格计；达到多档时取门槛最高的一档。

### 限时折扣

`GET /v1/models` 的 `pricing` 是原价，不含限时折扣。

折扣生效期间，模型页同时显示当前生效价和原价。用 API 看生效价：`GET /v1/models/{vendor}/{model}/endpoints` 里每个 provider 的 `pricing` 是当前生效价，`list_pricing` 是原价，`discount` 给出折扣比例 `percent_off` 和结束时间 `ends_at`。

结算用的就是当前生效价。

### 一次请求花了多少

打开控制台的 **日志**，每条请求列出输入、输出、缓存读取、缓存写入和推理的 token 数，以及这次请求的费用。

客户端在响应结束前断开连接时，断开之前已经产生的用量照常计费。

### 失败的请求

转发给 provider 之前就被拒绝的请求一律不计费，也不进 **日志**：鉴权失败、余额不足、被 pirouter 限流、模型不存在、参数校验不通过、没有可用的 provider、模型不在所调用的端点上提供、上下文明显超长、请求体超过上限。

转发给了 provider 的失败请求会出现在 **日志** 里，是否计费取决于失败的方式：

| 发生了什么                                                                                                                                | 计费                   |
| ------------------------------------------------------------------------------------------------------------------------------------ | -------------------- |
| 一次尝试失败后，由下一次尝试接替（[故障切换](https://pirouter.ai/zh/docs/guides/routing.md#故障切换)或[模型回退](https://pirouter.ai/zh/docs/guides/fallbacks.md)） | 失败的那次不计费，只为返回响应的那次付费 |
| provider 以 `400` 或 `422` 拒绝了请求                                                                                                       | 不计费                  |
| 在[时限](https://pirouter.ai/zh/docs/guides/timeouts.md#超时)内没有收到第一个字节                                                                   | 不计费                  |
| 流里出现错误事件，或响应没到结尾就断了                                                                                                                  | 不计费，断开前已读到的用量也不计     |
| 所有尝试都失败，最后一次 provider 返回 `500` 这类错误状态码                                                                                               | 按估算的输入计费             |
| 你的客户端断开了连接                                                                                                                           | 断开之前已经产生的用量          |

## 充值

1. **打开 Token 钱包**

   登录[控制台](https://app.pirouter.ai)，打开 **Token 钱包**，点 **充值**。只有工作区所有者能充值。

2. **选金额和支付方式**

   单笔金额在 $10 到 $10,000 之间，最多两位小数。支付方式有银行卡、支付宝和微信支付，付款在 Stripe 的页面上完成。

   > **提示：** 钱包以美元计，扣款用港币，汇率固定为 1 USD = 7.85 HKD，不足一分港币的部分向上取整。充 $10，扣款 HK$78.50，到账 $10。

3. **付款**

   付款完成后，页面回到控制台并显示到账金额。到账确认可能比页面晚几秒。页面显示暂时无法确认时，稍后刷新余额，不要重复付款。

   付款成功的页面上有 Stripe 收据的链接，链接大约 30 天后失效。

## 余额不足

每个请求转发之前，网关先检查余额。可用余额等于三类额度之和，减去进行中的请求已经预留的部分。可用余额不够覆盖这次请求的预估费用时，返回 `402` 和错误码 `insufficient_balance`，请求不会被转发。

```json
{
  "error": {
    "message": "Your workspace balance cannot cover this request. Add credit to your pirouter wallet, then retry.",
    "type": "permission_error",
    "code": "insufficient_balance"
  }
}
```

已经开始的请求不会因为余额用完而中断。它结束时照常结算，可能让充值额度变成负数。负数会在下次充值时先被抵掉，余额为负期间新请求一律返回 `402`。

> **注意：** 遇到 `402`，充值后再重试。不要在程序里自动重试 `402`：余额不变，每次都会失败。

## 目前没有的能力

- **发票**。目前没有。充值的凭证是 Stripe 收据。
- **自动充值**。目前没有。每次充值都是一笔单独的一次性付款。
- **优惠码**。充值页上有输入框，目前不可用。
