📚 API 开发文档

AutoList Token - 统一 API 代理平台接口说明

Base URL: https://token.autolist.top

1️⃣ 认证说明

1.1 获取 API Key

所有 API 调用都需要认证。登录 控制台 在「账户信息」中获取 API Key。

1.2 认证方式

方式一:Authorization Header(推荐)
Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
方式二:X-API-Key Header
X-API-Key: tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Session 认证(用于前端页面)

  • 登录后服务器自动设置 session cookie
  • 前端通过 credentials: 'include' 自动携带 cookie

2️⃣ 用户 API

2.1 用户注册

POST/api/auth.php?action=register

参数类型必填说明
emailstring邮箱地址
passwordstring密码(至少8位,需包含大小写字母和数字)
curl -X POST https://token.autolist.top/api/auth.php?action=register \ -H "Content-Type: application/json" \ -d '{"email":"user@example.com","password":"Abc12345"}'

响应:注册成功自动赠送 ¥10 初始余额并发送欢迎邮件。限频:每小时每 IP 最多 5 次。

2.2 用户登录

POST/api/auth.php?action=login

参数同上。限频:每分钟每 IP 最多 10 次,每分钟每邮箱最多 5 次。

2.3 退出登录

GET/api/auth.php?action=logout


2.4 获取用户资料

GET/api/user.php?action=profile

curl https://token.autolist.top/api/user.php?action=profile \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

2.5 查询余额

GET/api/user.php?action=balance

curl https://token.autolist.top/api/user.php?action=balance \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" {"success":true,"balance":246.50}

2.6 获取交易记录

GET/api/user.php?action=transactions

2.7 充值

POST/api/user.php?action=charge

参数类型必填说明
amountint充值金额(元),最低200,最高50000
methodstring支付方式:alipay / wxpay,留空为聚合收银台
csrf_tokenstring通过 ?action=csrf 获取的安全令牌
注意:每个用户最多同时存在 3 笔待支付订单,超时(30分钟)自动过期。

2.8 重新生成 API Key

POST/api/user.php?action=regenerate-key

2.9 修改密码

POST/api/user.php?action=change-password

参数:current_passwordnew_passwordconfirm_password

2.10 更新资料

POST/api/user.php?action=update-profile

参数:company_namelicense_numberinvoice_title

3️⃣ 扣费 API

用于第三方应用对用户余额进行扣费、回滚和查询操作。

3.1 扣费

POST/api/consume.php?action=consume

参数类型必填说明
user_idstring目标用户 ID
amountnumber扣费金额(元),必须大于 0
notestring扣费备注,默认 "API 扣款"
idempotent_keystring幂等键,防止重复扣费(强烈建议传入)
curl -X POST https://token.autolist.top/api/consume.php?action=consume \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "user_id": "a1000000-0000-4000-8000-000000000004", "amount": 3.00, "note": "SEO 优化扣费", "idempotent_key": "550e8400-e29b-41d4-a716-446655440000" }'

响应:

{ "success": true, "message": "扣款成功 ¥3.00", "data": { "consume_id": "tx_a1b2c3d4e5f6789012345678", "user_id": "a1000000-...", "amount": 3.00, "balance_before": 100.00, "balance_after": 97.00 } }

3.2 回滚

POST/api/consume.php?action=rollback

参数:consume_id(必填)。一笔扣费只能回滚一次。

3.3 查询扣费记录

POST/api/consume.php?action=query

参数:consume_id(必填)。返回扣费状态和是否已回滚。

3.4 幂等性说明

传入 idempotent_key 后,若因网络问题重试,系统检测到相同幂等键则返回首次结果,不会重复扣费:

{ "success": true, "message": "重复请求,返回已有结果", "data": { "consume_id": "tx_...", "amount": 3.00, "balance_after": 97.00, "idempotent": true } }

4️⃣ 文本生成 API

完全兼容 OpenAI Chat Completions 接口格式。系统自动计算 Token 消耗并从余额扣费。

4.1 获取模型列表

GET/api/v1/models

curl https://token.autolist.top/api/v1/models \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

返回所有可用模型及其定价信息(token_based 或 fixed 计费方式)。

4.2 聊天补全

POST/api/v1/chat/completions

参数类型必填说明
modelstring模型 ID(从 /api/v1/models 获取)
messagesarray消息数组(OpenAI 标准格式)
streamboolean是否流式输出 SSE
temperaturefloat温度参数 0-2
max_tokensinteger最大生成 token 数
curl -X POST https://token.autolist.top/api/v1/chat/completions \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{ "model": "deepseek-v4-flash", "messages": [{"role": "user", "content": "你好"}], "stream": false }'

4.3 OpenAI SDK 兼容

from openai import OpenAI client = OpenAI( api_key="tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", base_url="https://token.autolist.top/api/v1", ) response = client.chat.completions.create( model="deepseek-v4-flash", messages=[{"role": "user", "content": "你好"}], ) print(response.choices[0].message.content)

5️⃣ 图片生成 API

5.1 生成图片

