Zum Hauptinhalt springen
POST
/
v1
/
images
/
generations
curl --request POST \
  --url https://api.apimart.ai/v1/images/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gpt-image-1-official",
    "prompt": "An ancient castle under a starry sky",
    "size": "1:1",
    "quality": "auto",
    "n": 1
  }'
import requests

url = "https://api.apimart.ai/v1/images/generations"

payload = {
    "model": "gpt-image-1-official",
    "prompt": "An ancient castle under a starry sky",
    "size": "1:1",
    "quality": "auto",
    "n": 1
}

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-1-official",
  prompt: "An ancient castle under a starry sky",
  size: "1:1",
  quality: "auto",
  n: 1,
};

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-1-official",
        "prompt":  "An ancient castle under a starry sky",
        "size":    "1:1",
        "quality": "auto",
        "n":       1,
    }

    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-1-official",
          "prompt": "An ancient castle under a starry sky",
          "size": "1:1",
          "quality": "auto",
          "n": 1
        }
        """;

        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-1-official",
    "prompt" => "An ancient castle under a starry sky",
    "size" => "1:1",
    "quality" => "auto",
    "n" => 1
];

$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-1-official",
  prompt: "An ancient castle under a starry sky",
  size: "1:1",
  quality: "auto",
  n: 1
}

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-1-official",
    "prompt": "An ancient castle under a starry sky",
    "size": "1:1",
    "quality": "auto",
    "n": 1
]

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-1-official"",
            ""prompt"": ""An ancient castle under a starry sky"",
            ""size"": ""1:1"",
            ""quality"": ""auto"",
            ""n"": 1
        }";

        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-1-official',
    'prompt': 'An ancient castle under a starry sky',
    'size': '1:1',
    'quality': 'auto',
    'n': 1,
  };

  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-1-official",
  prompt = "An ancient castle under a starry sky",
  size = "1:1",
  quality = "auto",
  n = 1
)

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_01KXXXXXXXXXXXXXXX"
    }
  ]
}
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient balance, please top up and try again",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 403,
    "message": "Access forbidden, you do not have permission to access this resource",
    "type": "permission_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "Bad gateway, server temporarily unavailable",
    "type": "bad_gateway"
  }
}
curl --request POST \
  --url https://api.apimart.ai/v1/images/generations \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '{
    "model": "gpt-image-1-official",
    "prompt": "An ancient castle under a starry sky",
    "size": "1:1",
    "quality": "auto",
    "n": 1
  }'
import requests

url = "https://api.apimart.ai/v1/images/generations"

payload = {
    "model": "gpt-image-1-official",
    "prompt": "An ancient castle under a starry sky",
    "size": "1:1",
    "quality": "auto",
    "n": 1
}

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-1-official",
  prompt: "An ancient castle under a starry sky",
  size: "1:1",
  quality: "auto",
  n: 1,
};

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-1-official",
        "prompt":  "An ancient castle under a starry sky",
        "size":    "1:1",
        "quality": "auto",
        "n":       1,
    }

    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-1-official",
          "prompt": "An ancient castle under a starry sky",
          "size": "1:1",
          "quality": "auto",
          "n": 1
        }
        """;

        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-1-official",
    "prompt" => "An ancient castle under a starry sky",
    "size" => "1:1",
    "quality" => "auto",
    "n" => 1
];

$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-1-official",
  prompt: "An ancient castle under a starry sky",
  size: "1:1",
  quality: "auto",
  n: 1
}

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-1-official",
    "prompt": "An ancient castle under a starry sky",
    "size": "1:1",
    "quality": "auto",
    "n": 1
]

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-1-official"",
            ""prompt"": ""An ancient castle under a starry sky"",
            ""size"": ""1:1"",
            ""quality"": ""auto"",
            ""n"": 1
        }";

        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-1-official',
    'prompt': 'An ancient castle under a starry sky',
    'size': '1:1',
    'quality': 'auto',
    'n': 1,
  };

  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-1-official",
  prompt = "An ancient castle under a starry sky",
  size = "1:1",
  quality = "auto",
  n = 1
)

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_01KXXXXXXXXXXXXXXX"
    }
  ]
}
{
  "error": {
    "code": 400,
    "message": "Invalid request parameters",
    "type": "invalid_request_error"
  }
}
{
  "error": {
    "code": 401,
    "message": "Authentication failed, please check your API key",
    "type": "authentication_error"
  }
}
{
  "error": {
    "code": 402,
    "message": "Insufficient balance, please top up and try again",
    "type": "payment_required"
  }
}
{
  "error": {
    "code": 403,
    "message": "Access forbidden, you do not have permission to access this resource",
    "type": "permission_error"
  }
}
{
  "error": {
    "code": 429,
    "message": "Too many requests, please try again later",
    "type": "rate_limit_error"
  }
}
{
  "error": {
    "code": 500,
    "message": "Internal server error, please try again later",
    "type": "server_error"
  }
}
{
  "error": {
    "code": 502,
    "message": "Bad gateway, server temporarily unavailable",
    "type": "bad_gateway"
  }
}

Unterstützte Modelle

ModellBeschreibungModiBild-zu-BildMax. BilderAbrechnung
gpt-image-1-officialStabilität im Vordergrund, geeignet für allgemeine BildgenerierungText-zu-Bild / Bild-zu-BildUnterstützt4Size × Quality
gpt-image-1.5-officialNeue Version, geeignet für höhere Qualität und komplexe BearbeitungText-zu-Bild / Bild-zu-BildUnterstützt4Size × Quality

Autorisierung

