> ## Documentation Index
> Fetch the complete documentation index at: https://docs.anyfast.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# GET /api/user/self

> 获取当前登录用户的钱包、授信、测试券和订阅额度汇总。

`/api/user/self` 返回当前认证用户的各类可用额度。该接口只返回余额数据；如需用户名、邮箱、角色、权限和用户设置等完整资料，请调用 `GET /api/user/self/all`。

## 请求

| 项目   | 内容                                     |
| ---- | -------------------------------------- |
| 请求方法 | `GET`                                  |
| 请求路径 | `/api/user/self`                       |
| 生产环境 | `https://www.anyfast.ai/api/user/self` |
| 请求体  | 无                                      |
| 查询参数 | 无                                      |

## 身份认证

接口只允许查询当前认证用户自身的余额。你可以使用系统访问令牌或登录会话进行认证。

<Warning>
  系统访问令牌不是用于模型调用的 `sk-...` API Key。`New-Api-User` 必须是数字用户 ID，并且必须与令牌或会话所属用户一致。
</Warning>

<CodeGroup>
  ```bash 系统访问令牌 theme={null}
  curl --location 'https://www.anyfast.ai/api/user/self' \
    --header 'Authorization: Bearer <SYSTEM_ACCESS_TOKEN>' \
    --header 'New-Api-User: <USER_ID>' \
    --header 'Accept: application/json'
  ```

  ```bash 登录会话 theme={null}
  curl --location 'https://www.anyfast.ai/api/user/self' \
    --header 'Cookie: anyfast_session=<SESSION_COOKIE>' \
    --header 'New-Api-User: <USER_ID>' \
    --header 'Accept: application/json'
  ```
</CodeGroup>

普通用户和管理员均不能通过修改 `New-Api-User` 查询其他用户的数据。

## 成功响应

```json theme={null}
{
  "data": {
    "quota": 12747995,
    "details": {
      "wallet_quota": 500000,
      "credit_quota": 12247995,
      "test_voucher_quota": 0,
      "subscription_quota": 0,
      "subscription_unlimited": false
    }
  },
  "message": "",
  "success": true
}
```

## 响应字段

| 字段                                    | 类型              | 必须返回 | 含义                                 |
| ------------------------------------- | --------------- | ---: | ---------------------------------- |
| `success`                             | boolean         |    是 | 请求是否成功。业务成功时为 `true`。              |
| `message`                             | string          |    是 | 提示信息。成功时通常为空字符串。                   |
| `data`                                | object          | 成功时是 | 当前用户余额汇总。失败时不返回部分余额数据。             |
| `data.quota`                          | integer (int64) |    是 | 钱包余额与有效授信剩余额度之和。                   |
| `data.details`                        | object          |    是 | 各资金来源的独立明细。                        |
| `data.details.wallet_quota`           | integer (int64) |    是 | 用户钱包中的当前实际余额。                      |
| `data.details.credit_quota`           | integer (int64) |    是 | 当前 `active` 授信的剩余可用额度，不是授信总额或已用额度。 |
| `data.details.test_voucher_quota`     | integer (int64) |    是 | 当前已生效、未过期、未作废且未耗尽的测试券剩余额度汇总。       |
| `data.details.subscription_quota`     | integer (int64) |    是 | 当前有效的有限额订阅剩余额度汇总。                  |
| `data.details.subscription_unlimited` | boolean         |    是 | 是否存在当前有效的无限额度订阅。                   |

所有金额字段均使用平台原生 `quota` 整数单位。即使值为 `0`，字段也会保留。

## 计算规则

`data.quota` 只包含钱包余额和可用授信余额：

```text theme={null}
data.quota = wallet_quota + credit_quota
```

示例中的计算结果为 `500000 + 12247995 = 12747995`。

以下字段不计入 `data.quota`：

* `test_voucher_quota`
* `subscription_quota`
* `subscription_unlimited`

因此，`data.quota` 不是所有资金来源的总和。

## 额度口径

### 钱包余额

`wallet_quota` 是用户当前钱包余额。充值、管理员调额或钱包消费完成后，再次查询会返回最新值。

### 授信额度

`credit_quota` 只统计状态为 `active` 的授信剩余额度：

```text theme={null}
credit_quota = amount_total - amount_used
```

已停用或已回收的授信不计入 `credit_quota`。

### 测试券额度

`test_voucher_quota` 只汇总同时满足以下条件的测试券：

* 已到生效时间；
* 未超过过期时间；
* 状态可用；
* 剩余额度大于 `0`。

测试券的模型限制不影响余额展示，但会影响实际模型消费资格。

### 订阅额度

`subscription_quota` 表示有限额订阅的剩余额度。无限额度订阅通过 `subscription_unlimited: true` 单独表示，不使用特殊数字或字符串写入 `data.quota`。

## 金额换算

调用方应优先使用原始 `quota` 值进行计算，不应硬编码美元换算比例。

当前生产环境的配置为：

```text theme={null}
500000 quota = $1
```

按当前生产环境换算，示例响应表示：

| 资金来源  |    quota |      生产环境金额 |
| ----- | -------: | ----------: |
| 钱包    |   500000 |  \$1.000000 |
| 可用授信  | 12247995 | \$24.495990 |
| 钱包加授信 | 12747995 | \$25.495990 |

不同部署环境的换算配置可能不同。当前生产环境的比例不是固定的接口契约。

## 错误响应

认证失败时，响应不会包含用户余额或完整用户资料。例如，令牌无效时可能返回：

```json theme={null}
{
  "message": "无权进行此操作，access token 无效",
  "success": false
}
```

`New-Api-User` 与认证用户不匹配时可能返回：

```json theme={null}
{
  "success": false,
  "message": "无权进行此操作，New-Api-User 与登录用户不匹配"
}
```

会话不属于当前站点时通常返回 HTTP `403`。服务端查询失败时会返回失败响应，并且不会返回由部分资金来源拼接出的 `data`。

<Warning>
  部分认证失败场景可能返回 HTTP `200`，但响应体中的 `success` 为 `false`。调用方必须同时检查 HTTP 状态码、`success` 和 `message`。
</Warning>

<script src="/public/feedback.js" />
