curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-2-pro",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}
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: "flux-2-pro",
prompt: "A blue cat on the grass",
resolution: "2MP",
size: "16:9"
};
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen. Überprüfen Sie Ihren API-Key.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Guthaben. Bitte laden Sie Ihr Konto auf.",
"type": "payment_required"
}
}
Flux 2.0
Flux 2.0 Bildgenerierung
-
Asynchrone Verarbeitung; nach dem Absenden wird eine Aufgaben-ID zurückgegeben
-
Unterstützt Text-zu-Bild, Bild-zu-Bild und die Kombination mehrerer Referenzbilder
-
Unterstützt die Modelle Flex, Pro und Max mit Ausgabebildern bis zu 4 MP
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": "flux-2-pro",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}
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: "flux-2-pro",
prompt: "A blue cat on the grass",
resolution: "2MP",
size: "16:9"
};
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen. Überprüfen Sie Ihren API-Key.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Guthaben. Bitte laden Sie Ihr Konto auf.",
"type": "payment_required"
}
}
curl --request POST \
--url https://api.apimart.ai/v1/images/generations \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"model": "flux-2-pro",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}'
import requests
url = "https://api.apimart.ai/v1/images/generations"
payload = {
"model": "flux-2-pro",
"prompt": "A blue cat on the grass",
"resolution": "2MP",
"size": "16:9"
}
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: "flux-2-pro",
prompt: "A blue cat on the grass",
resolution: "2MP",
size: "16:9"
};
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));
{
"code": 200,
"data": [
{
"status": "submitted",
"task_id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2"
}
]
}
{
"error": {
"code": 401,
"message": "Authentifizierung fehlgeschlagen. Überprüfen Sie Ihren API-Key.",
"type": "authentication_error"
}
}
{
"error": {
"code": 402,
"message": "Unzureichendes Guthaben. Bitte laden Sie Ihr Konto auf.",
"type": "payment_required"
}
}
Unterstützte Modelle
| Modell | Beschreibung |
|---|---|
flux-2-flex | Unterstützt eine präzise Steuerung von Sampling-Schritten und Prompt-Gewichtung |
flux-2-pro | Ausgewogenes Verhältnis von Geschwindigkeit und Qualität für allgemeine Produktionsabläufe |
flux-2-max | Variante mit höchster Qualität für besonders anspruchsvolle Bildausgaben |
Autorisierung
string
erforderlich
Alle Endpunkte erfordern eine Authentifizierung mit einem Bearer-Token.API-Key abrufen:Rufen Sie die API-Key-Verwaltung auf, um Ihren API-Key zu erhalten.Fügen Sie ihn dem Anfrage-Header hinzu:
Authorization: Bearer YOUR_API_KEY
Body
string
erforderlich
Modellname:
flux-2-flex– Flex-Modell mit präzisen Steuerungsmöglichkeitenflux-2-pro– Pro-Modell für allgemeine Anwendungenflux-2-max– Max-Modell mit höchster Qualität
boolean
Standard:"false"
Legt fest, ob der Inhalt vor dem Absenden des Bildauftrags moderiert wird.
true: Prompts und Eingabebilder mitomni-moderation-latestprüfenfalseoder nicht angegeben: keine Moderationsanfrage und damit keine zusätzlichen Moderationskosten oder Verzögerung (Standard)
string
erforderlich
Textbeschreibung für die Generierung oder Bearbeitung des Bildes.
string
Standard:"2MP"
Stufe der Ausgabeauflösung:
1MP2MP– Standard3MP4MP
1MP 1,048,576 Pixeln.Kompatible Aliase: 512 / 512P / 1M entsprechen 1MP, 1K / 1024 entsprechen 2MP, 2K / 2048 entsprechen 3MP und 4K entspricht 4MP. Andere Werte werden abgelehnt.Die tatsächlichen Ausgabemaße hängen zusätzlich von size ab.string
Standard:"1:1"
Seitenverhältnis oder Pixelmaße des Ausgabebildes.
size unterstützt auch auto: Wenn image_urls angegeben ist, wird das Seitenverhältnis des Referenzbildes übernommen und die aktuelle resolution-Stufe beibehalten. Ohne Referenzbild wird der Standardwert 1:1 verwendet.Folgende Größenoptionen werden unterstützt:1:1– Quadrat (Standard)4:3– Querformat3:4– Hochformat16:9– Breitbild9:16– vertikales Breitbild3:2– klassisches Querformat2:3– klassisches Hochformat21:9– Ultrawide9:21– ultrahochauto– Seitenverhältnis des Referenzbildes übernehmen
"BreitexHöhe" übergeben werden, zum Beispiel "1024x1536".integer
Exakte Ausgabebreite in Pixeln. Muss zusammen mit
height angegeben werden; beide Werte müssen mindestens 64 betragen.Wird nur einer der beiden Werte angegeben, schlägt die Aufgabe fehl.integer
Exakte Ausgabehöhe in Pixeln. Muss zusammen mit
width angegeben werden; beide Werte müssen mindestens 64 betragen.Die Gesamtausgabe darf 4 MP nicht überschreiten: width × height ≤ 4.194.304.array
Liste der Referenzbilder für Bild-zu-Bild-Aufgaben oder die Kombination mehrerer Referenzbilder.Einschränkungen:
- Maximal 8 Bilder
- Öffentlich erreichbare URLs oder Base64-kodierte Eingabebilder werden unterstützt
- Die Gesamtpixelzahl des Ausgabebildes und aller Referenzbilder darf 9 MP nicht überschreiten
string
Standard:"jpeg"
Kodierungsformat des Ausgabebildes. Unterstützt werden
jpeg, png und webp; Standard ist jpeg.integer
Standard:"1"
Anzahl der zu generierenden Bilder. Der Wert muss
1 sein. Für mehrere Bilder müssen mehrere Aufgaben übermittelt werden.integer
Zufalls-Seed. Ein fester Seed erzeugt bei unveränderten übrigen Parametern dasselbe Ergebnis; ohne Angabe wird er zufällig gewählt.
boolean
Standard:"false"
Legt fest, ob die Prompt-Erweiterung aktiviert wird:
true– aktiviertfalse– deaktiviert (Standard)
Setzen Sie den Wert ausdrücklich auf false, um die Prompt-Umformulierung zu deaktivieren.
integer
Standard:"2"
Toleranzstufe der Inhaltsprüfung im Bereich von 0 bis 5. Höhere Werte bedeuten eine weniger strenge Prüfung.
integer
Standard:"50"
Anzahl der Sampling-Schritte, nur von
flux-2-flex unterstützt. Bereich: 1–50. Höhere Werte liefern üblicherweise mehr Details, benötigen aber mehr Zeit.number
Standard:"5.0"
Stärke der Prompt-Gewichtung, nur von
flux-2-flex unterstützt. Bereich: 1,5–10. Höhere Werte richten das Ergebnis üblicherweise stärker am Prompt aus.Auflösungstabelle
| Verhältnis | 1MP | 2MP (Standard) | 3MP | 4MP |
|---|---|---|---|---|
1:1 | 1024×1024 | 1440×1440 | 1536×1536 | 2048×2048 |
4:3 | 1152×864 | 1664×1248 | 1824×1360 | 2336×1760 |
3:4 | 864×1152 | 1248×1664 | 1360×1824 | 1760×2336 |
16:9 | 1344×752 | 1920×1072 | 2048×1152 | 2720×1536 |
9:16 | 752×1344 | 1072×1920 | 1152×2048 | 1536×2720 |
3:2 | 1248×832 | 1728×1152 | 1872×1248 | 2496×1664 |
2:3 | 832×1248 | 1152×1728 | 1248×1872 | 1664×2496 |
21:9 | 1504×640 | 2176×928 | 2304×992 | 3072×1312 |
9:21 | 640×1504 | 928×2176 | 992×2304 | 1312×3072 |
Priorität der Größenparameter
- Gemeinsam angegebene
widthundheightlegen die exakten Pixelmaße fest. - Eine Pixelangabe in
size, zum Beispiel1024x1536, legt die exakten Pixelmaße fest. - Andernfalls bestimmen
resolutionund das Seitenverhältnis insizedie Maße anhand der Tabelle. - Ohne Größenangaben gilt
2MPmit1:1, also 1440×1440.
width oder nur height anzugeben ist ungültig und führt zum Fehlschlagen der Aufgabe.
Anwendungsbeispiele
Einfache Text-zu-Bild-Generierung{
"model": "flux-2-pro",
"prompt": "Cyberpunk city at night, neon lights reflected on wet streets",
"resolution": "1MP",
"size": "16:9"
}
{
"model": "flux-2-max",
"prompt": "Snow-covered mountains and a lake in the morning mist, rich details, cinematic",
"resolution": "4MP",
"size": "3:2"
}
{
"model": "flux-2-pro",
"prompt": "A blue cat",
"width": 1024,
"height": 1536
}
{
"model": "flux-2-pro",
"prompt": "Place the person from image 1 into the scene from image 2 and harmonize lighting and colors",
"image_urls": [
"https://example.com/person.jpg",
"https://example.com/scene.jpg"
],
"resolution": "2MP",
"size": "16:9"
}
{
"model": "flux-2-flex",
"prompt": "Minimalist poster with the headline SUMMER SALE and the caption 50% OFF",
"resolution": "3MP",
"size": "3:4",
"steps": 50,
"guidance": 6.5
}
Response
Nach erfolgreichem Absenden istdata ein Array. Die Aufgaben-ID befindet sich in data[0].task_id.
integer
Statuscode der Antwort.
array
Aufgabenergebnis abfragen
Die Aufgabe wird asynchron verarbeitet. Rufen Sie mit dertask_id aus der Übermittlungsantwort den folgenden Endpunkt auf, bis sich der Status in completed oder failed ändert:
curl --request GET \
--url https://api.apimart.ai/v1/tasks/task_01KFG5BBFNK1YQDTJDZY0P0QT2 \
--header 'Authorization: Bearer <token>'
| Status | Beschreibung |
|---|---|
submitted / pending | Die Aufgabe wurde angenommen oder wartet in der Warteschlange; weiter abfragen |
processing | Das Bild wird generiert; weiter abfragen |
completed | Die Aufgabe ist abgeschlossen; die Bild-URL steht unter result.images[0].url[0] |
failed | Die Aufgabe ist fehlgeschlagen; Einzelheiten stehen unter data.error.message |
{
"code": 200,
"data": {
"id": "task_01KFG5BBFNK1YQDTJDZY0P0QT2",
"status": "completed",
"progress": 100,
"result": {
"images": [
{
"url": [
"https://upload.apimart.ai/f/image/xxxxxxxx-flux-2.jpeg"
],
"expires_at": 1785220083
}
]
}
}
}
result.images[].url ist ein String-Array. Diese Modellfamilie generiert pro Anfrage genau ein Bild; lesen Sie daher url[0]. Die Gültigkeitsdauer der Bild-URL richtet sich nach dem Unix-Zeitstempel expires_at im selben Objekt. Speichern Sie das Ergebnis vor diesem Zeitpunkt.
Ungültige Modellparameter und fehlgeschlagene Aufgaben
Ungültige Modellparameter werden asynchron gemeldet: Die Übermittlung liefert HTTP 200 und einetask_id. Erst beim Abfragen der Aufgabe erscheint der Endstatus failed mit dem konkreten Grund unter data.error.message. Deshalb muss bis zu einem Endstatus abgefragt werden.
{
"code": 200,
"data": {
"status": "failed",
"error": {
"type": "task_failed",
"code": "task_failed",
"message": "`steps` must be between 1 and 50 (got 0)"
}
}
}
data.error.code lautet bei solchen Fehlern immer task_failed; der konkrete Grund steht in message. Fehlgeschlagene Aufgaben werden vollständig erstattet.
Hinweise
- Größenbeschränkung: Das Ausgabebild darf 4 MP nicht überschreiten; Breite und Höhe müssen jeweils mindestens 64 Pixel betragen.
- Gesamtpixelgrenze: Das Ausgabebild und alle Referenzbilder dürfen zusammen höchstens 9 MP umfassen.
- Referenzbilder: Es werden maximal 8 Referenzbilder als öffentlich erreichbare Bild-URLs oder Base64-kodierte Eingabebilder unterstützt.
- Feste Bildanzahl:
nmuss1sein; pro Anfrage wird genau ein Bild generiert. - Prompt-Erweiterung:
prompt_upsamplingist standardmäßig deaktiviert. - Exklusive Flex-Parameter:
stepsundguidancegelten nur fürflux-2-flex. - Asynchrone Aufgabe: Fragen Sie nach erfolgreicher Übermittlung
/v1/tasks/{task_id}ab, um das endgültige Ergebnis zu erhalten. - Ergebnislink: Die Gültigkeit der Bild-URL richtet sich nach
expires_atin der Antwort.