网关

AI 模型

为目录中的所有模型提供兼容 OpenAI 和 Anthropic 的接口。把 SDK 指向网关、使用 Pikeway key,按 token 从余额扣费。

基础地址
OpenAI SDKs:     https://gw.pikeway.ai/ai/v1
Anthropic SDKs:  https://gw.pikeway.ai/ai

鉴权

Authorization: Bearer pk-…(OpenAI SDK 把 key 作为 apiKey 传入时就会这样发送)或 X-API-Key: pk-…。Claude Code 设置 ANTHROPIC_BASE_URL=https://gw.pikeway.ai/ai 和 ANTHROPIC_AUTH_TOKEN=pk-… 即可。余额需大于 0。

计费

网关从模型响应(或流的最后几个事件)读取 token 用量,按 输入 × 输入价 + 命中缓存的输入 × 缓存价 + 输出 × 输出价 计费,价格均为每百万 token。状态码大于等于 400 的响应不收费。各模型价格见 GET /ai/v1/models。

响应头
X-Pikeway-Call-Idstring
调用 id。
X-Pikeway-CostUSD
扣费金额。仅非流式响应返回(流式的费用在最后一个事件后才知道,可在请求日志中查看)。
X-Pikeway-Tokensprompt+completion
token 用量,如 812+64。仅非流式。
X-Pikeway-CacheHIT | MISS
仅在显式开启响应缓存时返回(见下文)。

Chat completions

POST/ai/v1/chat/completions

OpenAI Chat Completions 格式。body 原样传给模型提供方,只有 model 会被映射为提供方的模型 id;流式请求会被加上 stream_options.include_usage = true,以便网关计量。

Body
modelstring必填
/ai/v1/models 中的模型 id 或别名。Anthropic 风格的带日期名称会被规范化,如 claude-sonnet-4-5-20250929 → claude-sonnet-4.5。
messagesarray必填
对话消息,与 OpenAI API 相同。
streamboolean
以 SSE 流式返回。用量从流中读取。
…
其他 OpenAI 参数(tools、temperature、max_tokens…)原样转发。
请求头
X-Pikeway-Cacheseconds
为非流式请求开启精确匹配响应缓存:1 = 300 秒,否则为秒数(最大 3600)。按账户隔离。命中时不调用模型,按原 token 费用的 10% 计费。
bash
curl https://gw.pikeway.ai/ai/v1/chat/completions \
  -H "Authorization: Bearer $PIKEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5",
    "messages": [{"role": "user", "content": "Summarize ERC-4337 in one sentence."}]
  }'

响应是提供方返回的 OpenAI 格式响应,原样透传:

200 OK
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "model": "openai/gpt-5",
  "choices": [{
    "index": 0,
    "message": { "role": "assistant", "content": "ERC-4337 adds smart-contract wallets to Ethereum without protocol changes…" },
    "finish_reason": "stop"
  }],
  "usage": { "prompt_tokens": 17, "completion_tokens": 31, "total_tokens": 48 }
}

Messages(Anthropic)

POST/ai/v1/messages

Anthropic Messages 格式,供 Claude Code 和 Anthropic SDK 使用。会转发 anthropic-version 和 anthropic-beta 请求头。用量把 input_tokens 与缓存读取、缓存写入一起计为输入;缓存读取按模型的缓存价计费。

bash
curl https://gw.pikeway.ai/ai/v1/messages \
  -H "Authorization: Bearer $PIKEWAY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{"model": "claude-sonnet-5", "max_tokens": 512,
       "messages": [{"role": "user", "content": "Hello"}]}'
Claude Code
export ANTHROPIC_BASE_URL=https://gw.pikeway.ai/ai
export ANTHROPIC_AUTH_TOKEN=pk-...
claude

Token 计数

POST/ai/v1/messages/count_tokens

Anthropic 的 token 计数,转发给模型提供方。需要有效 key,不收费。返回提供方的响应。

Responses(OpenAI)

POST/ai/v1/responses

OpenAI Responses 格式。用量从 usage 读取(流式时从 response.completed 事件读取);input_tokens_details.cached_tokens 按缓存价计费。

bash
curl https://gw.pikeway.ai/ai/v1/responses \
  -H "Authorization: Bearer $PIKEWAY_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model": "gpt-5", "input": "Write a haiku about gas fees."}'

模型列表

GET/ai/v1/models

所有已启用的模型,含价格和能力。无需 key。

bash
curl https://gw.pikeway.ai/ai/v1/models
200 OK
{
  "object": "list",
  "data": [
    {
      "id": "claude-sonnet-5",
      "object": "model",
      "owned_by": "anthropic",
      "display_name": "Claude Sonnet 5",
      "context_length": 1000000,
      "pricing": { "input_per_mtok": 2, "output_per_mtok": 10 },
      "capabilities": { "tools": true, "streaming": true, "thinking": true }
    }
  ]
}
模型字段
idstring
请求中作为 model 使用。
owned_bystring
厂商。
context_lengthinteger | null
上下文窗口(token)。
pricing.input_per_mtok · pricing.output_per_mtoknumber (USD)
每百万输入 / 输出 token 的价格。
capabilitiesobject
是否支持 tools、streaming、thinking。

错误

  • 400 invalid JSON body · missing 'model'
  • 401 missing API key (Authorization: Bearer pk-...) · invalid or revoked API key
  • 402 insufficient balance (余额小于等于 0)
  • 403 key 的 IP / 来源限制
  • 404 unknown model: …
  • 405 POST only
  • 502 upstream LLM request failed: …
  • 模型提供方的错误以原始状态码和 body 返回,不收费。
更多接入示例见 AI 网关指南。