curl --request POST \
--url https://api.ttapi.io/v1/images/edits \
--header 'Content-Type: application/json' \
--header 'TT-API-KEY: <api-key>' \
--data '
{
"images": [
{
"file_id": "<string>",
"image_url": "<string>"
}
],
"prompt": "<string>",
"mask": {
"file_id": "<string>",
"image_url": "<string>"
},
"background": "auto",
"input_fidelity": "low",
"moderation": "auto",
"n": 123,
"output_compression": 100,
"output_format": "png",
"partial_images": 0,
"quality": "auto",
"size": "auto",
"stream": false,
"user": "<string>"
}
'import requests
url = "https://api.ttapi.io/v1/images/edits"
payload = {
"images": [
{
"file_id": "<string>",
"image_url": "<string>"
}
],
"prompt": "<string>",
"mask": {
"file_id": "<string>",
"image_url": "<string>"
},
"background": "auto",
"input_fidelity": "low",
"moderation": "auto",
"n": 123,
"output_compression": 100,
"output_format": "png",
"partial_images": 0,
"quality": "auto",
"size": "auto",
"stream": False,
"user": "<string>"
}
headers = {
"TT-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'TT-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
images: [{file_id: '<string>', image_url: '<string>'}],
prompt: '<string>',
mask: {file_id: '<string>', image_url: '<string>'},
background: 'auto',
input_fidelity: 'low',
moderation: 'auto',
n: 123,
output_compression: 100,
output_format: 'png',
partial_images: 0,
quality: 'auto',
size: 'auto',
stream: false,
user: '<string>'
})
};
fetch('https://api.ttapi.io/v1/images/edits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ttapi.io/v1/images/edits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'images' => [
[
'file_id' => '<string>',
'image_url' => '<string>'
]
],
'prompt' => '<string>',
'mask' => [
'file_id' => '<string>',
'image_url' => '<string>'
],
'background' => 'auto',
'input_fidelity' => 'low',
'moderation' => 'auto',
'n' => 123,
'output_compression' => 100,
'output_format' => 'png',
'partial_images' => 0,
'quality' => 'auto',
'size' => 'auto',
'stream' => false,
'user' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"TT-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ttapi.io/v1/images/edits"
payload := strings.NewReader("{\n \"images\": [\n {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n }\n ],\n \"prompt\": \"<string>\",\n \"mask\": {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n },\n \"background\": \"auto\",\n \"input_fidelity\": \"low\",\n \"moderation\": \"auto\",\n \"n\": 123,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"partial_images\": 0,\n \"quality\": \"auto\",\n \"size\": \"auto\",\n \"stream\": false,\n \"user\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("TT-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ttapi.io/v1/images/edits")
.header("TT-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"images\": [\n {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n }\n ],\n \"prompt\": \"<string>\",\n \"mask\": {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n },\n \"background\": \"auto\",\n \"input_fidelity\": \"low\",\n \"moderation\": \"auto\",\n \"n\": 123,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"partial_images\": 0,\n \"quality\": \"auto\",\n \"size\": \"auto\",\n \"stream\": false,\n \"user\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ttapi.io/v1/images/edits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["TT-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"images\": [\n {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n }\n ],\n \"prompt\": \"<string>\",\n \"mask\": {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n },\n \"background\": \"auto\",\n \"input_fidelity\": \"low\",\n \"moderation\": \"auto\",\n \"n\": 123,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"partial_images\": 0,\n \"quality\": \"auto\",\n \"size\": \"auto\",\n \"stream\": false,\n \"user\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1713833628,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TpSItDnaQIpKhOlkQVFIwU8CR1NZBLi4iFg8B4R33PTK77Z22p22e+628923923f/jH53eV73923/..."
}
],
"usage": {
"total_tokens": 100,
"input_tokens": 50,
"output_tokens": 50,
"input_tokens_details": {
"text_tokens": 10,
"image_tokens": 40
}
}
}{
"status": "FAILED",
"message": "\"prompt\" cannot be empty.",
"data": {}
}{
"status": "FAILED",
"message": "Wrong TT-API-KEY or email is not activated."
}OpenAI Images Edits
curl --request POST \
--url https://api.ttapi.io/v1/images/edits \
--header 'Content-Type: application/json' \
--header 'TT-API-KEY: <api-key>' \
--data '
{
"images": [
{
"file_id": "<string>",
"image_url": "<string>"
}
],
"prompt": "<string>",
"mask": {
"file_id": "<string>",
"image_url": "<string>"
},
"background": "auto",
"input_fidelity": "low",
"moderation": "auto",
"n": 123,
"output_compression": 100,
"output_format": "png",
"partial_images": 0,
"quality": "auto",
"size": "auto",
"stream": false,
"user": "<string>"
}
'import requests
url = "https://api.ttapi.io/v1/images/edits"
payload = {
"images": [
{
"file_id": "<string>",
"image_url": "<string>"
}
],
"prompt": "<string>",
"mask": {
"file_id": "<string>",
"image_url": "<string>"
},
"background": "auto",
"input_fidelity": "low",
"moderation": "auto",
"n": 123,
"output_compression": 100,
"output_format": "png",
"partial_images": 0,
"quality": "auto",
"size": "auto",
"stream": False,
"user": "<string>"
}
headers = {
"TT-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'TT-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
images: [{file_id: '<string>', image_url: '<string>'}],
prompt: '<string>',
mask: {file_id: '<string>', image_url: '<string>'},
background: 'auto',
input_fidelity: 'low',
moderation: 'auto',
n: 123,
output_compression: 100,
output_format: 'png',
partial_images: 0,
quality: 'auto',
size: 'auto',
stream: false,
user: '<string>'
})
};
fetch('https://api.ttapi.io/v1/images/edits', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.ttapi.io/v1/images/edits",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'images' => [
[
'file_id' => '<string>',
'image_url' => '<string>'
]
],
'prompt' => '<string>',
'mask' => [
'file_id' => '<string>',
'image_url' => '<string>'
],
'background' => 'auto',
'input_fidelity' => 'low',
'moderation' => 'auto',
'n' => 123,
'output_compression' => 100,
'output_format' => 'png',
'partial_images' => 0,
'quality' => 'auto',
'size' => 'auto',
'stream' => false,
'user' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"TT-API-KEY: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.ttapi.io/v1/images/edits"
payload := strings.NewReader("{\n \"images\": [\n {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n }\n ],\n \"prompt\": \"<string>\",\n \"mask\": {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n },\n \"background\": \"auto\",\n \"input_fidelity\": \"low\",\n \"moderation\": \"auto\",\n \"n\": 123,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"partial_images\": 0,\n \"quality\": \"auto\",\n \"size\": \"auto\",\n \"stream\": false,\n \"user\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("TT-API-KEY", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.ttapi.io/v1/images/edits")
.header("TT-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"images\": [\n {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n }\n ],\n \"prompt\": \"<string>\",\n \"mask\": {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n },\n \"background\": \"auto\",\n \"input_fidelity\": \"low\",\n \"moderation\": \"auto\",\n \"n\": 123,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"partial_images\": 0,\n \"quality\": \"auto\",\n \"size\": \"auto\",\n \"stream\": false,\n \"user\": \"<string>\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.ttapi.io/v1/images/edits")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["TT-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"images\": [\n {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n }\n ],\n \"prompt\": \"<string>\",\n \"mask\": {\n \"file_id\": \"<string>\",\n \"image_url\": \"<string>\"\n },\n \"background\": \"auto\",\n \"input_fidelity\": \"low\",\n \"moderation\": \"auto\",\n \"n\": 123,\n \"output_compression\": 100,\n \"output_format\": \"png\",\n \"partial_images\": 0,\n \"quality\": \"auto\",\n \"size\": \"auto\",\n \"stream\": false,\n \"user\": \"<string>\"\n}"
response = http.request(request)
puts response.read_body{
"created": 1713833628,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAYAAAAf8/9hAAABhWlDQ1BJQ0MgcHJvZmlsZQAAKJF9kT1Iw0AcxV9TpSItDnaQIpKhOlkQVFIwU8CR1NZBLi4iFg8B4R33PTK77Z22p22e+628923923f/jH53eV73923/..."
}
],
"usage": {
"total_tokens": 100,
"input_tokens": 50,
"output_tokens": 50,
"input_tokens_details": {
"text_tokens": 10,
"image_tokens": 40
}
}
}{
"status": "FAILED",
"message": "\"prompt\" cannot be empty.",
"data": {}
}{
"status": "FAILED",
"message": "Wrong TT-API-KEY or email is not activated."
}POST /v1/images/edits 请求和响应结构保持一致。文档翻译自 官方文档。”,
支持模型包括 gpt-image-2、gpt-image-1.5、gpt-image-1 和 dall-e-2。
请求体
要编辑的输入图片引用。GPT Image 模型最多可提供 16 张图片。每个对象需提供 file_id 或 image_url。
Show child attributes
Show child attributes
描述目标编辑结果的文本提示。GPT Image 模型最多支持 32000 个字符;dall-e-2 最多支持 1000 个字符。
用于图像编辑的模型。
gpt-image-2, gpt-image-1.5, gpt-image-1 可选蒙版图片引用。需且仅需提供 file_id 或 image_url 之一。
Show child attributes
Show child attributes
设置输出图像背景的透明度。仅适用于 GPT Image 模型。可选 transparent、opaque 或 auto(默认)。透明背景需要 png 或 webp 输出格式。
transparent, opaque, auto 控制输入图像细节保留程度。可选 high 或 low,默认值为 low。仅适用于 GPT Image 模型。
high, low GPT Image 模型的审核级别。可选 low 或 auto。
low, auto 要生成的图像数量,默认值为 1。可选范围 1-10。
生成图像的压缩级别(0-100)。仅适用于 output_format 为 webp 或 jpeg 的 GPT Image 模型,默认值为 100。
生成图像的返回格式。仅适用于 GPT Image 模型。可选 png(默认)、jpeg 或 webp。
png, jpeg, webp 流式响应中要返回的部分图片数量,范围 0-3,默认值为 0。仅当 stream 为 true 时可用。
图像质量。auto(默认)会为给定模型自动选择最佳质量。
GPT Image 模型支持 high、medium、low;
dall-e-2 仅支持 standard。
返回数据格式。仅 dall-e-2 支持 url 或 b64_json;URL 有效期为 60 分钟。GPT Image 模型始终返回 b64_json。
url, b64_json 图像尺寸。
GPT Image 模型支持 1024x1024、1536x1024、1024x1536、auto(默认);
dall-e-2 支持 256x256、512x512、1024x1024。
是否以流式方式返回编辑进度。启用后可通过 partial_images 获取部分图片事件。
代表最终用户的唯一标识,可帮助 OpenAI 监测和检测滥用。
响应
请求成功,返回Base64格式图像生成结果(当前仅支持该格式)