Lovely Router文档
获取密钥
API 参考

模型端点

Anthropic、OpenAI 和 Gemini 格式的 LLM 端点参考,并列出每个端点接受和返回的 Lovely Router 请求头。

模型端点就是各厂商自己的 API,由 https://lovelyrouter.com 提供。请求体和响应体遵循厂商的结构,原样透传,因此本页只列出最常用的参数,其余参数请查阅厂商的参考文档。所有端点的通用行为见网关工作原理。

每个端点都接受以下任一方式传递 API 密钥:Authorization: Bearer、x-api-key、x-goog-api-key 或 ?key= 查询参数。错误以你所调用 API 的格式返回,参见错误。

响应头

x-lovely-request-idstring

本次调用的 id,例如 req_6f1c0b9e2d4a47a1b8c3d5e7。会显示在日志中。出现在成功响应中,以及容量类 429 错误和 502 错误中。

x-lovely-groupstring

处理本次调用的渠道分组。

x-lovely-channelstring

该分组的渠道标签,经过 URL 编码。

x-lovely-queued-msinteger

请求等待容量的毫秒数。仅在发生等待时出现。

retry-afterinteger

需要等待的秒数。随因密钥限制或容量繁忙而返回的 429 响应一起发送。

创建消息#

POST/v1/messages

使用 Anthropic Messages API 让模型生成响应。设置 stream 即可接收服务器发送事件(SSE)。思考、工具、图像和提示缓存均按 Anthropic 文档所述原样透传。指南:Anthropic Messages。

请求头

x-api-keystring必填

你的 Lovely Router 密钥。也可以使用 Authorization: Bearer。

anthropic-versionstring默认 2023-06-01

转发给模型。

anthropic-betastring

原样转发。

x-lovely-groupstring

本次请求使用的渠道分组,例如 claude-value。密钥已绑定分组时忽略此项。

x-session-idstring

对话的固定 id,用于把每一轮都路由到持有其缓存的渠道。

请求体参数

modelstring必填

来自 GET /v1/models 的模型 id,例如 claude-sonnet-5.5。claude-sonnet-5-5 等其他写法会解析为同一个模型。

messagesarray必填

到目前为止的对话,user 与 assistant 轮次交替出现。

max_tokensinteger必填

最多生成的 token 数。

systemstring or array

系统提示词。文本块支持 cache_control。

streamboolean默认 false

以服务器发送事件(SSE)流式返回响应。

thinkingobject

模型的扩展思考设置。

output_configobject

输出设置,例如 effort 和 format。

toolsarray

模型可以调用的工具。

tool_choiceobject

模型如何选择工具。

metadataobject

请求元数据。

curl https://lovelyrouter.com/v1/messages \
  -H "x-api-key: $LOVELY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{
    "model": "claude-sonnet-5.5",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "Hello, Claude"}]
  }'
Response
{
  "id": "msg_01XFDUDYJgAACzvnptvVoYEL",
  "type": "message",
  "role": "assistant",
  "model": "claude-sonnet-5-5",
  "content": [
    {"type": "text", "text": "Hello! How can I help you today?"}
  ],
  "stop_reason": "end_turn",
  "stop_sequence": null,
  "usage": {
    "input_tokens": 10,
    "cache_creation_input_tokens": 0,
    "cache_read_input_tokens": 0,
    "output_tokens": 12
  }
}

计算消息 token 数#

POST/v1/messages/count_tokens

估算一次消息请求的输入 token 数,但不实际执行。免费,余额为零时也可使用。计数是近似值:可用于检查上下文窗口和做预算;实际调用的费用以其 usage 为准。Anthropic 的 token 计数指南。

请求头

x-api-keystring必填

你的 Lovely Router 密钥。也可以使用 Authorization: Bearer。

x-lovely-groupstring

用于校验模型是否可用的渠道分组。密钥已绑定分组时忽略此项。

请求体参数

modelstring必填

模型 id,与 POST /v1/messages 相同。

messagesarray必填

要计数的消息。

systemstring or array

计入计数的系统提示词。

toolsarray

计入计数的工具定义。

curl https://lovelyrouter.com/v1/messages/count_tokens \
  -H "x-api-key: $LOVELY_API_KEY" \
  -H "anthropic-version: 2023-06-01" \
  -H "content-type: application/json" \
  -d '{"model": "claude-sonnet-5.5",
       "messages": [{"role": "user", "content": "Hello, Claude"}]}'
