跳到正文

API 参考

消息

Anthropic 兼容的消息端点。

仅覆盖已注册端点的文本请求子集。模型可用性及参数支持以当前令牌、控制台和具体模型为准。

POST
/messages

创建 Anthropic 兼容的文本回复。

认证

AnthropicKey
headerx-api-key<token>

请求头参数

anthropic-version*string

Anthropic 协议版本,例如 2023-06-01。

请求体

application/json
  1. body
model*string

从控制台或 GET /v1/models 复制可用模型 ID。

messages*array<>

对话消息。

max_tokens*integer

输出 token 预算;按模型支持的范围设置。

system?string

独立于 messages 的系统指令。

stream?boolean

启用 SSE;参见流式输出文档。

temperature?number

采样温度;支持情况和范围取决于模型。

响应体

成功;以下结构展示非流式响应。字段与具体模型有关。

application/json
  1. response
id?string
type?string
role?string
model?string
content?array<>
stop_reason?string

参数表

认证:x-api-key: API_KEY; Content-Type: application/json

参数类型必填说明
anthropic-versionstring是Anthropic 协议版本,例如 2023-06-01。
modelstring是从控制台或 GET /v1/models 复制可用模型 ID。
messagesarray是对话消息。
max_tokensinteger是输出 token 预算;按模型支持的范围设置。
systemstring否独立于 messages 的系统指令。
streamboolean否启用 SSE;参见流式输出文档。
temperaturenumber否采样温度;支持情况和范围取决于模型。

请求示例

先在本机环境设置 API_KEY;POST 请求还需设置 MODEL(从控制台复制)。messages 还需设置模型支持的 MAX_TOKENS。curl 的 POST 示例用 Python 标准库安全构造 JSON。

curl

Bash
export API_BASE_URL='https://xtemapi.com/v1'
: "${API_KEY:?Set API_KEY}"
: "${MODEL:?Set MODEL}"
: "${MAX_TOKENS:?Set MAX_TOKENS for your model}"
PAYLOAD="$(python3 - <<'PY'
import json, os
print(json.dumps({"model":os.environ["MODEL"],"messages":[{"role":"user","content":"Hello"}],"max_tokens":int(os.environ["MAX_TOKENS"])}))
PY
)"
curl --fail-with-body "${API_BASE_URL}/messages" \
  -H "x-api-key: ${API_KEY}" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  --data "$PAYLOAD"

Python

Python
# Python standard library
import json, os
from urllib.request import Request, urlopen

url = "https://xtemapi.com/v1/messages"
headers = {"x-api-key":os.environ["API_KEY"],"anthropic-version":"2023-06-01"}
headers["Content-Type"] = "application/json"
payload = {"model":os.environ["MODEL"],"messages":[{"role":"user","content":"Hello"}],"max_tokens":int(os.environ["MAX_TOKENS"])}
request = Request(url, data=json.dumps(payload).encode(), headers=headers, method="POST")
with urlopen(request) as response:
    print(json.load(response))

Node.js

JavaScript
// Node.js with built-in fetch; save as example.mjs
if (!process.env.API_KEY || !process.env.MODEL || !process.env.MAX_TOKENS) throw new Error("Set the required environment variables");
const response = await fetch("https://xtemapi.com/v1/messages", {
  method: "POST",
  headers: {"x-api-key":process.env.API_KEY,"anthropic-version":"2023-06-01","Content-Type":"application/json"},
  body: JSON.stringify({"model":process.env.MODEL,"messages":[{"role":"user","content":"Hello"}],"max_tokens":Number(process.env.MAX_TOKENS)}),
});
if (!response.ok) throw new Error(await response.text());
console.log(await response.json());

响应示例(结构示意)

占位文本与注释需替换为实际响应值。这里省略模型相关的用量等字段,不展示虚构的 token 数或向量。

jsonc
{
  "id": "<request-specific ID>",
  "type": "message",
  "role": "assistant",
  "model": "<selected model ID>",
  "content": [{"type": "text", "text": "<generated text>"}],
  "stop_reason": "end_turn"
}

错误处理

按实际 HTTP 状态与错误信息排查,参见报错码。

stream=true 的响应为 SSE,参见流式输出。