빠른 시작
네이티브 이미지 엔드포인트는 기본적으로 동기입니다. Booleanasync를 true로 설정하면 백그라운드 작업을 만듭니다. 예제는 qwen-image-2.0을 사용합니다.
비동기 미디어 모델을 찾고 Schema를 가져오는 방법
검색 절차는 두 단계입니다. 먼저 공개 모델 카탈로그에서 비동기 API를 지원하는 텍스트 이미지 또는 텍스트 비디오 모델을 가져옵니다. 그런 다음 모델의model_id를 사용해 해당 엔드포인트의 요청 Schema를 가져옵니다.
비동기 API를 지원하는 모델 목록 조회
모델 카탈로그는 Playground와 같은 데이터 소스를 사용합니다. 텍스트 이미지 모델에는type=image_generation, 텍스트 비디오 모델에는 type=video를 사용하세요. schema_checked=true를 추가하면 요청 Schema가 게시되고 검토된 모델만 반환됩니다.
type 필터는 하나의 값만 허용하므로 모델 유형별로 요청하세요.
응답 구조는 {success, message, data}입니다. 비동기 미디어 연동과 관련된 data 필드는 다음과 같습니다.
단일 모델의 요청 Schema 조회
지원 필드, 열거형 및 숫자 범위는 모델마다 다를 수 있습니다. 이미지 또는 비디오 요청을 보내기 전에 다음 공개 API를 사용하여 선택한 모델의 사용 가능한 엔드포인트와 요청 JSON Schema를 조회하세요.modality는 image 또는 video입니다. endpoints 배열의 각 항목은 사용 가능한 호출 프로토콜 하나를 설명합니다.
같은 모델에서
/ai/v1 엔드포인트와 OpenAI 호환 /v1 엔드포인트가 함께 반환될 수 있습니다. OpenAI 호환 엔드포인트는 최신 모델을 아직 지원하지 않을 수 있으므로 /ai/v1 엔드포인트를 우선 사용하세요. 비동기 작업 API에는 path가 /ai/v1/images/generations 또는 /ai/v1/videos인 항목을 선택한 후 해당 request.schema를 사용하세요. endpoints 배열의 위치에 의존하지 마세요.
다음 명령은 각 비동기 작업 엔드포인트의 요청 Schema를 직접 추출합니다.
404 model_not_found를 반환합니다. 엔드포인트 데이터를 일시적으로 사용할 수 없으면 500 endpoints_unavailable를 반환합니다.
이미지 작업을 생성하는 방법
동기 이미지
async를 생략하거나 false로 설정하면 API는 생성이 완료될 때까지 기다린 후 작업 객체를 반환합니다.
GET /ai/v1/images로 해당 작업을 찾을 수 있습니다.
비동기 이미지
async를 불리언 값 true로 설정하면 API가 작업 객체를 즉시 반환하고 생성은 백그라운드에서 계속됩니다.
GET /ai/v1/images/{id}로 비동기 이미지 작업을 조회하세요. 완료 후 각 output 항목의 content_url을 직접 요청할 수 있습니다. 이 URL에는 해당 이미지의 result_id가 포함되어 있습니다.
이미지 요청의
async는 불리언 값이어야 합니다. webhook_url과
webhook_events_filter는 async: true와 함께만 사용할 수 있습니다.이미지 표준 필드
미디어 작업 객체
이미지 및 비디오 전용 API는 다음 구조를 반환합니다.
미디어
output 항목:
상태 설명
상태가
completed, failed 또는 cancelled로 바뀔 때까지 클라이언트에서 15초마다 조회할 수 있습니다. 15초는 클라이언트 폴링 권장 간격이며 서버 프로토콜 제한이 아닙니다.
미디어 작업을 조회하는 방법
미디어 상세 조회
미디어 목록 조회
생성 응답을 잃은 경우 해당 미디어 목록에서 작업 ID를 찾을 수 있습니다.통합 작업 API를 사용하는 방법
통합 작업 API는 다음 필터를 지원합니다.
통합 작업 상세:
output 항목:
/ai/v1/tasks/{id}/content로 직접 요청하세요. 다중 결과물 작업은 /ai/v1/tasks/{id}/content/{result_id}를 요청해야 하며, 결과 ID를 지정하지 않으면 400 result_id_required가 반환됩니다.
통합 작업 목록, 상세 및 콘텐츠 API는 작업을 생성한 Bearer Token에 따라
격리됩니다. 같은 계정의 다른 API Key로는 해당 작업을 읽을 수 없습니다.
미디어 결과를 다운로드하는 방법
이미지 다운로드
이미지가 완료되면 미디어 작업 객체의output[].content_url을 각 항목별로 요청하세요.
/ai/v1/images/{id}/content/{result_id}입니다. 미디어 작업 객체는 result_id를 별도로 공개하지 않으므로 클라이언트는 content_url을 직접 사용하면 됩니다.
b64_json이 비어 있지 않으면 해당 필드를 직접 Base64 디코딩할 수 있습니다.
Webhook 사용 방법
비동기 이미지 및 비디오는 작업 단위 Webhook을 지원합니다.webhook_url은 최대 512자이며 로컬 호스트, 사설망 또는 기타 제한된 주소를 가리킬 수 없습니다. webhook_events_filter를 생략하면 플랫폼은 completed, failed, cancelled를 전송합니다. 명시적으로 전달하는 경우 배열은 비어 있거나 중복될 수 없으며 webhook_url과 함께 사용해야 합니다.
요청에 webhook_url을 전달하지 않으면 비동기 이미지 및 비디오는 계정에 설정된 기본 콜백 주소를 사용하려고 시도합니다. 유효하지 않은 계정 기본 주소는 무시되며 작업 생성을 차단하지 않습니다.
콜백 요청
results는 결과가 저장된 경우에만 표시되며 다운로드에는 여전히 Bearer Token이 필요합니다.
재시도 및 중복 제거
플랫폼은 최소 한 번 전달 방식을 사용하므로 동일한 이벤트가 중복 전송될 수 있습니다.- HTTP
2xx는 수신 성공을 의미합니다. - HTTP
5xx, 네트워크 오류 또는 타임아웃은 재시도를 유발합니다. - HTTP
3xx및4xx는 재시도하지 않습니다. - 최대 6회 전달하며, 재시도 간격은 순서대로 1, 4, 16, 64, 256초입니다.
event_id를 저장하고 동일한 이벤트를 다시 받으면 즉시 2xx를 반환해야 합니다.
오류 응답 및 오류 코드
이 절은/ai/v1/images/* 및 이미지 작업에 적용됩니다. 동영상 오류는 동영상 API를 참조하세요.
- 현재 요청 실패: HTTP 상태가 2xx가 아니면 현재 생성, 조회 또는 다운로드 요청이 실패한 것입니다. HTTP 요청 실패를 참조하세요.
- 작업 실행 실패: 조회는 HTTP 200을 반환하지만 작업의
status=failed이며 원인은 작업 내error에 기록됩니다. 작업 실행 실패를 참조하세요. - 목록의 개별 결과 읽기 실패: 목록은 HTTP 200을 반환하지만 일부 작업에
output_error가 포함됩니다. 목록의 개별 결과 읽기 실패를 참조하세요.
message 열은 API가 반환하는 영어 메시지이며, 설명 열은 의미와 조치 방법을 안내합니다. 매개변수 검증 오류에는 일반 메시지를 표시하며, 실제 응답에는 구체적인 필드와 제약 조건이 포함될 수 있습니다. 클라이언트는 code로 오류 유형을 판단하고 message 전체 문자열의 일치 여부에 의존하지 않아야 합니다.
HTTP 5xx 오류 신고
요청이 HTTP
5xx를 반환하면 error.tid를 첨부하여 신고해 주세요.HTTP 요청 실패
아래 HTTP 상태는 현재 요청 자체가 실패한 경우에 적용됩니다. 이미 생성된 작업의 실행 실패는 아래 작업 실행 실패 표를 참조하세요.요청 매개변수 및 미디어 입력
- 미디어 크기: 이미지 작업이 한도를 초과하면
image_too_large를 반환합니다. 구체적인 한도는 오류 메시지 또는error.details.max_bytes를 확인하세요. - 전체 요청 크기:
request_too_large는 텍스트, 매개변수 및 인라인 미디어 인코딩을 포함한 HTTP 본문이 32 MiB를 초과했음을 의미합니다. URL만 전송하면 링크 자체가 본문에 포함되며, 링크가 가리키는 파일은 모델의 미디어 제한을 충족해야 합니다. - 실제 크기:
error.details.actual_bytes는 전체 크기가 확인된 경우에만 제공됩니다. URL에서 미디어를 읽다가 읽기 한도에 도달해 중단되면 이 필드가 생략될 수 있습니다.
error.details.allowed_mime_types 또는 오류 메시지의 형식 목록을 확인하세요. 목록이 없으면 모델의 Schema를 참조하세요.
메시지의 자리표시자
{media_kind}: 실제 미디어 유형입니다. 유형이 확인되면invalid_media_data및media_url_unreachable메시지에도image또는video가 사용됩니다.{max_bytes}: 바이트 단위 한도입니다. 이미지 한도를 알 수 없으면The image is too large. Reduce the image size and try again.을 반환합니다.{allowed_formats}: 허용되는 형식 목록입니다. 형식 오류 메시지에Use one of: {allowed_formats}.가 추가될 수 있습니다.
생성 요청 및 반환 결과
계정 및 권한
서비스 가용성 및 요청 속도 제한
provider_unavailable은 모델 프로바이더의 장애가 명확히 확인되었음을 의미합니다. 일반적인 429 또는 4xx만으로 계정 할당량, 콘텐츠 심사 또는 매개변수 문제를 확인할 수 없습니다.
작업 조회 및 결과 다운로드
작업 실행 실패
작업이 생성된 후 발생한 생성 실패는status=failed와 작업 내 error로 표시됩니다. 조회가 성공하면 HTTP 200을 반환합니다.
message는 submit a new task.로 끝나며 미디어 크기를 줄여 새 작업을 제출하도록 안내합니다.
output_blocked는 명확한 차단이 발생했고 사용 가능한 이미지가 반환되지 않았음을 의미하며 이번 생성에는 요금이 부과되지 않습니다. output_policy_violation에는 기존 콘텐츠 심사 과금 규칙이 적용됩니다. 과거 요금은 청구 기록을 확인하세요.
목록의 개별 결과 읽기 실패
이미지 및 동영상 작업 목록의 일부 행에output_error가 포함될 수 있습니다.
output=[]가 됩니다. 기존 id, status, error 및 페이지네이션은 유지되며 정상적으로 읽을 수 있는 다른 작업에는 영향이 없습니다. status=completed여도 output_error를 확인한 후 결과를 읽을 수 있는지 판단하세요.
output_error.tid를 제공하여 지원팀에 문의하세요. 해당 필드에 tid가 없으면 현재 응답 헤더의 요청 ID를 제공할 수 있습니다. 이 오류는 작업 상태나 요금을 변경하지 않으며 Webhook을 발생시키지 않습니다.
이미지 및 동영상 목록은 이미 가져온 expires_at을 유지합니다. 통합 /ai/v1/tasks 목록의 읽기 실패 행은 expires_at=null을 반환할 수 있지만 결과에는 기존 보관 기간이 그대로 적용됩니다.
이 처리는 개별 행의 결과를 읽을 수 없고 사용 가능한 대체 결과도 없는 경우에만 적용됩니다. 통합 tasks API에서 목록 전체 조회가 실패하면 HTTP 오류를 반환하며, 상세 조회에서 같은 장애가 발생하면 HTTP 500을 반환합니다.
관련 문서: 이미지 API · 동영상 API · 비동기 작업