POST/api/v1/images/generations

参数类型必填说明
modelstring图片模型 ID
promptstring图片描述提示词
ninteger生成数量,默认 1
sizestring图片尺寸,如 1024x1024
curl -X POST https://token.autolist.top/api/v1/images/generations \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"model": "gpt-image-2", "prompt": "A cute orange cat", "n": 1, "size": "1024x1024"}'

6️⃣ 视频生成 API

6.1 生成视频

POST/api/v1/videos/generations

参数类型必填说明
modelstring视频模型 ID
promptstring视频描述
durationinteger视频时长(秒)
curl -X POST https://token.autolist.top/api/v1/videos/generations \ -H "Authorization: Bearer tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" \ -H "Content-Type: application/json" \ -d '{"model": "cogvideo", "prompt": "A butterfly flying over flowers", "duration": 5}'

7️⃣ 兑换码 API

7.1 兑换

POST/api/redeem.php?action=redeem

参数:code(兑换码字符串)。用户兑换后余额自动增加。

7.2 管理员:生成兑换码

POST/api/redeem.php?action=generate

参数类型必填说明
countint数量,默认1,最多100
amountnumber每个兑换码面值(元)
expire_daysint过期天数,默认30

7.3 管理员:列出/删除

GET/api/redeem.php?action=list — 列出所有兑换码

POST/api/redeem.php?action=delete — 参数:code

8️⃣ 发票 API

8.1 查询可开票记录

GET/api/invoice.php?action=list

8.2 查询我的发票

GET/api/invoice.php?action=my

8.3 申请发票

POST/api/invoice.php?action=apply

参数:tx_ids(交易ID数组)、company_nametax_idinvoice_type

8.4 下载发票

GET/api/invoice.php?action=download&id=INV202607140001

8.5 撤销发票

POST/api/invoice.php?action=delete

9️⃣ 错误码说明

状态码说明
200请求成功
400请求参数缺失或格式错误
401API Key 无效 / 未登录 / 未提供认证信息
402余额不足(大模型API返回 insufficient_balance
403账户被禁用 / CSRF 验证失败
404模型或资源不存在
405不支持的请求方法(仅限 POST/GET)
429请求过于频繁,请稍后再试
502上游 AI 模型服务异常
错误响应格式:
{"success":false,"message":"余额不足,当前余额: ¥0.50,扣款金额: ¥1.00"}

大模型API错误格式:
{"error":{"message":"余额不足","type":"insufficient_balance"}}

🔟 SDK 代码示例

Python SDK

import uuid import requests class TokenProxy: def __init__(self, api_key, base_url="https://token.autolist.top"): self.api_key = api_key self.base_url = base_url self.session = requests.Session() self.session.headers.update({ "Authorization": f"Bearer {api_key}", "Content-Type": "application/json", }) def get_balance(self): """查询余额""" resp = self.session.get(f"{self.base_url}/api/user.php?action=balance") return resp.json()["balance"] def consume(self, user_id, amount, note=""): """扣费""" resp = self.session.post( f"{self.base_url}/api/consume.php?action=consume", json={ "user_id": user_id, "amount": amount, "note": note, "idempotent_key": str(uuid.uuid4()), }, ) return resp.json() def chat(self, model, messages): """AI 聊天""" resp = self.session.post( f"{self.base_url}/api/v1/chat/completions", json={"model": model, "messages": messages}, ) return resp.json() def generate_image(self, model, prompt): """生成图片""" resp = self.session.post( f"{self.base_url}/api/v1/images/generations", json={"model": model, "prompt": prompt}, ) return resp.json() # 使用示例 client = TokenProxy("tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx") print(f"当前余额: ¥{client.get_balance()}") # 扣费 result = client.consume("a1000000-...-000000000004", 3.0, "SEO 优化") print(f"扣费后余额: ¥{result['data']['balance_after']}") # AI 聊天 resp = client.chat("deepseek-v4-flash", [{"role":"user","content":"Hello!"}]) print(resp["choices"][0]["message"]["content"])

JavaScript SDK

class TokenProxy { constructor(apiKey, baseUrl = 'https://token.autolist.top') { this.headers = { 'Authorization': `Bearer ${apiKey}`, 'Content-Type': 'application/json', }; this.baseUrl = baseUrl; } async getBalance() { const res = await fetch(`${this.baseUrl}/api/user.php?action=balance`, { headers: this.headers, }); return (await res.json()).balance; } async consume(userId, amount, note) { const res = await fetch(`${this.baseUrl}/api/consume.php?action=consume`, { method: 'POST', headers: this.headers, body: JSON.stringify({ user_id: userId, amount, note, idempotent_key: crypto.randomUUID(), }), }); return res.json(); } async chat(model, messages) { const res = await fetch(`${this.baseUrl}/api/v1/chat/completions`, { method: 'POST', headers: this.headers, body: JSON.stringify({model, messages}), }); return res.json(); } } // 使用 const client = new TokenProxy('tk_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'); console.log(await client.getBalance());