切换主题
API 接口参考
本页是接口速查,不重复客户端安装、注册和 API Key 创建步骤。第一次使用请先完成创建 API Key和第一次 API 请求。
基础信息
| 项目 | 值 |
|---|---|
| API 根地址 | https://api.uselunora.com |
| 鉴权 | Authorization: Bearer <你的 API Key> |
| 模型名称 | 以控制台“可用渠道”当前显示为准 |
| 内容类型 | application/json;图片编辑另见接口说明 |
不要把 API 根地址写成控制台网页地址,也不要把兑换码当作 API Key。模型、分组、倍率和可用状态以控制台实时显示为准。
接口总览
| 能力 | 方法和路径 | 说明 |
|---|---|---|
| Chat Completions | POST /v1/chat/completions | 传统聊天补全,支持文本、视觉输入和流式输出 |
| Responses | POST /v1/responses | Codex 和 Responses 工作流 |
| 图片生成 | POST /v1/images/generations | 文生图 |
| 图片编辑 | POST /v1/images/edits | 以 multipart 方式上传原图并编辑 |
| 异步生图 | POST /v1/images/generations/async | 创建任务后查询结果 |
| 异步图像编辑 | POST /v1/images/edits/async | 创建任务后查询结果 |
| 查询图片任务 | GET /v1/images/tasks/{task_id} | 查询异步图片任务状态和结果 |
| OpenAI / Omni 视频 | POST /v1/videos | 创建通用、Omni 文生/图生或视频转视频任务 |
| 查询 OpenAI / Omni 视频 | GET /v1/videos/{task_id} | 查询任务状态和结果 |
| 下载 OpenAI / Omni 视频 | GET /v1/videos/{task_id}/content | 下载已完成任务的成片 |
| Grok 视频 | POST /v1/video/generations | 创建 Grok 异步视频任务 |
| 查询 Grok 视频 | GET /v1/video/generations/{task_id} | 查询 Grok 任务并读取结果地址 |
批量生图是控制台中的独立功能,具体操作见批量生图与结果下载。
Chat Completions
最小请求:
bash
curl -sS https://api.uselunora.com/v1/chat/completions \
-H "Authorization: Bearer $LUNORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "控制台显示的模型名称",
"messages": [
{"role": "user", "content": "请只回复:连接成功"}
]
}'Python SDK:
bash
pip install openaipython
import os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["LUNORA_API_KEY"],
base_url="https://api.uselunora.com/v1",
)
result = client.chat.completions.create(
model="控制台显示的模型名称",
messages=[{"role": "user", "content": "请只回复:连接成功"}],
)
print(result.choices[0].message.content)Node.js:
bash
npm install openaijavascript
import OpenAI from "openai";
const client = new OpenAI({
apiKey: process.env.LUNORA_API_KEY,
baseURL: "https://api.uselunora.com/v1",
});
const result = await client.chat.completions.create({
model: "控制台显示的模型名称",
messages: [{ role: "user", content: "请只回复:连接成功" }],
});
console.log(result.choices[0].message.content);不要把真实 Key 写进代码仓库。生产脚本应使用环境变量或安全密钥管理器。
视觉输入
视觉模型通常在 messages[].content 中同时传入文字和图片:
json
{
"model": "控制台显示的视觉模型",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "描述这张图片"},
{
"type": "image_url",
"image_url": {"url": "https://example.com/image.jpg"}
}
]
}
]
}图片也可以使用 data:image/...;base64,... 数据 URI,但会增大请求体。图片格式、大小和当前模型限制以控制台和模型实际要求为准。若目标是生成或修改图片,请看AI 生图工作台或直接调用生图 API,不要把视觉输入请求当作生图请求。
流式输出
在 Chat Completions 请求中加入 stream: true:
json
{
"model": "控制台显示的模型名称",
"stream": true,
"messages": [
{"role": "user", "content": "用三句话介绍 Lunora"}
]
}响应是 Server-Sent Events。客户端需要持续读取事件,直到收到结束标记;不要把流式响应当作一个一次性 JSON 直接解析。流式只改变响应传输方式,不会绕过余额、订阅、分组权限或渠道状态检查。
Function Calling 和工具调用
支持工具调用的模型可以在请求中声明 tools:
json
{
"model": "控制台显示的工具调用模型",
"messages": [
{"role": "user", "content": "查询北京天气"}
],
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "查询指定城市的天气",
"parameters": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"]
}
}
}
]
}收到 tool_calls 后,由你的应用执行本地函数,再按目标协议把工具结果作为下一轮消息提交。Lunora 只负责兼容转发和记录请求,不会替你的应用执行任意函数。不同上游对工具、并行调用和结构化输出的支持可能不同,先用当前可用模型做短测试。
Responses API
Responses 使用独立路径和请求格式:
bash
curl -sS https://api.uselunora.com/v1/responses \
-H "Authorization: Bearer $LUNORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "控制台显示的 Responses 模型",
"input": "请只回复:连接成功"
}'Codex 配置时,base_url 使用不带 /v1 的 API 根地址,并按Codex 接入使用 wire_api = "responses"。不要把 Chat Completions 的 messages 示例直接复制到 Responses 客户端;客户端会负责生成对应格式。
需要显式区分 developer 和 user 消息时,input 使用数组:
json
{
"model": "控制台显示的 Responses 模型",
"input": [
{
"type": "message",
"role": "developer",
"content": [
{"type": "input_text", "text": "只输出简短答案"}
]
},
{
"type": "message",
"role": "user",
"content": [
{"type": "input_text", "text": "请只回复:连接成功"}
]
}
]
}请求方法是 POST,请求头仍为 Content-Type: application/json 和 Authorization: Bearer <API Key>。不要把真实 Key 写进 JSON 或代码仓库。
图片生成和编辑
文生图最小请求:
bash
curl -sS https://api.uselunora.com/v1/images/generations \
-H "Authorization: Bearer $LUNORA_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "控制台显示的生图模型",
"prompt": "赤陶橙暖色调,一位在窗边使用电脑的创作者,电影光线",
"size": "页面当前支持的尺寸"
}'返回结果可能包含图片 URL,也可能包含 data[0].b64_json。先保存完整响应,再根据实际字段下载或解码。图片编辑使用 multipart/form-data 上传原图和提示词;字段与支持的参数以当前模型和控制台页面为准。
图片编辑示例:
bash
curl -sS https://api.uselunora.com/v1/images/edits \
-H "Authorization: Bearer $LUNORA_API_KEY" \
-F "model=控制台显示的生图模型" \
-F "image=@input.png" \
-F "prompt=保留主体与构图,把背景改成夜晚城市"编辑前先保留原图副本。文件格式、大小、图片数量和输出尺寸必须符合当前模型要求,不要在未确认失败原因时连续重复提交。
网页操作与历史下载见AI 生图工作台,Codex Skill 安装见在 Codex 中生图,完整脚本流程见直接调用生图 API。本页只保留接口速查,不重复各自的安装和操作步骤。
视频生成
视频接口使用异步任务。OpenAI 兼容和 Omni 模型通过 POST /v1/videos 创建任务,Grok 模型通过 POST /v1/video/generations 创建任务;两者的查询路径和成功字段不同。
模型列表、请求字段、参考图或视频上传、任务轮询和成片下载的完整示例见视频 API。该教程按指定参考资料整理,未发送真实视频生成请求;可用模型、参数和计费规则以控制台当前显示为准。
其他工具的接入位置
API 根地址和鉴权方式相同,但不同客户端需要不同路径或环境变量:
- Claude Code 接入:使用
ANTHROPIC_BASE_URL和 Claude Code 对应的配置方式。 - Codex 接入:使用 Responses 配置。
- CC Switch 一键导入:由控制台导入客户端配置。
- Codex++ 接入:在供应商配置中选择协议。
- WorkBuddy 接入:按客户端字段填写完整聊天端点。
- OpenCode 接入:使用 OpenAI 兼容 Provider 和本地凭证管理。
- Cherry Studio 接入:在图形界面添加 Responses 或 Chat Provider。
- Kilo Code 接入:在 IDE 插件中配置 Responses,并保持自动批准关闭。
- OpenClaw 接入:配置智能体网关、默认模型和工作目录。
- Claude Code 调用 Codex 模型:通过本地 ccNexus 做协议转换。
- Gemini CLI 接入:使用 Gemini 原生兼容地址和环境变量。
- Trae 接入:添加 OpenAI 或 Claude 格式的自定义模型。
不同客户端的地址、协议和字段并不相同。不要把某个客户端的字段名直接复制到另一个客户端。
错误排查
| 状态 | 优先检查 |
|---|---|
401 | Key 是否完整、启用,鉴权头是否为 Bearer |
403 | Key 分组是否包含目标模型或生图能力 |
404 | API 根地址、/v1 和具体路径是否重复或缺失 |
429 | 并发、余额、订阅额度和渠道限制 |
502 / 503 | 可用渠道、上游状态和当前模型 |
| 返回 HTML | 是否误用了控制台网址而不是 API 地址 |
排查时记录请求时间、模型、接口路径、状态码和请求 ID,不要提交完整 API Key、完整图片数据或包含敏感信息的请求体。更多通用排查见常见问题。