개발자 API
버전 1 동일한 모델, 자산, 작업 회복 및 신용 회계를 사용 Studio.
관리 API 열쇠권한을 보내기: 귀하의_API_KEY. 웹사이트 쿠키는 수락되지 않습니다 API 인증서 : 적극적으로 지불 된 회원권과 필요한 핵심 허가는 각 요청에 따라 검사됩니다.
모델을 읽고, 필요한 경우 참조를 업로드하고, 인용문을 요청하고, 그 인용문을 명시적으로 인정하고, 안정적인 Idempotency-Key로 제출합니다.
유일한 세대 제출은 계정 크레딧을 소비합니다. 인용문과 키 창조는 크레딧을 소비하지 않습니다. 공급자의 실패는 기존 환불 및 합의 과정을 사용합니다. 원래 결과가 알려지지 않은 동안 새로운 IDPotence 키를 제출하지 마십시오.
각 키는 분당 인증된 요청 60회를 허용합니다. 429 응답에는 Retry-After가 포함됩니다. 키는 1–365일 이내에 만료되며 즉시 폐기할 수 있습니다.
| HTTP | URL | 허가 |
|---|---|---|
| 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 |
참조는 3 단계 업로드를 사용합니다 : MIME 및 바이트 크기를 선언하고, 바이트를 입력한 다음 완료합니다. JPEG, PNG 그리고 WebP 위로 10 MB는 서버 측면을 확인합니다. 반환 된 자산 ID를 사용하십시오; 외부 참조 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: 일시적으로 사용할 수 없습니다. 응답 오류 코드를 읽으십시오; 자동으로 새 키로 지불 한 제출을 철회하지 마십시오.