Geliştirici API
versiyonu 1 Studio ile aynı modeller, varlıklar, görev kurtarma ve kredi muhasebesi kullanır. anahtarınızı sunucunuzda tutun.
yönetimi API AnahtarlarGönder yetki: YÜKSEK_API_KEY. web sitesi çerezleri kabul edilmez API Aktif ücretli üyelik ve gerekli anahtar izin her başvuru sırasında kontrol edilir.
Modeller okuyun, gerekirse bir referans yükleyin, bir alıntı isteyin, bu alıntıyı açıkça kabul edin, sonra istikrarlı bir Idempotency-Key ile gönderin.
Yalnızca nesil sunum hesap kredileri tüketir. alıntılar ve anahtar oluşturma kredi tüketmez. sağlayıcı başarısızlıkları mevcut geri ödeme ve uzlaşma süreci kullanır. orijinal sonuç bilinmeyen bir süre sonra yeni bir idempotency anahtarı göndermeyin.
Her anahtar dakikada 60 kimliği doğrulanmış isteğe izin verir. 429 yanıtı Retry-After içerir. Anahtarlar 1–365 gün içinde sona erer ve hemen iptal edilebilir.
| HTTP | URL | izinler |
|---|---|---|
| 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 |
Referanslar üç adımlı bir yükleme kullanır: MIME ve byte boyutunu beyan, byteyi PUT, sonra tamamlayın. JPEG, PNG ve WebP yukarıda 10 MB'lar doğrulanmış sunucunun tarafıdır. iade edilen varlık kimliğini kullanın; dış referans URL'leri ve diğer kullanıcıların varlıkları kabul edilmez.
// 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• Geçerli veya iptal edilen anahtar. 403• Üyelik izni veya ücretli üyelik eksikliği. 409: idem potansiyeli çatışması veya değişik alıntı; yeni bir alıntı isteyin ve onaylayın. 422• Yasadışı giriş 429• Sıfır sınırı 503: geçici olarak kullanılamaz. yanıt hatası kodunu okuyun; asla yeni bir anahtarla ödenen bir başvuru otomatik olarak geri çekmeyin.