API 接口文档
所有接口返回 JSON 格式,Content-Type 为 application/json
1. 查询库存
GET
/api/stock
无需参数,返回当前可用邮箱库存。
// 响应示例
{
"success": true,
"data": [
{"category": "hotmail", "stock": 3500},
{"category": "outlook", "stock": 1200}
],
"refresh_interval": 30
}
2. 查询卡密余额
POST
/api/card/query
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 卡密 |
// 请求
{"code": "A1B2C3D4E5F67890..."}
// 成功响应
{
"success": true,
"data": {
"remaining": 88,
"total": 100,
"used": 12
}
}
// 失败响应
{"success": false, "message": "Card not found or has been depleted"}
3. 提取邮箱
POST
/api/extract
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 卡密 |
| category | string | 否 | 类别:hotmail 或 outlook,默认 hotmail |
| quantity | int | 是 | 提取数量(1-5000) |
// 请求
{
"code": "A1B2C3D4E5F67890...",
"category": "hotmail",
"quantity": 10
}
// 成功响应
{
"success": true,
"data": {
"log_id": 1,
"quantity": 10,
"emails": "xxx@hotmail.com----pass----token...\nyyy@hotmail.com----pass----token...",
"file_name": "abc123def.txt",
"remaining": 78
}
}
// 失败响应
{"success": false, "message": "库存不足,请减少数量或稍后再试"}
邮箱格式:邮箱----密码----access_token----refresh_token----thunderbird_client_id----graph_access_token----graph_refresh_token
4. 下载提取文件
GET
/api/download/{file_name}
直接返回 TXT 文件下载。file_name 来自提取接口返回的 data.file_name。
5. 查询提取记录
POST
/api/card/logs
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| code | string | 是 | 卡密 |
// 请求
{"code": "A1B2C3D4E5F67890..."}
// 响应
{
"success": true,
"data": [
{
"id": 1,
"category": "hotmail",
"quantity": 10,
"created_at": "2026-05-04T18:30:00",
"file_name": "abc123def.txt",
"has_file": true
}
]
}
调用示例
Python
import requests
BASE = "http://你的域名:8001"
CARD_CODE = "你的卡密"
# 查询余额
r = requests.post(f"{BASE}/api/card/query", json={"code": CARD_CODE})
print(r.json())
# 提取 10 个 hotmail
r = requests.post(f"{BASE}/api/extract", json={
"code": CARD_CODE,
"category": "hotmail",
"quantity": 10
})
data = r.json()
if data["success"]:
print(f"提取成功,剩余: {data['data']['remaining']}")
print(data["data"]["emails"])
else:
print(f"失败: {data['message']}")
cURL
# 查库存
curl http://你的域名:8001/api/stock
# 查余额
curl -X POST http://你的域名:8001/api/card/query \
-H "Content-Type: application/json" \
-d '{"code":"你的卡密"}'
# 提取邮箱
curl -X POST http://你的域名:8001/api/extract \
-H "Content-Type: application/json" \
-d '{"code":"你的卡密","category":"hotmail","quantity":10}'
JavaScript
const BASE = "http://你的域名:8001";
// 提取邮箱
const resp = await fetch(`${BASE}/api/extract`, {
method: "POST",
headers: {"Content-Type": "application/json"},
body: JSON.stringify({
code: "你的卡密",
category: "hotmail",
quantity: 10
})
});
const data = await resp.json();
if (data.success) {
console.log("邮箱:", data.data.emails);
console.log("剩余:", data.data.remaining);
} else {
console.log("失败:", data.message);
}