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

# 通过接口获取账户信息

> 通过 AiHubMix CLI 实用管理脚本在命令行中管理密钥、查看账户和可用模型列表等

AiHubMix CLI 是一个实用管理脚本集合，无需通过网页界面，就可以管理你的 AiHubMix API 密钥、查询账户信息以及使用 AI 服务。它本质上是封装了 API 调用（curl或Python请求）以便于命令行使用。

<Tip>
  推荐使用新一代命令行工具 [AIHubMix CLI（命令行工具）](/cn/api/aihubmix-cli)：单一二进制、零运行时依赖（无需 Python），提供 `aihubmix keys list` 等资源化命令，并对 `jq` 与 AI Agent 友好。本页保留旧版 Python 脚本用法供参考。
</Tip>

## 准备工作

在开始使用 AiHubMix CLI 前，你需要：

1. 一个 [AIHubMix 账户](https://aihubmix.com)
2. 从 [AIHubMix 设置页面](https://aihubmix.com/setting) 点击「生成系统访问令牌」生成访问令牌 (Access Token)；
3. 安装必要的 Python 依赖项：

```bash theme={null}
pip install -U requests openai
```

<Info>
  aihubmix\_cli.py 脚本可以[在此获取](https://github.com/jerlinn/inferHub)
</Info>

## 功能列表

AIHubMix CLI 提供以下主要功能：

### API 端点一览表

| 端点                           | HTTP 方法 | 描述                           |
| ---------------------------- | ------- | ---------------------------- |
| `/api/user/self`             | GET     | 获取当前用户信息和账户余额                |
| `/api/token/`                | GET     | 获取所有 Key 列表                  |
| `/api/token/`                | POST    | 创建新的 API Key                 |
| `/api/token/`                | PUT     | 更新现有 API Key                 |
| `/api/token/{token_id}`      | GET     | 获取特定 Key 的详细信息               |
| `/api/token/{token_id}`      | DELETE  | 删除特定 Key                     |
| `/api/token/search`          | GET     | 搜索 Key (使用 `?keyword=搜索关键词`) |
| `/api/user/token`            | GET     | 获取用户 Key                     |
| `/api/user/available_models` | GET     | 获取当前用户可用的模型列表                |

### 获取余额信息

<CodeGroup>
  ```shell Curl 获取账户余额 theme={null}
  # 通过 curl 获取余额，余额为 quota /500000
  curl -X GET "https://aihubmix.com/api/user/self" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py Python 获取账户余额 theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 获取账户余额
  response = requests.get(f"{api_url}/api/user/self", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          user_data = data.get("data", {})
          quota = user_data.get('quota', 0)
          usd_balance = quota / 500000  # $1 兑换 500,000 额度
          print(f"用户名: {user_data.get('username', '未知')}")
          print(f"显示名称: {user_data.get('display_name', '未知')}")
          print(f"当前额度: {quota}")
          print(f"可用美元: ${usd_balance:.2f}")
      else:
          print(f"请求失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI 获取账户余额 theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_balance
  ```

  ```shell CLI 获取 Key 的可用额度 theme={null}
  curl 'https://aihubmix.com/dashboard/billing/remain' \
    -H 'authorization: Bearer sk-***' \
  ```
</CodeGroup>

### Key 管理

#### 创建新 Key

<CodeGroup>
  ```shell Curl theme={null}
  curl -X POST "https://aihubmix.com/api/token/" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "name": "新Key名称",
      "expired_time": -1,
      "remain_quota": 500000,
      "unlimited_quota": false,
      "subnet": ""
    }'
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 创建新 Key
  payload = {
      "name": "新Key名称",
      "expired_time": -1,  # 永不过期
      "remain_quota": 500000,
      "unlimited_quota": False,
      "subnet": ""
  }

  response = requests.post(f"{api_url}/api/token/", headers=headers, json=payload)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          token_data = data.get("data", {})
          print(f"新Key: {token_data.get('key', '未知')}")
          print(f"Key ID: {token_data.get('id', '未知')}")
      else:
          print(f"创建Key失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action create_token --name "新Key名称" --expires -1 --quota 500000
  ```
</CodeGroup>

#### 获取 Key 列表

<CodeGroup>
  ```shell Curl theme={null}
  curl -X GET "https://aihubmix.com/api/token/?num=20" \ #修改num参数可以调整输出的数据数量。
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 获取 Key 列表
  response = requests.get(f"{api_url}/api/token/", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          tokens_data = data.get("data", [])
          print(f"Key列表 (共 {len(tokens_data)} 个):")
          for token in tokens_data:
              print(f"Key ID: {token.get('id', '未知')}")
              print(f"Key 名称: {token.get('name', '未知')}")
              print(f"Key: {token.get('key', '未知')}")
              print("---")
      else:
          print(f"获取Key列表失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_tokens
  ```
</CodeGroup>

#### 搜索 Key

<CodeGroup>
  ```shell Curl theme={null}
  curl -X GET "https://aihubmix.com/api/token/search?keyword=搜索关键词" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 搜索关键词
  query = "搜索关键词"

  # 搜索 Key
  response = requests.get(f"{api_url}/api/token/search?keyword={query}", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          tokens_data = data.get("data", [])
          print(f"搜索结果 (共 {len(tokens_data)} 个):")
          for token in tokens_data:
              print(f"Key ID: {token.get('id', '未知')}")
              print(f"Key 名称: {token.get('name', '未知')}")
              print(f"Key: {token.get('key', '未知')}")
              print("---")
      else:
          print(f"搜索Key失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action search_tokens --query "搜索关键词"
  ```
</CodeGroup>

#### 更新 Key

<CodeGroup>
  ```shell Curl theme={null}
  curl -X PUT "https://aihubmix.com/api/token/" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json" \
    -d '{
      "id": "Key_ID",
      "name": "新名称",
      "expired_time": 86400,
      "remain_quota": 100000,
      "status": 1
    }'
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 更新 Key
  key_id = "Key_ID"  # 替换为实际的Key ID
  payload = {
      "id": key_id,
      "name": "新名称",
      "expired_time": 86400,  # 24小时后过期
      "remain_quota": 100000,
      "status": 1  # 1-启用，0-禁用
  }

  response = requests.put(f"{api_url}/api/token/", headers=headers, json=payload)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          print(f"Key更新成功")
          if "data" in data:
              token_data = data.get("data", {})
              print(f"名称: {token_data.get('name', '未知')}")
              print(f"过期时间: {token_data.get('expired_time', '未知')}")
      else:
          print(f"更新Key失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action update_token --id "Key_ID" --name "新名称" --expires 86400 --quota 100000 --status 1
  ```
</CodeGroup>

#### 删除 Key

<CodeGroup>
  ```shell Cur theme={null}
  curl -X DELETE "https://aihubmix.com/api/token/Key_ID" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 删除 Key
  key_id = "Key_ID"  # 替换为实际的Key ID

  response = requests.delete(f"{api_url}/api/token/{key_id}", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          print(f"Key删除成功")
      else:
          print(f"删除Key失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action delete_token --id "Key_ID"
  ```
</CodeGroup>

#### 获取用户 Key

<CodeGroup>
  ```shell Curl theme={null}
  curl -X GET "https://aihubmix.com/api/user/token" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 获取用户 Key
  response = requests.get(f"{api_url}/api/user/token", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          user_token = data.get("data", {}).get("token")
          print(f"用户Key: {user_token}")
      else:
          print(f"获取用户Key失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_user_token
  ```
</CodeGroup>

### 模型管理

#### 获取用户可用模型

<CodeGroup>
  ```shell Curl theme={null}
  curl -X GET "https://aihubmix.com/api/user/available_models" \
    -H "Authorization: YOUR_ACCESS_TOKEN" \
    -H "Content-Type: application/json"
  ```

  ```py Python theme={null}
  import requests
  import json

  # API 配置
  api_url = "https://aihubmix.com"
  access_token = "YOUR_ACCESS_TOKEN"
  headers = {
      "Authorization": access_token,
      "Content-Type": "application/json"
  }

  # 获取用户可用模型
  response = requests.get(f"{api_url}/api/user/available_models", headers=headers)
  if response.status_code == 200:
      data = response.json()
      if data.get("success", False):
          models_data = data.get("data", [])
          print(f"用户可用模型列表 (共 {len(models_data)} 个):")
          for i, model in enumerate(models_data, 1):
              print(f"  {i}. {model}")
      else:
          print(f"获取用户可用模型失败: {data.get('message', '未知错误')}")
  else:
      print(f"请求失败，状态码: {response.status_code}")
  ```

  ```shell CLI theme={null}
  python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_available_models
  ```
</CodeGroup>

## 使用 JSON 格式输出

所有 CLI 命令都支持以 JSON 格式输出结果，方便进行程序化处理：

```bash theme={null}
python aihubmix_cli.py --url "https://aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_balance --json
```

## 故障排除

如果遇到问题，可以尝试以下解决方案：

1. **连接问题**：如果主域名连接失败，尝试使用备用域名：

   ```bash theme={null}
   python aihubmix_cli.py --url "https://api.aihubmix.com" --token "YOUR_ACCESS_TOKEN" --action get_balance
   ```
2. **访问令牌无效**：确保提供的访问令牌是从 AIHubMix 网站获取的有效密钥。访问令牌格式通常是 `fd***` 这样的形式。
3. **权限不足**：某些操作可能需要特定的权限，请确保您的账户有足够的权限。
4. **请求失败**：检查网络连接，或尝试稍后再试。

## 注意事项

* 访问令牌与用于访问 AI 模型的普通 API Key 不同
* 每个用户拥有自己的系统访问令牌，其访问级别由用户角色决定（普通用户、管理员或根用户）

***

更新时间：2026-06-01
