API 文档

Ablatehub 提供兼容 OpenAI 的对话接口。你可以直接使用现有的 OpenAI SDK 或任何兼容 OpenAI 格式的客户端,只需要换掉接口地址和密钥。

快速开始

  1. 注册账号,登录后进入控制台的 API 密钥页面,创建一个密钥。密钥只在创建时显示一次,请立即保存。
  2. 在你的应用里把接口地址设为 https://api.ablatehub.com/v1,把密钥填进 API Key。
  3. 在控制台确认账户有余额后即可调用。
curl https://api.ablatehub.com/v1/chat/completions \
  -H "Authorization: Bearer $ABLATEHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "GLM-5.3-Flash-Ablatehub",
    "messages": [{"role": "user", "content": "你好"}]
  }'

认证

所有请求都需要在请求头里携带密钥:

Authorization: Bearer sk-xxxxxxxxxxxxxxxx
  • 密钥在控制台创建,每个账号最多 10 个,可以随时停用或删除。停用或删除后,使用该密钥的请求会立即返回 401。
  • 请把密钥放在服务端环境变量里,不要写进网页前端、手机应用或公开的代码仓库。
  • 密钥一旦泄露,请立即在控制台删除并重新创建。

模型与计费

调用时把 model 设为下表中的名称。价格单位是美元 / 每百万 tokens,按实际用量从账户余额扣除。

模型名称输入输出缓存输入
GLM-5.3-Ablatehub$4.00$6.00$0.70
GLM-5.3-Flash-Ablatehub$0.50$1.60$0.30
DeepSeek-V4.1-Flash-Ablatehub$1.20$3.20$0.30
Qwen3.8-Flash-Next-Ablatehub$0.36$1.20$0.18

费用 = 未命中缓存的输入 tokens × 输入价 + 命中缓存的输入 tokens × 缓存输入价 + 输出 tokens × 输出价。每次调用的明细可以在控制台的调用记录里查看。

也可以通过接口获取当前可用的模型:

curl https://api.ablatehub.com/v1/models \
  -H "Authorization: Bearer $ABLATEHUB_API_KEY"

对话接口

POST https://api.ablatehub.com/v1/chat/completions

参数类型说明
modelstring必填。模型名称,见上表。
messagesarray必填。对话消息列表,每项包含 role(system / user / assistant / tool)和 content。
max_tokensinteger最多生成的 tokens 数。
temperature、top_pnumber采样参数。
stopstring / array遇到这些字符串时停止生成。
streamboolean是否流式返回,见下文。
toolsarray可调用的工具(函数)定义,见下文。
response_formatobject设为 {"type": "json_object"} 可要求输出 JSON。

返回示例:

{
  "id": "chatcmpl-...",
  "object": "chat.completion",
  "model": "GLM-5.3-Flash-Ablatehub",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "你好!有什么可以帮你的吗?" },
      "finish_reason": "stop"
    }
  ],
  "usage": { "prompt_tokens": 14, "completion_tokens": 17, "total_tokens": 31 }
}

部分模型会在 message 里额外返回 reasoning_content(思考过程)。思考部分也计入输出 tokens。如果 max_tokens 设得太小,可能出现 content 为空、finish_reason 为 length 的情况,请适当调大。

流式输出

设置 "stream": true 后,结果会以 Server-Sent Events 的形式逐段返回,最后以 data: [DONE] 结束。加上 "stream_options": {"include_usage": true} 可以在最后收到一段包含用量的数据。

curl https://api.ablatehub.com/v1/chat/completions \
  -H "Authorization: Bearer $ABLATEHUB_API_KEY" \
  -H "Content-Type: application/json" \
  -N \
  -d '{
    "model": "GLM-5.3-Flash-Ablatehub",
    "messages": [{"role": "user", "content": "从 1 数到 5"}],
    "stream": true,
    "stream_options": {"include_usage": true}
  }'

每一段形如:

data: {"id":"chatcmpl-...","object":"chat.completion.chunk","model":"GLM-5.3-Flash-Ablatehub","choices":[{"index":0,"delta":{"content":"1"},"finish_reason":null}]}

data: [DONE]

工具调用

通过 tools 传入函数定义,模型会在需要时返回 tool_calls。你执行函数后,把结果以 role: "tool" 的消息追加回去,再请求一次即可。

{
  "model": "GLM-5.3-Flash-Ablatehub",
  "messages": [{"role": "user", "content": "巴黎今天天气怎么样?"}],
  "tools": [{
    "type": "function",
    "function": {
      "name": "get_weather",
      "description": "查询城市天气",
      "parameters": {
        "type": "object",
        "properties": { "city": { "type": "string" } },
        "required": ["city"]
      }
    }
  }]
}

模型返回的 message.tool_calls[0].function.arguments 是 JSON 字符串,finish_reason 为 tool_calls。

JSON 输出

设置 "response_format": {"type": "json_object"},并在提示词里明确要求输出 JSON,模型会返回合法的 JSON 字符串。

用量与缓存

每次响应的 usage 字段包含 prompt_tokens、completion_tokens 和 total_tokens。当请求的前缀与近期请求相同,部分输入会命中缓存,命中的数量会出现在 usage.prompt_tokens_details.cached_tokens 里,这部分按更低的缓存输入价计费。

  • 要提高命中率,请把固定不变的内容(系统提示词、长文档、工具定义)放在 messages 的最前面,把每次变化的内容放在最后。
  • 缓存是否命中取决于近期是否有相同前缀的请求,不能保证每次都命中。
  • 控制台的调用记录会显示每次调用的输入、其中缓存、输出和费用。

错误码

出错时返回 JSON:{"error": {"message": "...", "type": "...", "code": "..."}}。

HTTPcode含义与处理
400invalid_text_request 等请求参数有误,例如缺少 messages。请根据 message 修改请求。
401invalid_api_key密钥缺失、写错、已停用或已删除。
402insufficient_quota账户余额不足。请联系支持充值。
404model_not_found模型名称不存在,请使用上表中的名称(区分大小写)。
429rate_limit_exceeded请求过于频繁。请稍后重试,并在重试时逐步拉长间隔。
502service_unavailable服务暂时不可用。请稍后重试。

限制与说明

  • 目前提供对话接口(/v1/chat/completions)和模型列表(/v1/models)。文本补全(/v1/completions)、向量(/v1/embeddings)和图像接口暂不提供,请求会返回 404。
  • 每个账号最多 10 个 API 密钥。
  • 个别模型可能因上游波动出现响应变慢或暂时不可用。遇到 502 或长时间无响应时,建议在客户端设置超时(例如 60 秒)并重试。
  • 请遵守服务条款与使用政策。

获取支持

遇到问题、需要充值或有其他需求,请通过 Telegram 联系我们。反馈问题时请附上请求的时间、使用的模型和返回的错误信息,但不要发送你的完整密钥。