Response
{
  "input_tokens": 24
}

创建聊天补全#

POST/v1/chat/completions

使用 OpenAI Chat Completions API 生成响应。GET /v1/models 中的每个模型都接受这种格式。流式请求总会被设置 stream_options.include_usage: true,因此最后一个数据块会带有 usage。指南:OpenAI Chat Completions。

请求头

Authorizationstring必填

Bearer 加上你的 Lovely Router 密钥。

openai-betastring

原样转发。

x-lovely-groupstring

本次请求使用的渠道分组,例如 gpt-value。密钥已绑定分组时忽略此项。

x-session-idstring

对话的固定 id,用于把每一轮都路由到持有其缓存的渠道。

请求体参数

modelstring必填

来自 GET /v1/models 的模型 id,例如 gpt-6.1-sol。

messagesarray必填

到目前为止的对话:system 或 developer、user、assistant 和 tool 消息。

streamboolean默认 false

以服务器发送事件(SSE)流式返回响应,以 data: [DONE] 结束。

max_completion_tokensinteger

生成 token 数的上限,包括推理 token。

reasoning_effortstring

推理模型的思考程度。可选值取决于模型。

toolsarray

模型可以调用的函数。

tool_choicestring or object

模型如何选择工具。

response_formatobject

要求输出 JSON,或输出符合指定 JSON Schema 的内容。

prompt_cache_keystring

提高缓存命中率。也会用作路由所用的对话 id。

userstring

终端用户 id。未发送更具体的标识时,用作路由所用的对话 id。

curl https://lovelyrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "messages": [{"role": "user", "content": "Hello!"}]
  }'
Response
{
  "id": "chatcmpl-B9MHDbslfkBeAs8l4bebGdFOJ6PeG",
  "object": "chat.completion",
  "created": 1791700000,
  "model": "gpt-6.1-sol",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "Hello! How can I help?"},
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 9,
    "completion_tokens": 12,
    "total_tokens": 21,
    "prompt_tokens_details": {"cached_tokens": 0},
    "completion_tokens_details": {"reasoning_tokens": 0}
  }
}

创建响应#

POST/v1/responses

使用 OpenAI Responses API 生成响应,Codex CLI 使用的就是这个 API。仅为 GPT 模型提供;其他模型返回 404。响应不会被存储:请在 input 中发送完整的对话。指南:Responses API。

请求头

Authorizationstring必填

Bearer 加上你的 Lovely Router 密钥。

openai-betastring

原样转发。

x-lovely-groupstring

本次请求使用的渠道分组,例如 gpt-value。密钥已绑定分组时忽略此项。

x-session-idstring

对话的固定 id,用于把每一轮都路由到持有其缓存的渠道。

请求体参数

modelstring必填

来自 GET /v1/models 的 GPT 模型 id,例如 gpt-6.1-sol。

inputstring or array必填

提示词,或以输入项列表表示的对话。

instructionsstring

系统指令。响应会原样返回你发送的内容,未发送时为 null。

streamboolean默认 false

以类型化的服务器发送事件(SSE)流式返回,以 response.completed(带有 usage)结束。

max_output_tokensinteger

生成 token 数的上限,包括推理 token。

reasoningobject

推理设置,例如 effort。可选值取决于模型。

toolsarray

模型可以调用的函数和其他工具。

storeboolean

请发送 false:响应不会被保留以供之后获取。

prompt_cache_keystring

提高缓存命中率。也会用作路由所用的对话 id。

curl https://lovelyrouter.com/v1/responses \
  -H "Authorization: Bearer $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{
    "model": "gpt-6.1-sol",
    "input": "Hello!",
    "store": false
  }'

生成内容#

POST/v1beta/models/{model}:generateContent

使用 Gemini API 生成响应。指南:Gemini。

路径参数

modelstring必填

模型 id,例如 gemini-3.1-pro。gemini-3.1-pro-preview 等 Google 的写法会解析为同一个模型。

请求头

x-goog-api-keystring必填

你的 Lovely Router 密钥。也可以使用 Authorization: Bearer 或 ?key= 查询参数。

x-lovely-groupstring

本次请求使用的渠道分组,例如 gemini-value。密钥已绑定分组时忽略此项。

x-session-idstring

对话的固定 id,用于把每一轮都路由到持有其缓存的渠道。

请求体参数

contentsarray必填

到目前为止的对话,由 user 和 model 轮次组成,每一轮由 parts 构成。

systemInstructionobject

