메인 콘텐츠로 건너뛰기

개요

GET /jobs/{id}를 폴링하는 대신 Krea에 웹훅 URL을 제공하세요. 작업이 끝나면 Krea가 해당 URL로 작업을 보냅니다.

웹훅 사용하기

어떤 생성 요청에든 X-Webhook-URL 헤더를 추가하세요. 작업이 완료되거나, 실패하거나, 취소되면 Krea가 해당 URL로 POST 요청을 보냅니다.

웹훅 페이로드

요청 본문은 GET /jobs/{id} 응답과 같은 형식입니다:

서명 검증하기

Krea는 모든 웹훅에 Ed25519로 서명합니다. 페이로드를 신뢰하기 전에 서명을 검증하고, 서명이 없는 요청은 거부하세요. Krea는 타임스탬프, URL, 메타데이터, 원본 요청 본문을 줄바꿈으로 연결한 값의 SHA-256을 소문자 16진수로 표현한 값에 서명합니다:
요청을 검증하려면:
  1. X-Krea-Webhook-Url이 작업과 함께 보낸 X-Webhook-URL과 정확히 일치하는지 확인하세요.
  2. 타임스탬프가 서버의 현재 시각으로부터 5분 이내인지 확인하세요.
  3. https://api.krea.ai/.well-known/jwks.json에 있는 키 중 하나로 서명이 검증되면 요청을 수락하세요. 키는 최대 24시간까지만 캐시하세요. Krea는 새 키로 서명을 시작하기 24시간 전에 해당 키를 게시합니다.
다시 직렬화한 JSON이 아니라 원본 본문 바이트를 해시하세요. 예를 들어 Express에서는 express.raw(), Fetch API 기반 프레임워크에서는 await request.arrayBuffer(), Flask에서는 request.get_data()를 사용하세요. X-Krea-Webhook-Metadata 헤더가 없으면 빈 문자열로 처리하세요.

전달 및 재시도

15초 이내에 2xx를 반환하세요. 요청이 시간 초과되거나, 연결할 수 없거나, 5xx, 408, 423, 425, 429를 받으면 Krea는 약 10분 동안 재시도하며 매번 새 타임스탬프와 서명을 사용합니다. 그 밖의 4xx는 재시도하지 않습니다. 같은 작업이 두 번 이상 도착할 수 있으므로 job_id와 status를 기준으로 중복을 제거하세요.

웹훅 대 폴링

HTTP 요청을 받을 수 있는 서버가 있다면 웹훅을 사용하세요. 클라이언트 측 애플리케이션이거나 공개 엔드포인트를 노출할 수 없다면 폴링을 사용하세요.

다음 단계

작업 수명 주기

작업 상태와 상태 폴링에 대해 알아보기

코드 예제

API로 이미지를 처음부터 끝까지 생성해 보기