메인 콘텐츠로 건너뛰기
POST
curl
webhook 대상을 사용하면 서로 다른 Didit 이벤트를 서로 다른 URL로 보낼 수 있습니다. 각 대상에는 고유한 secret_shared_key, webhook_version, subscribed_events 목록이 있습니다.

subscribed_events의 작동 방식

subscribed_events는 정확한 이벤트 이름으로 이루어진 필수 배열입니다. Didit는 payload의 webhook_type이 배열의 값 중 하나와 일치하는 경우에만 이 대상으로 webhook을 전송합니다.
  • 최소 하나의 이벤트를 포함하세요.
  • 아래에 나열된 지원 이벤트 이름만 사용하세요.
  • 전송받고 싶은 모든 이벤트를 추가하세요. * 또는 all과 같은 와일드카드 값은 없습니다.
  • 제품 영역별로 다른 시스템에 전달하려면 subscribed_events 목록이 서로 다른 대상을 여러 개 만드세요.

이벤트 카탈로그

investigator.* 및 auth.* 이벤트 계열도 허용됩니다. 모든 이벤트와 해당 payload는 webhook에 나열되어 있습니다. 일반적인 구독 조합:
payload 예시와 서명 코드는 webhook 가이드를 참고하세요.

인증

x-api-key
string
header
필수

Business Console의 Developers -> API keys에서 발급받은 귀하 애플리케이션의 API 키입니다. 기본 키는 전체 접근 권한을 갖습니다. 이름이 지정된 키는 리소스별 none, read, write 범위로 권한을 제한할 수 있으며 특정 워크플로나 승인된 세션, IP 주소 목록, 만료일 등으로 제한할 수도 있습니다. 401은 키가 잘못되었거나 폐기되었거나 만료되었음을 의미합니다. 403은 키가 전송되지 않았거나, 키에 해당 리소스나 작업에 대한 접근 권한이 없거나, 요청이 허용된 IP 목록 외부 주소에서 발생했음을 의미합니다. 세션 경로에서의 404는 해당 세션이 키의 허용 워크플로 또는 상태 범위를 벗어났음을 의미합니다. 미디어 접근 권한이 없는 키는 이미지, 비디오, PDF URL을 null로 수신하며, 세션 write 권한이 없는 키는 세션 링크와 token을 null로 수신합니다. https://docs.didit.me/console/api-keys 를 참고하십시오.

본문

application/json
label
string
필수

Console → Webhooks에 표시되는 사람이 읽기 쉬운 이름입니다. 여러 대상이 있을 때 대상을 구분하는 데 도움이 됩니다(예: "Prod", "Staging mirror").

Maximum string length: 255
url
string<uri>
필수

POST 요청을 수신할 HTTPS URL입니다. 애플리케이션의 대상 간에 고유해야 합니다. 안정적이고 보안이 강화된 endpoint를 사용하십시오. Didit은 백오프 일정에 따라 실패한 전송을 재시도합니다.

Maximum string length: 2000
enabled
boolean
기본값:true

false인 경우 대상은 저장되지만 Didit은 해당 대상에 webhook을 푸시하지 않습니다. 보류해 두고자 하는 스테이징 구성에 유용합니다.

webhook_version
enum<string>

Didit이 전송할 payload 스키마 버전입니다. v3가 현재 권장되는 형식이며, 이전 버전은 레거시 연동과의 하위 호환성을 위해 유지됩니다.

사용 가능한 옵션:
v1,
v2,
v3
subscribed_events
enum<string>[]

전송할 이벤트입니다. 사실상 필수 항목입니다. 명시적인 []는 400 오류로 거부되며, 필드를 생략하면 구독이 없는 대상이 생성되어 아무것도 수신하지 않습니다.

Minimum array length: 1

지원되는 webhook 이벤트 이름입니다. subscribed_events에 이 정확한 문자열을 사용해야 하며, 지원되지 않는 값은 거부됩니다.

사용 가능한 옵션:
status.updated,
data.updated,
user.status.updated,
user.data.updated,
business.status.updated,
business.data.updated,
activity.created,
transaction.created,
transaction.status.updated,
travel_rule.status.updated,
workflow.compliance_changed,
transaction_rule_suggestions.created,
auth.signup,
auth.login,
auth.login_failed,
auth.password_reset_requested,
auth.password_reset_completed,
auth.mfa_changed,
auth.new_device,
auth.account_locked,
investigator.report.ready,
investigator.decision.automated,
investigator.decision.overridden,
investigator.decision.contested,
investigator.question.raised,
investigator.automation.paused,
investigator.rfi.answered,
investigator.rfi.overdue,
investigator.drift.detected,
investigator.sla.breached,
investigator.qa.failed,
investigator.external.report.ready
예시:

응답

대상이 생성되었습니다. secret_shared_key는 HMAC 서명 비밀입니다. 지금 저장하십시오.

uuid
string<uuid>

안정적인 대상 식별자입니다. 후속 호출에서 {destination_uuid}로 사용하세요.

