编辑图像

POST /v1/images/edits/

根据原始图像和提示词创建编辑或扩展图像。原生 OpenAI 格式使用 multipart/form-data 上传文件;具体模型和渠道支持的字段可能不同。

请求参数

请求头

Authorization

使用 Bearer Token 认证。

格式: Authorization: Bearer sk-xxxxxx

请求体使用 multipart/form-data。网关会转发未识别的表单字段,因此同一请求可以携带模型所需的兼容参数。

表单字段

表单字段(8 个)
参数类型默认值说明是否必填
imagefile—要编辑的图像。必须是有效的 PNG、小于 4 MB 且为正方形;未提供遮罩时,图像必须具有透明区域。是
maskfile—遮罩图像。完全透明区域表示要编辑的位置;必须与原始图像尺寸相同。否
promptstring—所需编辑结果的文本描述,最大长度为 1000 个字符。是
nstring未声明要生成的图像数量,必须介于 1 和 10 之间。否
sizestring未声明生成图像的尺寸,具体取值由模型决定。否
response_formatstring未声明生成图像的返回格式,必须为 url 或 b64_json。否
userstring未声明最终用户的唯一标识符。否
modelstring未声明图像模型 ID,例如 dall-e-2;实际可用模型由网关和上游渠道决定。否

请求示例代码

curl -X POST "https://10000router.com/v1/images/edits/" \
  -H "Authorization: Bearer $API_KEY" \
  -F "image=@input.png" \
  -F "mask=@mask.png" \
  -F "prompt=把背景改成蓝天" \
  -F "model=dall-e-2" \
  -F "n=1" \
  -F "size=1024x1024" \
  -F "response_format=url" \
  -F "user=user_123"
const form = new FormData();
form.append("image", document.querySelector("#image").files[0]);
form.append("prompt", "把背景改成蓝天");
form.append("model", "dall-e-2");
form.append("size", "1024x1024");
form.append("response_format", "url");

const response = await fetch("https://10000router.com/v1/images/edits/", {
  method: "POST",
  headers: { Authorization: "Bearer " + process.env.API_KEY },
  body: form
});
const imageResponse = await response.json();
import os
from openai import OpenAI

client = OpenAI(api_key=os.environ["API_KEY"], base_url="https://10000router.com/v1")

with open("input.png", "rb") as image_file, open("mask.png", "rb") as mask_file:
    response = client.post(
        "https://10000router.com/v1/images/edits/",
        headers={"Authorization": "Bearer " + os.environ["API_KEY"]},
        files={"image": image_file, "mask": mask_file},
        data={
            "prompt": "把背景改成蓝天",
            "model": "dall-e-2",
            "size": "1024x1024",
            "response_format": "url",
        },
    )
response.raise_for_status()
print(response)
file, _ := os.Open("input.png")
defer file.Close()
body := &bytes.Buffer{}
writer := multipart.NewWriter(body)
part, _ := writer.CreateFormFile("image", "input.png")
io.Copy(part, file)
writer.WriteField("prompt", "把背景改成蓝天")
writer.WriteField("model", "dall-e-2")
writer.WriteField("response_format", "url")
writer.Close()
req, _ := http.NewRequest("POST", "https://10000router.com/v1/images/edits/", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("API_KEY"))
req.Header.Set("Content-Type", writer.FormDataContentType())
var request = java.net.http.HttpRequest.newBuilder(java.net.URI.create("https://10000router.com/v1/images/edits/"))
    .header("Authorization", "Bearer " + System.getenv("API_KEY"))
    .header("Content-Type", "multipart/form-data")
    .POST(java.net.http.HttpRequest.BodyPublishers.ofFile(java.nio.file.Path.of("input.png"))).build();
var response = java.net.http.HttpClient.newHttpClient().send(request, java.net.http.HttpResponse.BodyHandlers.ofString());
using var client = new HttpClient();
client.DefaultRequestHeaders.Authorization = new("Bearer", Environment.GetEnvironmentVariable("API_KEY"));
using var form = new MultipartFormDataContent();
form.Add(new StreamContent(File.OpenRead("input.png")), "image", "input.png");
form.Add(new StringContent("把背景改成蓝天"), "prompt");
form.Add(new StringContent("dall-e-2"), "model");
var response = await client.PostAsync("https://10000router.com/v1/images/edits/", form);
Console.WriteLine(await response.Content.ReadAsStringAsync());

返回响应

编辑接口返回的 JSON 结构与生成接口一致。

响应示例

{
  "created": 1710000000,
  "data": [
    {
      "url": "https://example.com/edited-image.png",
      "revised_prompt": "把背景改成蓝天"
    }
  ]
}
{
  "error": {
    "message": "image is required",
    "type": "invalid_request_error",
    "param": "image",
    "code": null
  }
}
{
  "error": {
    "message": "Rate limit reached",
    "type": "rate_limit_exceeded",
    "param": null,
    "code": null
  }
}
{
  "error": {
    "message": "Invalid authentication credentials",
    "type": "invalid_request_error",
    "param": null,
    "code": null
  }
}

返回字段参数

顶层字段(3 个)
字段类型说明
createdinteger响应创建时间,Unix 时间戳(秒)。
dataarray<object>编辑后图像数组,数量由 n 决定。
usageobject部分图像模型返回的 token 用量;不保证所有渠道都提供。
data[] 字段(3 个)
字段类型说明
urlstring编辑后图像的临时 URL。
b64_jsonstringBase64 编码的图像数据;请求 response_format=b64_json 且上游支持时出现。
revised_promptstring上游改写后的提示词;部分模型不返回。

流式响应

当请求携带 stream=true 且模型/渠道支持时,响应为 Server-Sent Events,常见事件类型为 image_edit.completed,最后以 data: [DONE] 结束。

results matching ""

    No results matching ""