系统指令,即一个由文本 part 组成的 content 对象。

generationConfigobject

输出设置:maxOutputTokens、temperature、responseMimeType、thinkingConfig 等。

toolsarray

函数声明及其他工具。

toolConfigobject

模型如何选择函数。

safetySettingsarray

按类别设置的安全阈值。

curl "https://lovelyrouter.com/v1beta/models/gemini-3.1-pro:generateContent" \
  -H "x-goog-api-key: $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Hello!"}]}]}'
Response
{
  "candidates": [
    {
      "content": {"role": "model", "parts": [{"text": "Hello! How can I help?"}]},
      "finishReason": "STOP",
      "index": 0
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 3,
    "candidatesTokenCount": 7,
    "thoughtsTokenCount": 96,
    "totalTokenCount": 106
  },
  "responseId": "mFHoaNC1Lo3HqtsP"
}

流式生成内容#

POST/v1beta/models/{model}:streamGenerateContent

请求与 generateContent 相同,但以流的形式返回。加上 alt=sse 即可接收服务器发送事件(SSE),每个事件包含一段部分响应;SDK 会自动帮你加上。不加时,响应是一个以流方式传输的 JSON 数组。参见流式输出。

查询参数

altstring

设为 sse 以接收服务器发送事件。推荐使用。

路径参数、请求头和请求体与生成内容相同。

curl -N "https://lovelyrouter.com/v1beta/models/gemini-3-flash:streamGenerateContent?alt=sse" \
  -H "x-goog-api-key: $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Count to three."}]}]}'
Response
data: {"candidates":[{"content":{"role":"model","parts":[{"text":"One, two,"}]}}],"usageMetadata":{"promptTokenCount":5,"candidatesTokenCount":4,"totalTokenCount":9}}

data: {"candidates":[{"content":{"role":"model","parts":[{"text":" three."}]},"finishReason":"STOP"}],"usageMetadata":{"promptTokenCount":5,"candidatesTokenCount":7,"totalTokenCount":12}}

计算 Gemini token 数#

POST/v1beta/models/{model}:countTokens

估算 contents 中的 token 数,但不运行模型。免费,余额为零时也可使用。计数是近似值。Gemini 参考文档。

请求体参数

contentsarray必填

要计数的内容,结构与 generateContent 相同。

路径参数和请求头与生成内容相同。

curl "https://lovelyrouter.com/v1beta/models/gemini-3.1-pro:countTokens" \
  -H "x-goog-api-key: $LOVELY_API_KEY" \
  -H "content-type: application/json" \
  -d '{"contents": [{"role": "user", "parts": [{"text": "Hello, Gemini"}]}]}'
Response
{
  "totalTokens": 18
}

列出模型#

GET/v1/models

列出你当前可调用的所有模型,包括上下文长度、官方标价以及提供该模型的渠道分组。无需 API 密钥。返回结构同时兼容 OpenAI 和 Anthropic SDK 的 models.list()。字段含义见模型与价格。

响应字段

dataarray

每个模型一个对象。

has_moreboolean

始终为 false:整个列表一次性返回。

curl https://lovelyrouter.com/v1/models
Response
{
  "object": "list",
  "data": [
    {
      "id": "claude-sonnet-5.5",
      "object": "model",
      "type": "model",
      "display_name": "Claude Sonnet 5.5",
      "created": 1700000000,
      "created_at": "2025-01-01T00:00:00Z",
      "owned_by": "Anthropic",
      "context_length": 1000000,
      "pricing": {
        "input": 2,
        "output": 10,
        "cache_read": 0.1,
        "cache_write": 2.5,
        "unit": "USD per 1M tokens"
      },
      "groups": ["claude-value"]
    }
  ],
  "has_more": false,
  "first_id": "claude-fable-5.1",
  "last_id": "gpt-5.6-luna"
}

以 Gemini 格式列出模型#

GET/v1beta/models

以 Gemini API 的结构列出可通过 Gemini 端点调用的模型。无需 API 密钥。Google Gen AI SDK 的 models.list() 会调用它。价格只在 GET /v1/models 中提供。

cURL
curl https://lovelyrouter.com/v1beta/models
Response
{
  "models": [
    {
      "name": "models/gemini-3.1-pro",
      "displayName": "Gemini 3.1 Pro",
      "inputTokenLimit": 1048576,
      "supportedGenerationMethods": ["generateContent", "streamGenerateContent", "countTokens"]
    }
  ]
}