Miloapi 使用文档Miloapi 使用文档
🚀 快速开始
🌐 Miloapi 官网
💬 客服微信 Yeesleeve
🚀 快速开始
🌐 Miloapi 官网
💬 客服微信 Yeesleeve
  • 快速开始

    • 快速开始
  • 客户端配置

    • Claude Code CLI
    • OpenAI Codex CLI
    • OpenAI Codex 桌面版
    • Gemini CLI
    • Antigravity CLI / IDE
    • CC-Switch · 多 endpoint 切换工具
    • Cherry Studio
    • Cursor
    • OpenCode
    • OpenClaw · 多渠道 AI 机器人
    • Hermes Agent
    • Claude Desktop
    • Open WebUI
  • 智能工作台

    • 智能工作台
  • 编程调用

    • API 直接调用
  • 计费与帮助

    • 余额与计费
    • 常见问题

API 直接调用

不用任何客户端,直接拿 curl / Python / Node.js 调。

💡 想在网页里点点鼠标就能聊?用 智能工作台 —— 零代码,带 Prompt 库 / 模型预设 / Skills / 本地记忆,网页里直接聊 + 生图 + 跑视频。

端点速查

协议端点用什么客户端
POST /v1/chat/completionsOpenAI Chat CompletionsOpenAI SDK / Cursor / Cherry / Open WebUI / Codex
POST /v1/messagesAnthropic MessagesAnthropic SDK / Claude Code / Claude Desktop
POST /v1/images/generationsOpenAI Images生图客户端
POST /v1/images/editsOpenAI Images Edit图生图客户端
POST /v1/embeddingsOpenAI Embeddings向量数据库
POST /v1/responsesOpenAI Responses新版 Codex CLI
GET /v1/models列出可用模型各客户端的「检查」按钮
POST /v1beta/models/{model}:generateContentGoogle Gemini NativeGemini CLI / Gemini SDK

💡 Gemini 分组三协议互通:同一把 Gemini Key 既可以用 /v1beta(Google 原生)、也可以用 /v1/chat/completions(OpenAI 兼容)、还可以用 /v1/messages(Anthropic 兼容)。model 字段统一写 Gemini 模型 ID(如 gemini-2.5-pro / gemini-3-pro-preview),网关自动桥接到 Code Assist。详见 §1.6 和 §5。


1. curl

1.1 OpenAI 兼容协议(对话)

curl https://www.miloapi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-你的key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [{"role": "user", "content": "你好"}]
  }'

1.2 Anthropic 原生协议(对话)

curl https://www.miloapi.com/v1/messages \
  -H "x-api-key: sk-你的claude-max-key" \
  -H "anthropic-version: 2023-06-01" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-opus-4-7",
    "max_tokens": 1024,
    "messages": [{"role": "user", "content": "你好"}]
  }'

1.3 生图

curl https://www.miloapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-你的gpt-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只橙色的猫坐在窗台上,水彩风格",
    "n": 1,
    "size": "1024x1024"
  }'

⚠️ 生图只接受 gpt-image-1 / gpt-image-2 这种型号,不接受 dall-e-2 / dall-e-3(OpenAI 已于 2026-05-12 下线)。

各模型支持的尺寸 / 参数

模型尺寸qualitybackgroundoutput_formatn
gpt-image-11K (1024×1024, 1536×1024, 1024×1536) + 2K (2048×2048/1152/...)auto/low/medium/highauto/opaque/transparentpng/jpeg/webp1-10
gpt-image-2上述 + 4K(3840×2160 / 2160×3840)auto/low/medium/highauto/opaque/transparentpng/jpeg/webp1-10

像素预算限制:

  • gpt-image-1 上限约 4M 像素,4K 尺寸会返回 400 Invalid size: exceeds the current pixel budget
  • gpt-image-2 上限约 8M 像素,4096×4096(16.7M)也会被拒;只能用 16:9 / 9:16 的 4K
  • 要稳出 4K → 选 gpt-image-2 + 3840x2160 或 2160x3840

1.4 图片生成 n>1 批量

公开 OpenAI 文档说 /v1/images/generations 的 n 参数支持 1-10。直接对接 chatgpt.com 上游不支持(它走 Codex image_generation 工具,schema 里没有 n,返回 400 Unknown parameter: 'tools[0].n')。