label
string
url
string<uri>
enabled
boolean
webhook_version
enum<string>
사용 가능한 옵션:
v1,
v2,
v3
secret_shared_key
string

이 대상에 바인딩된 자동 생성 HMAC 서명 비밀(43자 URL 안전 token)입니다. 수신되는 webhook의 서명 헤더를 검증하는 데 사용합니다. API 키 호출자에게는 항상 전체가 반환됩니다. 콘솔 사용자는 read:webhooks 권한이 필요하며, 그렇지 않으면 빈 문자열이 표시됩니다.

secret_last4
string

대상의 현재 서명 비밀의 마지막 4자로, 비밀을 서로 구분할 수 있습니다. 서명 검증에는 충분하지 않습니다.

previous_secret_expires_at
string<date-time> | null

Business Console에서 대상의 서명 비밀이 교체된 후 24시간 동안 설정됩니다. 이 시점까지 해당 대상으로 이루어지는 모든 전송에는 교체된 비밀로 생성된 X-Signature-Previous, X-Signature-V2-Previous, X-Signature-Simple-Previous도 함께 포함됩니다(서명 검증 참조). 지난 24시간 동안 교체된 적이 없으면 null입니다.

subscribed_events
enum<string>[]

이 webhook 대상의 이벤트 필터입니다. Didit은 이벤트 유형이 이 값 중 하나와 정확히 일치하는 webhook만 전송하며, 와일드카드 구독은 지원하지 않습니다. 요청을 보낼 때 목록에는 최소 하나 이상의 유효한 이벤트가 포함되어야 하며(명시적인 []는 400 오류로 거부됨), 목록이 비어 있는(생성 시 필드를 생략한) 대상은 아무것도 수신하지 않습니다. 업데이트 시 목록은 병합되지 않고 전체가 대체됩니다.

Minimum array length: 1

지원되는 webhook 이벤트 이름입니다. subscribed_events에 이 정확한 문자열을 사용해야 하며, 지원되지 않는 값은 거부됩니다.

사용 가능한 옵션:
status.updated,
data.updated,
user.status.updated,
user.data.updated,
business.status.updated,
business.data.updated,
activity.created,
transaction.created,
transaction.status.updated,
travel_rule.status.updated,
workflow.compliance_changed,
transaction_rule_suggestions.created,
auth.signup,
auth.login,
auth.login_failed,
auth.password_reset_requested,
auth.password_reset_completed,
auth.mfa_changed,
auth.new_device,
auth.account_locked,
investigator.report.ready,
investigator.decision.automated,
investigator.decision.overridden,
investigator.decision.contested,
investigator.question.raised,
investigator.automation.paused,
investigator.rfi.answered,
investigator.rfi.overdue,
investigator.drift.detected,
investigator.sla.breached,
investigator.qa.failed,
investigator.external.report.ready
예시:
created_by_email
string | null

대상을 생성한 Business Console 멤버의 이메일입니다. API 키로 생성된 대상의 경우 null입니다.

created_by_name
string | null

대상을 생성한 Business Console 멤버의 이름입니다. API 키로 생성된 대상의 경우 null입니다.

created_at
string<date-time>
updated_at
string<date-time>
health_status
enum<string>

전송 상태입니다. failing: 대상이 마지막으로 성공적으로 응답한 이후 3개 이상의 연속 이벤트가 첫 번째 전송 시도에서 실패했습니다(failing_streak 참조). degraded: failing 상태는 아니지만 지난 24시간 동안 전송 시도가 실패했고 이후 시도에서도 해당 이벤트를 전송하지 못했습니다. 전송에 성공하는 재시도 또는 재발송이 발생하면 이 상태가 해제됩니다. healthy: 둘 다 해당하지 않습니다. enabled와 무관합니다. 실패한 시도는 HTTP 400 이상의 응답을 받았거나 응답이 전혀 없는 시도를 의미합니다.

사용 가능한 옵션:
healthy,
degraded,
failing
failing_streak
integer

최근 30일 이내에 대상이 마지막으로 성공적인 응답을 보낸 이후, 첫 번째 전송 시도에 실패한 연속 이벤트 수입니다. 재시도는 계산되지 않으며 재시도 또는 재발송을 포함한 성공적인 시도가 있으면 연속 실패가 종료됩니다. 마지막 성공 이후 실패한 이벤트가 없으면 0입니다.

failing_since
string<date-time> | null

현재 failing_streak의 첫 번째 실패 시도가 발생한 시점입니다. failing_streak가 0인 경우 null입니다.

last_success_at
string<date-time> | null

최근 30일 이내에 대상이 400 미만의 HTTP 상태로 전송에 마지막으로 응답한 시점입니다. 해당 기간 내에 응답이 없었던 경우 null입니다.

environment
enum<string>

대상을 소유한 애플리케이션의 환경.

사용 가능한 옵션:
live,
sandbox
summary
object

최근 metrics_window_days(30)일 동안의 전송 지표입니다. last_delivery_at은 시점과 관계없이 가장 최근의 시도를 나타냅니다.

마지막 수정일 2026년 11월 7일