Skip to content

API 接口参考

本页是接口速查,不重复客户端安装、注册和 API Key 创建步骤。第一次使用请先完成创建 API Key第一次 API 请求

基础信息

项目
API 根地址https://api.uselunora.com
鉴权Authorization: Bearer <你的 API Key>
模型名称以控制台“可用渠道”当前显示为准
内容类型application/json;图片编辑另见接口说明

不要把 API 根地址写成控制台网页地址,也不要把兑换码当作 API Key。模型、分组、倍率和可用状态以控制台实时显示为准。

接口总览

能力方法和路径说明
Chat CompletionsPOST /v1/chat/completions传统聊天补全,支持文本、视觉输入和流式输出
ResponsesPOST /v1/responsesCodex 和 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 openai
python
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 openai
javascript
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/jsonAuthorization: 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 根地址和鉴权方式相同,但不同客户端需要不同路径或环境变量:

不同客户端的地址、协议和字段并不相同。不要把某个客户端的字段名直接复制到另一个客户端。

错误排查

状态优先检查
401Key 是否完整、启用,鉴权头是否为 Bearer
403Key 分组是否包含目标模型或生图能力
404API 根地址、/v1 和具体路径是否重复或缺失
429并发、余额、订阅额度和渠道限制
502 / 503可用渠道、上游状态和当前模型
返回 HTML是否误用了控制台网址而不是 API 地址

排查时记录请求时间、模型、接口路径、状态码和请求 ID,不要提交完整 API Key、完整图片数据或包含敏感信息的请求体。更多通用排查见常见问题

教程内容会随控制台功能持续更新