Miloapi 网关补齐了这一能力: 当请求 n>1 且 stream=false 时,后端会:

  1. 内部串行发起 N 次 n=1 请求
  2. 每个 slot 独立走 failover(失败可自动换账号)
  3. 每张图独立计费(失败的不收费)
  4. 聚合成标准 OpenAI 响应返回
curl https://www.miloapi.com/v1/images/generations \
  -H "Authorization: Bearer sk-你的gpt-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-image-2",
    "prompt": "一只橙色的猫",
    "n": 8,
    "size": "1024x1024",
    "stream": false
  }'

响应:

{
  "created": 1779431690,
  "data": [
    { "b64_json": "..." },
    { "b64_json": "..." },
    ...
  ],
  "size": "1024x1024",
  "delivered_count": 8,
  "usage": { "total_tokens": ..., "input_tokens": ..., "output_tokens": ... }
}

约束:

  • 仅 stream=false 模式生效(stream=true + n>1 仍走单图路径)
  • 总时长 ≈ 单图时长 × N(串行,非并行)
  • 部分失败仍返回 200 + 已成功的张数 + delivered_count 字段
  • 全部失败时返回第一个 slot 的真实错误(400/502 透传)
  • /v1/images/edits(图生图)暂不支持 n>1 fan-out,客户端自行循环

1.5 列出可用模型

curl https://www.miloapi.com/v1/models \
  -H "Authorization: Bearer sk-你的key"

1.6 Gemini 原生协议(对话)

curl "https://www.miloapi.com/v1beta/models/gemini-2.5-pro:generateContent" \
  -H "x-goog-api-key: sk-你的gemini-key" \
  -H "Content-Type: application/json" \
  -d '{
    "contents": [{"parts": [{"text": "你好"}]}]
  }'

⚠️ Gemini 原生路径用 /v1beta(不是 /v1),鉴权用 x-goog-api-key(不是 Authorization)。如果你想用 OpenAI 或 Anthropic SDK 调 Gemini,不要走这条路,直接看 §6。


2. Python

2.1 OpenAI SDK

from openai import OpenAI

client = OpenAI(
    base_url="https://www.miloapi.com/v1",
    api_key="sk-你的key",
)

resp = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.choices[0].message.content)

2.2 Anthropic SDK

from anthropic import Anthropic

client = Anthropic(
    base_url="https://www.miloapi.com",
    api_key="sk-你的claude-max-key",
)

resp = client.messages.create(
    model="claude-opus-4-7",
    max_tokens=1024,
    messages=[{"role": "user", "content": "你好"}],
)
print(resp.content[0].text)

2.3 流式响应

from openai import OpenAI

client = OpenAI(base_url="https://www.miloapi.com/v1", api_key="sk-你的key")

stream = client.chat.completions.create(
    model="gpt-5.5",
    messages=[{"role": "user", "content": "讲个笑话"}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)

2.4 生图

from openai import OpenAI
import base64

client = OpenAI(base_url="https://www.miloapi.com/v1", api_key="sk-你的gpt-key")

resp = client.images.generate(
    model="gpt-image-2",
    prompt="a cute cat in watercolor style",
    n=1,
    size="1024x1024",
)

# 保存 base64 图片到文件
b64 = resp.data[0].b64_json
with open("cat.png", "wb") as f:
    f.write(base64.b64decode(b64))

3. Node.js

3.1 OpenAI SDK

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://www.miloapi.com/v1",
  apiKey: "sk-你的key",
});

const resp = await client.chat.completions.create({
  model: "gpt-5.5",
  messages: [{ role: "user", content: "你好" }],
});
console.log(resp.choices[0].message.content);

3.2 Anthropic SDK

import Anthropic from "@anthropic-ai/sdk";

const client = new Anthropic({
  baseURL: "https://www.miloapi.com",
  apiKey: "sk-你的claude-max-key",
});

const msg = await client.messages.create({
  model: "claude-opus-4-7",
  max_tokens: 1024,
  messages: [{ role: "user", content: "你好" }],
});
console.log(msg.content[0].text);

3.3 流式响应

const stream = await client.chat.completions.create({
  model: "gpt-5.5",
  messages: [{ role: "user", content: "讲个笑话" }],
  stream: true,
});
for await (const chunk of stream) {
  process.stdout.write(chunk.choices[0]?.delta?.content || "");
}

4. 可调模型

请填写当前可用的真实模型名(如 gpt-5.5 / claude-opus-4-7 / gemini-3.1-pro-preview),不要用 gpt-4 / claude-3-opus / dall-e-3 这类老名字 —— 它们已下线,调用会直接 4xx 报错。