Authorization
string
erforderlich
Alle API-Anfragen erfordern eine Authentifizierung per Bearer TokenAPI-Schlüssel erhalten:Besuchen Sie die Seite zur Verwaltung von API-Schlüsseln, um Ihren API-Schlüssel zu erhaltenFügen Sie Folgendes in Ihren Anfrage-Headern hinzu:
Authorization: Bearer YOUR_API_KEY

Body

model
string
erforderlich
Modellname
  • gpt-image-1-official – Stabilität im Vordergrund, geeignet für allgemeine Bildgenerierung
  • gpt-image-1.5-official – Neue Version, geeignet für höhere Qualität und komplexe Bearbeitung
prompt
string
erforderlich
Textbeschreibung für die Bildgenerierung, unterstützt sowohl Chinesisch als auch Englisch
size
string
Standard:"1:1"
SeitenverhältnisUnterstützte Verhältnisse:
  • 1:1 – Quadrat (Standard)
  • 3:2 – Querformat
  • 2:3 – Hochformat
n
integer
Standard:"1"
Anzahl der zu generierenden BilderBereich: 1–4
  • Werte ≤ 0 werden als 1 behandelt
  • Werte > 4 werden als 4 behandelt
Warnung: Muss eine reine Zahl sein (z. B. 1), keine Anführungszeichen verwenden, sonst tritt ein Fehler auf
quality
string
Standard:"auto"
Bildqualität
  • auto – Automatische Qualitätsauswahl (Standard)
  • low – Schneller, sparsamer
  • medium – Ausgewogenes Verhältnis zwischen Qualität und Kosten
  • high – Höhere Qualität, höhere Kosten
background
string
Standard:"auto"
Hintergrundmodus
  • auto – Automatischer Hintergrund (Standard)
  • opaque – Undurchsichtiger Hintergrund
  • transparent – Transparenter Hintergrund, empfohlen mit Ausgabeformat png
background: transparent kann nicht gleichzeitig mit output_format: jpeg verwendet werden
moderation
string
Standard:"auto"
Moderationsstufe
  • auto – Standard-Moderationsstufe
  • low – Mildere Moderation
output_format
string
Standard:"png"
Ausgabeformat
  • png – Standardformat, geeignet für transparente Hintergründe
  • jpeg – Kleinere Dateigröße, geeignet für allgemeine Bildausgabe
background: transparent kann nicht gleichzeitig mit output_format: jpeg verwendet werden
output_compression
integer
Ausgabe-Kompressionsstufe, Bereich 0–100
  • Nur für jpeg empfohlen
  • Für png nicht empfohlen
image_urls
array
Array von URLs für Referenzbilder, aktiviert bei Angabe den Bild-zu-Bild-ModusLimit: Bis zu 15 Referenzbilder
mask_url
string
Masken-Bild-URL für Inpainting
  • Muss zusammen mit image_urls verwendet werden
  • Wird über die offizielle Bearbeitungs-API übermittelt
  1. Stellen Sie vor dem Hochladen der Maske sicher, dass der Alphakanal des Bildes auf „Ja” gesetzt ist.
  2. Die Größe der Maske muss mit dem ersten Referenzbild übereinstimmen.

Größenreferenz

Seitenverhältnisse werden nach außen verwendet; das System ordnet sie intern automatisch den offiziellen Abmessungen zu.
VerhältnisTatsächliche GrößeBeschreibung
1:11024x1024Quadrat
2:31024x1536Hochformat
3:21536x1024Querformat

Anwendungsbeispiele

Text-zu-Bild (minimal)
{
  "model": "gpt-image-1-official",
  "prompt": "An ancient castle under a starry sky"
}
Text-zu-Bild (vollständige Parameter)
{
  "model": "gpt-image-1-official",
  "prompt": "A flat icon of a glass bottle with no background",
  "size": "2:3",
  "quality": "high",
  "background": "transparent",
  "moderation": "low",
  "output_format": "png",
  "n": 1
}
Bild-zu-Bild (einzelne Referenz)
{
  "model": "gpt-image-1.5-official",
  "prompt": "Convert the reference image to illustration style, preserving the main outline",
  "size": "1:1",
  "quality": "auto",
  "image_urls": [
    "https://your-cdn.com/input.png"
  ],
  "n": 1
}
Bild-zu-Bild (Mehrfachreferenz-Fusion)
{
  "model": "gpt-image-1.5-official",
  "prompt": "Merge two reference images into an illustration poster, preserving the main outlines",
  "size": "1:1",
  "quality": "auto",
  "background": "transparent",
  "image_urls": [
    "https://your-cdn.com/input-a.png",
    "https://your-cdn.com/input-b.png"
  ],
  "moderation": "low",
  "output_format": "png",
  "n": 1
}
Mehrere Bilder (n > 1)
{
  "model": "gpt-image-1-official",
  "prompt": "Four minimalist poster variations of a red fox",
  "size": "1:1",
  "quality": "low",
  "output_format": "png",
  "n": 4
}

Response

code
integer
Statuscode der Antwort
data
array
Array mit Antwortdaten

Hinweise

  1. Asynchrone Verarbeitung: Nach dem Einreichen wird eine task_id zurückgegeben. Pollen Sie /v1/tasks/{task_id}, um die Ergebnisse abzurufen
  2. Modellauswahl: Verwenden Sie gpt-image-1-official für die allgemeine Bildgenerierung; verwenden Sie gpt-image-1.5-official für hochwertige Bearbeitung und komplexe Bild-zu-Bild-Aufgaben
  3. Anforderungen an Bild-URLs: Verwenden Sie für Bild-zu-Bild öffentlich zugängliche und stabile Bild-URLs
  4. Abrechnung: Abrechnung pro erfolgreich generiertem Bild; keine Abrechnung bei Fehlern