Escape a contenidos

desarrollador API

Versión 1 Utiliza los mismos modelos, activos, recuperación de tareas y contabilidad de crédito como Studio.

Gestión API La clave

Envío Autorización: Carga YOUR_API_KEY. Cookies de la página web no se aceptan como API Una adhesión activa pagada y el permiso clave requerido se verifican en cada solicitud.

Lea los modelos, cargue una referencia si es necesario, solicite una cita, reconozca explícitamente esa cita, luego envíe con una clave estable.

Sólo la presentación de generación consume créditos de cuenta. las cuotas y la creación clave no consumen créditos. los fracasos del proveedor utilizan el proceso de reembolso y reconciliación existente. No envíe una nueva clave de identidad mientras el resultado original es desconocido.

Cada clave permite 60 Requisitos de solicitud por minuto. a 429 La respuesta incluye Retry-After. Key expire dentro 1–365 días y se puede revocar de inmediato.

HTTPURLPermisiones
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

Las referencias utilizan un upload de tres pasos: declarar MIME y tamaño de byte, PUT los bytes, luego completar. JPEG, PNG y WebP hasta arriba 10 Utilice el ID de activos devueltos; las URL de referencia externas y los activos de otros usuarios no se aceptan.

// 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• La clave invalidada, expirada o revocada. 403· Falta de permiso o adhesión pagada. 409: conflicto de impotencia o cambio de cita; solicitar y confirmar una nueva cita. 422Invención inadecuada. 429La tasa límite. 503Leer el código de error de respuesta; nunca retire una presentación pagada con una nueva clave automáticamente.