language로 실패 오류 메시지의 언어도 지정할 수 있습니다.
빠른 시작
작업 제출 시 요청 본문의 최상위에webhook을 추가하세요. 실패 메시지를 번역하려면 language도 추가합니다:
여러분의 URL + /callback 으로 POST 요청을 보냅니다.
동영상, 오디오 등 다른 비동기 작업 엔드포인트에서도
webhook 지정 방식은 동일합니다. language는 현재 POST /v1/videos/generations 및 POST /v1/images/generations에 적용되며, 두 필드 모두 요청 본문의 최상위에 지정합니다.오류 메시지 언어 지정
language는 선택적 문자열 매개변수이며 실패 콜백의 error.message에만 영향을 줍니다. 작업 ID, 상태, 진행률, 비용, 결과 URL 등의 필드는 언어에 따라 변경되지 않습니다. 생략하면 업스트림 또는 플랫폼의 원본 오류 메시지가 반환됩니다.
- 대소문자를 구분하지 않으며 앞뒤 공백은 자동으로 제거됩니다. 예를 들어
"KO"와" ko "는 모두ko로 처리됩니다. - 표에 있는 두 글자 언어 코드를 사용하세요.
zh-CN,en-US,pt-BR등의 지역 태그는 인식되지 않습니다. - 지원되지 않는 값을 전달해도 작업 제출은 실패하지 않으며, 콜백에는 원본 오류 메시지가 포함됩니다.
- 원본 메시지가 이미 대상 언어이면 다시 번역하지 않고 그대로 반환합니다.
- 번역에 실패해도 콜백을 지연하거나 누락하지 않고 원본 메시지를 반환합니다.
폴링할 때는 작업 상태 엔드포인트의
language 쿼리 매개변수로 동일한 오류 메시지 언어를 지정할 수 있습니다. Webhook에는 쿼리 문자열이 없으므로 language는 반드시 작업 제출 시 지정해야 합니다.URL 규칙
전달하는webhook 은 기본 URL(base) 이며, 뒤에 자동으로 /callback 을 덧붙입니다:
따라서 서버 측에서
POST .../callback 을 수신하는 엔드포인트를 준비해야 합니다.
무엇을 받게 되나요
푸시되는 내용은 「작업 상태 조회」 엔드포인트가 반환하는 것과 완전히 동일합니다. 동일한 파싱 로직으로 처리하면 됩니다.동영상 작업의 결과는
result.videos, 오디오는 result.audios 에 있습니다.위 실패 예시는
"language": "ko"를 사용합니다. 언어 매개변수는 error.message만 변경하며 다른 필드는 동일합니다.재시도와 중복 제거(중요)
- 재시도: 서버가 약 10초 이내에
2xx를 반환하지 않거나5xx를 반환하면, 자동으로 최대 3회 재시도하며 간격은 약 10초, 30초, 60초 입니다. 3회 모두 실패하면 포기합니다(약 2분 이내 종료). - 재시도하지 않는 경우: 엔드포인트가
4xx를 반환하면(URL / 요청에 문제가 있다고 간주) 재시도 없이 즉시 포기합니다. - 중복 제거: 일반적으로 한 작업은 한 번만 푸시됩니다. 다만 극단적인 경우(예: 전송 후 확인 전에 당사 측에서 재시작 발생) 중복 푸시를 받을 수 있습니다. 중복 처리를 방지하기 위해 반드시
id(task_id) 기준으로 멱등하게 중복 제거 하세요.
1
가능한 한 빨리 2xx 반환
먼저 수신해 큐에 넣은 뒤 비동기로 처리하세요. 처리가 끝날 때까지 당사를 기다리게 하지 마세요.
2
id 로 중복 제거
id(task_id)를 멱등 키로 사용해 중복 처리를 방지하세요.3
서명 구성 및 검증
운영 환경에서는 콜백 요청의 출처를 검증하고 위조된 요청을 거부하세요.
콜백 URL 요구 사항
보안을 위해 콜백 URL은 다음을 충족해야 합니다:
요구 사항을 충족하지 않는 URL은 즉시 폐기됩니다(푸시도 재시도도 하지 않음).
자주 묻는 질문
webhook을 포함해 작업을 제출했는데 푸시를 받지 못했나요?
webhook을 포함해 작업을 제출했는데 푸시를 받지 못했나요?
하나씩 점검하세요:
- 작업이 실제로 완료되었나요? 작업 상세를 조회해
status가completed/failed인지 확인하세요(처리 중에는 푸시하지 않음). - 여러분의 URL이 공용으로 접근 가능한가요? 당사가 여러분의
/callback에 연결할 수 있나요? - 포트가 표준 포트(80 / 443)인가요? 비표준 포트는 보안 정책에 의해 차단될 수 있습니다.
- 여러분의
/callback이 제때 2xx 를 반환했나요? 4xx 를 반환하면 즉시 포기합니다. https를 사용하나요? 인증서가 유효한가요?
result 의 url 이 왜 배열인가요?
result 의 url 이 왜 배열인가요?
일부 모델은 한 번에 여러 장의 이미지를 생성하므로
images[].url 이 배열일 수 있습니다. 배열로 처리하면 됩니다.결과 링크에 유효 기간이 있나요?
결과 링크에 유효 기간이 있나요?
result 에 expires_at(Unix 타임스탬프)이 있으면 해당 링크의 만료 시각을 나타냅니다. 제때 옮겨 저장하세요.'처리 중' 상태도 푸시하나요?
'처리 중' 상태도 푸시하나요?
아니요. 작업이 최종적으로 성공하거나 실패할 때 한 번만 푸시합니다.
최소 수신 측 예제
Python
200 을 반환하고, 처리 로직은 백그라운드에서 비동기로 실행하세요.