完整模型清单、当前价格、各模型支持的端点,登录后查看 侧栏 → 可用渠道,或在线参考 API 文档页面。生图请用 gpt-image-2(dall-e-2 / dall-e-3 已停止接入)。


5. Gemini Key 的三种调法

Miloapi 网关给 Gemini 分组的 Key 内置了协议桥接——同一把 Key 可以走 3 种协议入口。给习惯 OpenAI 或 Anthropic SDK 的开发者多一个无成本接入路径。

协议适用场景base_url鉴权
/v1beta (Google 原生)Gemini SDK / Gemini CLI / google-genai 库https://www.miloapi.com/v1betax-goog-api-key
/v1/chat/completions (OpenAI 兼容)OpenAI SDK / LangChain / Cline / Cursor / Continue / Open WebUIhttps://www.miloapi.com/v1Authorization: Bearer
/v1/messages (Anthropic 兼容)Anthropic SDK / Claude Code(不常用)https://www.miloapi.comx-api-key

model 字段统一写 Gemini 模型 ID,比如:

  • gemini-2.5-pro、gemini-2.5-flash、gemini-2.5-flash-image-preview
  • gemini-3-pro-preview、gemini-3-flash-preview
  • gemini-3.1-pro-preview、gemini-3.1-flash-image-preview、gemini-3.1-flash-lite-preview

5.1 用 OpenAI SDK 调 Gemini(推荐给 OpenAI 阵营的用户)

from openai import OpenAI

client = OpenAI(
    base_url="https://www.miloapi.com/v1",
    api_key="sk-你的gemini-key",
)

resp = client.chat.completions.create(
    model="gemini-2.5-pro",  # 或 gemini-3-pro-preview / gemini-3.1-pro-preview
    messages=[{"role": "user", "content": "用三句话解释 OAuth"}],
)
print(resp.choices[0].message.content)

curl 等价:

curl https://www.miloapi.com/v1/chat/completions \
  -H "Authorization: Bearer sk-你的gemini-key" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gemini-2.5-pro",
    "messages": [{"role": "user", "content": "你好"}],
    "stream": true
  }'

5.2 用 Anthropic SDK 调 Gemini

from anthropic import Anthropic

client = Anthropic(
    base_url="https://www.miloapi.com",
    api_key="sk-你的gemini-key",
)

msg = client.messages.create(
    model="gemini-2.5-pro",
    max_tokens=1024,
    messages=[{"role": "user", "content": "用三句话解释 OAuth"}],
)
print(msg.content[0].text)

5.3 用 Gemini SDK / Gemini CLI 原生协议

export GEMINI_API_KEY="sk-你的gemini-key"
export GEMINI_BASE_URL="https://www.miloapi.com/v1beta"
gemini -p "用三句话解释 OAuth"

Gemini CLI 完整教程见 Gemini CLI 客户端。

三个协议的响应格式各不相同(OpenAI Chat chunks / Anthropic SSE / Gemini SSE),SDK 会自动解析——你不需要管底层格式。


6. 错误码

HTTP含义处理
200成功—
400参数错误(尺寸超 budget、不支持的字段等)看 error.message,改请求
401Key 无效 / Key 已删 / 分组不对检查 Key,见 FAQ
403余额不足 / IP 不在白名单充值 / 改白名单
404模型不在当前分组换模型或换 Key 的分组
413请求体超过 256MB减小 body(图生图小图)
429限流等几秒重试,见 FAQ
500网关内部错误联系客服
502上游临时不可用(failover 用尽后)等几秒重试
503当前分组无可用账号换分组或换 Key

每个错误返回都带 error.message 字段,通常能直接看明白原因。

Failover 行为

网关内部对每次请求会自动尝试多个上游账号,失败时切换:

上游错误是否换账号
HTTP 4xx(除 408/429)❌ 不换 — 用户输入问题,换账号也没用
HTTP 408 / 429✅ 换 — 当前账号超时/限流
HTTP 5xx✅ 换
HTTP/2 RST_STREAM(INTERNAL_ERROR 等)✅ 换
TCP reset / 中途 EOF✅ 换
SSE type:"error" + server_error / rate_limit✅ 换
SSE type:"error" + moderation_blocked / invalid_request_error❌ 不换

默认最多切 10 次。所以你看到一个 5xx 通常意味着全部账号都失败了,不是单个账号的暂时性问题。

最近更新:: 2026/5/26 09:50