개요
GET /jobs/{id}를 폴링하는 대신 Krea에 웹훅 URL을 제공하세요. 작업이 끝나면 Krea가 해당 URL로 작업을 보냅니다.
웹훅 사용하기
어떤 생성 요청에든X-Webhook-URL 헤더를 추가하세요. 작업이 완료되거나, 실패하거나, 취소되면 Krea가 해당 URL로 POST 요청을 보냅니다.
웹훅 페이로드
요청 본문은GET /jobs/{id} 응답과 같은 형식입니다:
서명 검증하기
Krea는 모든 웹훅에 Ed25519로 서명합니다. 페이로드를 신뢰하기 전에 서명을 검증하고, 서명이 없는 요청은 거부하세요.
Krea는 타임스탬프, URL, 메타데이터, 원본 요청 본문을 줄바꿈으로 연결한 값의 SHA-256을 소문자 16진수로 표현한 값에 서명합니다:
X-Krea-Webhook-Url이 작업과 함께 보낸X-Webhook-URL과 정확히 일치하는지 확인하세요.- 타임스탬프가 서버의 현재 시각으로부터 5분 이내인지 확인하세요.
https://api.krea.ai/.well-known/jwks.json에 있는 키 중 하나로 서명이 검증되면 요청을 수락하세요. 키는 최대 24시간까지만 캐시하세요. Krea는 새 키로 서명을 시작하기 24시간 전에 해당 키를 게시합니다.
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로 이미지를 처음부터 끝까지 생성해 보기