# Le champ model peut valoir "gpt-image-2" ou son alias compatible "gpt-image-2-ext"
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "gpt-image-2",
prompt: "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n: 1,
size: "16:9",
resolution: "2k"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/images/generations"
payload := map[string]interface{}{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/images/generations";
String payload = """
{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/images/generations";
$payload = [
"model" => "gpt-image-2",
"prompt" => "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n" => 1,
"size" => "16:9",
"resolution" => "2k"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/images/generations")
payload = {
model: "gpt-image-2",
prompt: "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n: 1,
size: "16:9",
resolution: "2k"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/images/generations")!
let payload: [String: Any] = [
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/images/generations";
var payload = @"{
""model"": ""gpt-image-2"",
""prompt"": ""A ginger cat sitting on a windowsill watching the sunset, watercolor style"",
""n"": 1,
""size"": ""16:9"",
""resolution"": ""2k""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://api.apimart.ai/v1/images/generations');
final payload = {
'model': 'gpt-image-2',
'prompt': 'A ginger cat sitting on a windowsill watching the sunset, watercolor style',
'n': 1,
'size': '16:9',
'resolution': '2k'
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://api.apimart.ai/v1/images/generations"
payload <- list(
model = "gpt-image-2",
prompt = "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n = 1,
size = "16:9",
resolution = "2k"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid parameters: size not allowed / resolution not supported / pixel violation, etc.",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "build_request_failed: invalid size: 3:5, allowed: 1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 / 5:4 / 4:5 / 2:1 / 1:2 / 3:1 / 1:3 / 21:9 / 9:21",
"type": "server_error"
}
}
{
"error": {
"code": 503,
"message": "Upstream temporarily unavailable, please try again later",
"type": "service_unavailable"
}
}
GPT-Image-2
Génération d'images GPT-Image-2
-
Mode de traitement asynchrone, renvoie un ID de tâche pour les requêtes ultérieures
-
Protocole compatible OpenAI Images, prend en charge texte-vers-image / image-vers-image
-
15 ratios d’aspect d’image pris en charge via le champ
size -
Niveau de pixels de sortie contrôlé via
resolution(1k/2k/4k) -
Jusqu’à 16 images de référence, URL et base64 peuvent être mélangés
-
Facturation par niveau de résolution (1K / 2K / 4K)
POST
/
v1
/
images
/
generations
# Le champ model peut valoir "gpt-image-2" ou son alias compatible "gpt-image-2-ext"
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "gpt-image-2",
prompt: "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n: 1,
size: "16:9",
resolution: "2k"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/images/generations"
payload := map[string]interface{}{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/images/generations";
String payload = """
{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/images/generations";
$payload = [
"model" => "gpt-image-2",
"prompt" => "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n" => 1,
"size" => "16:9",
"resolution" => "2k"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/images/generations")
payload = {
model: "gpt-image-2",
prompt: "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n: 1,
size: "16:9",
resolution: "2k"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/images/generations")!
let payload: [String: Any] = [
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/images/generations";
var payload = @"{
""model"": ""gpt-image-2"",
""prompt"": ""A ginger cat sitting on a windowsill watching the sunset, watercolor style"",
""n"": 1,
""size"": ""16:9"",
""resolution"": ""2k""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://api.apimart.ai/v1/images/generations');
final payload = {
'model': 'gpt-image-2',
'prompt': 'A ginger cat sitting on a windowsill watching the sunset, watercolor style',
'n': 1,
'size': '16:9',
'resolution': '2k'
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://api.apimart.ai/v1/images/generations"
payload <- list(
model = "gpt-image-2",
prompt = "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n = 1,
size = "16:9",
resolution = "2k"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid parameters: size not allowed / resolution not supported / pixel violation, etc.",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "build_request_failed: invalid size: 3:5, allowed: 1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 / 5:4 / 4:5 / 2:1 / 1:2 / 3:1 / 1:3 / 21:9 / 9:21",
"type": "server_error"
}
}
{
"error": {
"code": 503,
"message": "Upstream temporarily unavailable, please try again later",
"type": "service_unavailable"
}
}
Alias de modèle compatible : cette API prend également en charge l’alias
gpt-image-2-ext, équivalent à gpt-image-2 ; les deux sont interchangeables et produisent des résultats identiques.# Le champ model peut valoir "gpt-image-2" ou son alias compatible "gpt-image-2-ext"
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.json())
const url = "https://api.apimart.ai/v1/images/generations";
const payload = {
model: "gpt-image-2",
prompt: "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n: 1,
size: "16:9",
resolution: "2k"
};
const headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
};
fetch(url, {
method: "POST",
headers: headers,
body: JSON.stringify(payload)
})
.then(response => response.json())
.then(data => console.log(data))
.catch(error => console.error('Error:', error));
package main
import (
"bytes"
"encoding/json"
"fmt"
"io/ioutil"
"net/http"
)
func main() {
url := "https://api.apimart.ai/v1/images/generations"
payload := map[string]interface{}{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k",
}
jsonData, _ := json.Marshal(payload)
req, _ := http.NewRequest("POST", url, bytes.NewBuffer(jsonData))
req.Header.Set("Authorization", "Bearer <token>")
req.Header.Set("Content-Type", "application/json")
client := &http.Client{}
resp, err := client.Do(req)
if err != nil {
panic(err)
}
defer resp.Body.Close()
body, _ := ioutil.ReadAll(resp.Body)
fmt.Println(string(body))
}
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
import java.net.URI;
public class Main {
public static void main(String[] args) throws Exception {
String url = "https://api.apimart.ai/v1/images/generations";
String payload = """
{
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
}
""";
HttpClient client = HttpClient.newHttpClient();
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create(url))
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.POST(HttpRequest.BodyPublishers.ofString(payload))
.build();
HttpResponse<String> response = client.send(request,
HttpResponse.BodyHandlers.ofString());
System.out.println(response.body());
}
}
<?php
$url = "https://api.apimart.ai/v1/images/generations";
$payload = [
"model" => "gpt-image-2",
"prompt" => "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n" => 1,
"size" => "16:9",
"resolution" => "2k"
];
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($payload));
curl_setopt($ch, CURLOPT_HTTPHEADER, [
"Authorization: Bearer <token>",
"Content-Type: application/json"
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
?>
require 'net/http'
require 'json'
require 'uri'
url = URI("https://api.apimart.ai/v1/images/generations")
payload = {
model: "gpt-image-2",
prompt: "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n: 1,
size: "16:9",
resolution: "2k"
}
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Authorization"] = "Bearer <token>"
request["Content-Type"] = "application/json"
request.body = payload.to_json
response = http.request(request)
puts response.body
import Foundation
let url = URL(string: "https://api.apimart.ai/v1/images/generations")!
let payload: [String: Any] = [
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
"n": 1,
"size": "16:9",
"resolution": "2k"
]
var request = URLRequest(url: url)
request.httpMethod = "POST"
request.setValue("Bearer <token>", forHTTPHeaderField: "Authorization")
request.setValue("application/json", forHTTPHeaderField: "Content-Type")
request.httpBody = try? JSONSerialization.data(withJSONObject: payload)
let task = URLSession.shared.dataTask(with: request) { data, response, error in
if let error = error {
print("Error: \(error)")
return
}
if let data = data, let responseString = String(data: data, encoding: .utf8) {
print(responseString)
}
}
task.resume()
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
var url = "https://api.apimart.ai/v1/images/generations";
var payload = @"{
""model"": ""gpt-image-2"",
""prompt"": ""A ginger cat sitting on a windowsill watching the sunset, watercolor style"",
""n"": 1,
""size"": ""16:9"",
""resolution"": ""2k""
}";
using var client = new HttpClient();
client.DefaultRequestHeaders.Add("Authorization", "Bearer <token>");
var content = new StringContent(payload, Encoding.UTF8, "application/json");
var response = await client.PostAsync(url, content);
var result = await response.Content.ReadAsStringAsync();
Console.WriteLine(result);
}
}
import 'dart:convert';
import 'package:http/http.dart' as http;
void main() async {
final url = Uri.parse('https://api.apimart.ai/v1/images/generations');
final payload = {
'model': 'gpt-image-2',
'prompt': 'A ginger cat sitting on a windowsill watching the sunset, watercolor style',
'n': 1,
'size': '16:9',
'resolution': '2k'
};
final response = await http.post(
url,
headers: {
'Authorization': 'Bearer <token>',
'Content-Type': 'application/json'
},
body: jsonEncode(payload),
);
print(response.body);
}
library(httr)
library(jsonlite)
url <- "https://api.apimart.ai/v1/images/generations"
payload <- list(
model = "gpt-image-2",
prompt = "A ginger cat sitting on a windowsill watching the sunset, watercolor style",
n = 1,
size = "16:9",
resolution = "2k"
)
response <- POST(
url,
add_headers(
Authorization = "Bearer <token>",
`Content-Type` = "application/json"
),
body = toJSON(payload, auto_unbox = TRUE),
encode = "raw"
)
cat(content(response, "text"))
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA"
}
]
}
{
"error": {
"code": 400,
"message": "Invalid parameters: size not allowed / resolution not supported / pixel violation, etc.",
"type": "invalid_request_error"
}
}
{
"error": {
"code": 401,
"message": "Authentication failed, please check your API key",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Insufficient account balance, please top up and try again",
"type": "payment_required"
}
}
{
"error": {
"code": 429,
"message": "Too many requests, please try again later",
"type": "rate_limit_error"
}
}
{
"error": {
"code": 500,
"message": "build_request_failed: invalid size: 3:5, allowed: 1:1 / 16:9 / 9:16 / 4:3 / 3:4 / 3:2 / 2:3 / 5:4 / 4:5 / 2:1 / 1:2 / 3:1 / 1:3 / 21:9 / 9:21",
"type": "server_error"
}
}
{
"error": {
"code": 503,
"message": "Upstream temporarily unavailable, please try again later",
"type": "service_unavailable"
}
}
Autorisations
Tous les points de terminaison nécessitent une authentification Bearer TokenObtenir votre clé API :Rendez-vous sur la page de gestion des clés API pour obtenir votre clé APIIncluez-la dans l’en-tête de la requête :
Authorization: Bearer YOUR_API_KEY
Body
Nom du modèle de génération d’imagesFixé à
gpt-image-2 (alias compatible gpt-image-2-ext)Pour assurer la compatibilité avec les anciens appels, l’alias
gpt-image-2-ext (correspondant à gpt-image-2) reste utilisable normalement.Description textuelle pour la génération d’images
- Prend en charge l’anglais et le chinois, des descriptions détaillées sont recommandées
- Modération de contenu / examen de sécurité avant soumission — les violations sont rejetées immédiatement
Nombre d’images à générerPlage :
1 - 10Doit être un nombre brut (par exemple
1), ne pas mettre entre guillemetsRatio d’aspect de l’imageRatios pris en charge, plus
Les dimensions en pixels peuvent également être transmises directement, par exemple
auto pour laisser le serveur choisir automatiquement un ratio adapté :| size | Type |
|---|---|
auto | Automatique |
1:1 | Carré |
3:2 | Paysage |
2:3 | Portrait |
4:3 | Paysage |
3:4 | Portrait |
5:4 | Paysage |
4:5 | Portrait |
16:9 | Paysage |
9:16 | Portrait |
2:1 | Paysage |
1:2 | Portrait |
3:1 | Paysage |
1:3 | Portrait |
21:9 | Paysage |
9:21 | Portrait |
1881x836 / 887x1774.Lorsque
size est défini sur auto, le ratio par défaut est 1:1.Niveau de résolution de sortieOptions :
1k / 2k / 4kCorrespondance size × resolution → pixels réels :| size | 1k | 2k | 4k |
|---|---|---|---|
1:1 | 1024×1024 / 1254×1254 | 2048×2048 | 2880×2880 |
3:2 | 1536×1024 | 2048×1360 | 3520×2336 |
2:3 | 1024×1536 | 1360×2048 | 2336×3520 |
4:3 | 1024×768 | 2048×1536 | 3312×2480 |
3:4 | 768×1024 | 1536×2048 | 2480×3312 |
5:4 | 1280×1024 / 1448×1086 | 2560×2048 | 3216×2576 |
4:5 | 1024×1280 / 1122×1402 | 2048×2560 | 2576×3216 |
16:9 | 1536×864 / 1672×941 | 2048×1152 | 3840×2160 |
9:16 | 864×1536 / 941×1672 | 1152×2048 | 2160×3840 |
2:1 | 2048×1024 / 1774×887 | 2688×1344 | 3840×1920 |
1:2 | 1024×2048 / 887×1774 | 1344×2688 | 1920×3840 |
3:1 | 1881×836 / 1536×512 | 3072×1024 | 3840×1280 |
1:3 | 887×1774 / 512×1536 | 1024×3072 | 1280×3840 |
21:9 | 2016×864 / 1915×821 | 2688×1152 | 3840×1648 |
9:21 | 864×2016 / 821×1915 | 1152×2688 | 1648×3840 |
La 4K prend en charge les 15 ratios listés ci-dessus ; vous pouvez également transmettre les dimensions en pixels du tableau directement via
size.Tableau d’images de référence (champ standard OpenAI). Passe en mode image-vers-image lorsqu’il est fourni.
Afficher Détails
Afficher Détails
- Jusqu’à 16 images de référence, le dépassement renvoie
image_urls exceeds max 16 - 20 Mo maximum par image, 256 Mo au total
- Prend en charge
URL d'image(lien public stable) - Prend en charge
base64 data URI(par exempledata:image/png;base64,...) - URL et base64 peuvent être mélangés dans le même tableau, traité par le serveur
- Sans
size, résolution de sortie = résolution de l’image d’entrée ; avecsize, la sortie est forcée au ratio spécifié
Les autres champs standard OpenAI (
response_format, style) ne sont pas pris en charge et seront ignorés. Les résultats des tâches ne renvoient que url — veuillez télécharger et convertir en base64 vous-même si nécessaire.Faut-il basculer vers le canal officiel
false: Ne pas utiliser (par défaut)true: Utiliser le canal officiel
Exemples d’utilisation
Texte-vers-image (requête minimale){
"model": "gpt-image-2",
"prompt": "A ginger cat sitting on a windowsill watching the sunset, watercolor style"
}
{
"model": "gpt-image-2",
"prompt": "a corgi astronaut on the moon, cinematic, 8k",
"size": "16:9",
"resolution": "2k"
}
{
"model": "gpt-image-2",
"prompt": "An ancient castle under a starry sky",
"size": "16:9",
"resolution": "4k"
}
{
"model": "gpt-image-2",
"prompt": "An ancient castle under a starry sky",
"size": "16:9",
"resolution": "4k",
"n": 2
}
{
"model": "gpt-image-2",
"prompt": "Turn this photo into a watercolor painting",
"image_urls": [
"https://example.com/photo.jpg"
]
}
{
"model": "gpt-image-2",
"prompt": "Turn this photo into a watercolor painting",
"image_urls": [
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
]
}
{
"model": "gpt-image-2",
"prompt": "Fuse these two photos into a single poster",
"size": "4:3",
"resolution": "2k",
"image_urls": [
"https://example.com/photo-a.jpg",
"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAA..."
]
}
Response
Code de statut de la réponse
Interrogation des résultats de tâche
Après une soumission réussie, untask_id est renvoyé. Interrogez l’état de la tâche via GET /v1/tasks/{task_id}, voir API d’interrogation des tâches pour plus de détails.
Exemple de réponse en cas de succès
{
"code": 200,
"data": {
"id": "task_01KPQ7J7DWB7QZ3WCEK3YVPBRA",
"status": "completed",
"progress": 100,
"created": 1776748674,
"completed": 1776748726,
"actual_time": 52,
"cost": 0.05279,
"credits_cost": 0.5279,
"estimated_time": 100,
"result": {
"images": [
{
"url": [
"https://upload.apimart.ai/f/image/xxxxxxxx-gpt_image_2_task_xxx_0.png"
],
"expires_at": 1776835126
}
]
}
}
}
data.result.images[0].url[0]
Statuts de tâche
| Statut | Signification |
|---|---|
submitted | Soumise |
processing | En cours de traitement en amont |
completed | Succès, result.images disponible |
failed | Échec, voir error.message |
⌘I