Entwickler API
Version 1 Verwenden Sie die gleichen Modelle, Vermögenswerte, Aufgabe- und Kreditbuchhaltung wie Studio.
Verwaltung API SchlüsselSend Authorization: Bearer YOUR_API_KEY. Website-Cookies werden nicht akzeptiert als API Eine aktive bezahlte Mitgliedschaft und die erforderliche Schlüsselgenehmigung werden bei jedem Antrag überprüft.
Lesen Sie Modelle, hochladen Sie eine Referenz, wenn nötig, bitten Sie um eine Zitate, erklären Sie diese Zitate ausdrücklich an, geben Sie sie dann mit einem stabilen Idempotency-Key ein.
Nur Generation-Beitrag verbraucht Konto-Kredite. Quoten und Schlüssel-Schöpfung verbrauchen keine Kredite. Provider Versagen nutzen den bestehenden Rückerstattungs- und Versöhnungsprozess. Verleihen Sie nicht einen neuen Identitätsschlüssel, während das ursprüngliche Ergebnis unbekannt ist.
Jeder Schlüssel ermöglicht 60 Authentik-Anfragen pro Minute. a 429 Antwort enthält Retry-After. Keys endet innerhalb 1–365 Tage und kann sofort abgesagt werden.
| HTTP | URL | Genehmigungen |
|---|---|---|
| GET | /api/v1/models | models:read |
| GET | /api/v1/assets | assets:read |
| GET | /api/v1/assets/{id}/download | assets:read |
| POST | /api/v1/uploads | assets:write |
| PUT | /api/v1/uploads/{id} | assets:write |
| POST | /api/v1/uploads/{id}/complete | assets:write |
| POST | /api/v1/quotes | generations:write |
| POST | /api/v1/generations | generations:write |
| GET | /api/v1/generations/{kind}/{id} | generations:read |
| GET | /api/v1/generations/{kind}/{id}/outputs/{index} | generations:read |
Referenzen verwenden eine dreistufige Laden: erklären Sie MIME und Byte Größe, PUT die Byte, dann abschließen. JPEG, PNG und WebP bis zu 10 Verwenden Sie das zurückgegebene Vermögens-ID; externe Referenz-URLs und andere Vermögenswerte der Benutzer werden nicht akzeptiert.
// Node.js 22+; keep API_KEY on your server.
const base = process.env.API_BASE_URL;
const headers = {
Authorization: `Bearer ${process.env.API_KEY}`,
'Content-Type': 'application/json',
};
const modelsResponse = await fetch(base + '/api/v1/models', { headers });
if (!modelsResponse.ok) throw new Error('Read models failed');
const models = await modelsResponse.json();
const draft = {
"kind": "image",
"modelPreset": "gpt-image-2",
"mode": "text-to-image",
"prompt": "A yellow ceramic mug on a pale blue background",
"aspectRatio": "1:1",
"resolution": "1k",
"outputCount": 1
};
const quoteResponse = await fetch(base + '/api/v1/quotes', {
method: 'POST', headers, body: JSON.stringify({ draft }),
});
if (!quoteResponse.ok) throw new Error('Quote failed');
const quote = await quoteResponse.json();
// Review quote.quote before submitting. Persist this operation ID first.
const operationId = process.env.OPERATION_ID;
if (!operationId) throw new Error('A stable operation ID is required');
const submitted = await fetch(base + '/api/v1/generations', {
method: 'POST',
headers: { ...headers, 'Idempotency-Key': operationId },
body: JSON.stringify({
draft: quote.normalizedDraft,
quoteAcknowledgement: quote.quote,
}),
});
if (!submitted.ok) throw new Error('Check response before retrying');
const { task } = await submitted.json();
const taskResponse = await fetch(
base + '/api/v1/generations/' + task.kind + '/' + task.id, { headers },
);
if (!taskResponse.ok) throw new Error('Read task failed');
const detail = await taskResponse.json();
// Poll at two-second intervals until terminal. Download detail.outputs[].downloadUrl
// with the same Authorization header. Never change the ID to retry an unknown outcome.401: invalid, ausgeschlossen oder zurückgezogen Schlüssel. 403• Fehlverleihung oder bezahlte Mitgliedschaft. 409: Identitätskonflikt oder geänderte Zitate; eine neue Zitate beantragen und bestätigen. 422• Invalid Input. 429Die Rate Limit. 503: vorübergehend nicht verfügbar. Lesen Sie den Reaktionsfehlcode; nie eine bezahlte Einreichung mit einem neuen Schlüssel automatisch zurückzuziehen.