ספין לתוכן

מפתחים API

גרסה 1 משתמשים באותם מודלים, נכסים, שיקום משימות וחשבונאות אשראי כמו Studio.

ניהול API מפתחות

שלח אישור: נושא YOUR_API_KEY. קובצי Cookie באתר אינם מקובלים כ API חברות בתשלום פעילה והרשאה המפתח הנדרשת נבדקים על כל בקשה.

לקרוא מודלים, להעלות רמז אם יש צורך, לבקש ציטוט, להכיר באופן מפורש את הציטוט, ולאחר מכן להגיש עם מפתח אי-חוסר יכולת יציב.

רק הצעת הדור צורכת אשראי חשבונות. ציטוטים ופיתוח מפתח אינם צורכים אשראי. שגיאות הספק משתמשים בתהליך ההחזר וההתאמה הקיימים. אל תגיש מפתח חדש של אי-יכולת בעוד התוצאה המקורית לא ידועה.

כל מפתח מאפשר 60 בקשות אמינות לדקה (א) 429 התשובה כוללת Retry-After. Keys expires within 1–365 יומיים וניתן לבטל אותו מיד.

HTTPURLהרשאות
GET/api/v1/modelsmodels:read
GET/api/v1/assetsassets:read
GET/api/v1/assets/{id}/downloadassets:read
POST/api/v1/uploadsassets:write
PUT/api/v1/uploads/{id}assets:write
POST/api/v1/uploads/{id}/completeassets:write
POST/api/v1/quotesgenerations:write
POST/api/v1/generationsgenerations:write
GET/api/v1/generations/{kind}/{id}generations:read
GET/api/v1/generations/{kind}/{id}/outputs/{index}generations:read

רמזים משתמשים בהעלאת שלושת הצעדים: להכריז על MIME ו- byte גודל, PUT את ה- byte, ולאחר מכן להשלים. JPEG, PNG ו WebP עד 10 משתמש ב-ID הנכס החוזר; URLים חיצוניים ו-URLים אחרים של המשתמשים אינם מקובלים.

// 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מפתח לא חוקי, נגמר או נדחה. 403• חוסר רישיון או הצטרפות בתשלום. 409• סכסוך אי-יכולת או שינוי ציטוט; בקשה והוכחה של ציטוט חדש. 422תגית: כניסה בלתי אפשרית 429• הגבלת שיעור. 503קרא את קוד שגיאה התגובה; לעולם לא להחזיר הצעת מחיר בתשלום עם מפתח חדש באופן אוטומטי.