Ontwikkelaar API
Versie 1 Gebruik dezelfde modellen, activa, taak herstel en credit accounting als Studio. houd uw sleutel op uw server.
beheer API KluchtenStuur toestemming: draag YOUR_API_KEY. Website cookies worden niet geaccepteerd als API Een actieve betaalde lidmaatschap en de vereiste sleutelvergunning worden gecontroleerd op elke aanvraag.
Lees modellen, upload een referentie indien nodig, vraag een quotatie, erkent die quotatie uitdrukkelijk, dan submit met een stabiele Idempotency-Key.
Alleen generatie submission consumeert account credits. Quotes en sleutel creatie consumeert geen credits. Provider fails gebruiken de bestaande terugbetaling en verzoening proces. Niet een nieuwe identiteit sleutel indien het oorspronkelijke resultaat onbekend is.
Elke sleutel zorgt voor 60 Gecertificeerde verzoeken per minuut. a 429 Reactie is inclusief Retry-After. Keys expire binnen 1–365 dagen en kan onmiddellijk worden ingetrokken.
| HTTP | URL | Toelating |
|---|---|---|
| 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 |
Referenties gebruiken een drie stappen uploaden: MIME en byte grootte verklaren, de byten uitdrukken, vervolgens voltooien. JPEG, PNG en WebP tot op 10 Gebruik de teruggegeven activa ID; externe referentiet URL's en andere activa van gebruikers worden niet geaccepteerd.
// 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: ongeldig, verlengd of geannuleerd sleutel. 403• gebrek aan toestemming of betaalde lidmaatschap. 409: identiteitsconflict of gewijzigde quotatie; aanvraag en bevestiging van een nieuwe quotatie. 422Invalidatie van de ingang. 429De grens van de tarieven. 503: tijdelijk ontoegankelijk. lees de respons foutcode; nooit een betaalde indiening met een nieuwe sleutel automatisch terug te trekken.