사이드 메뉴
커뮤니케이션
API 제공
어드민 API
웹훅
이 문서는 카카오 또는 공동체 서비스용 카카오 로그인 관련 웹훅 기능을 안내합니다.
이용 정책에서 웹훅 사용 시 주의 사항을 확인해야 합니다.
사용자의 연결 해제 발생 시, 사유별 카카오에서 서비스로 요청하는 웹훅과 API 목록입니다.
| 구분 | 연결 해제 사유 | 연결 해제 웹훅 | 연결 해제 불가 사유 API | 카카오계정 탈퇴 불가 사유 API |
|---|---|---|---|---|
| 서비스 내부 | 연결 해제 API 호출 | X | X | X |
| 서비스 외부 | 연결된 서비스 관리에서의 연결 해제 ( UNLINK_FROM_APPS) | O | O | X |
| 서비스 외부 | CS로 인한 연결 해제 처리 ( UNLINK_FROM_ADMIN) | O | X | X |
| 서비스 외부 | 카카오계정 탈퇴로 인한 연결 해제 ( ACCOUNT_DELETE) | O | X | O |
| 서비스 외부 | 장기 휴면 또는 고객센터에서 카카오계정 강제 탈퇴로 인한 연결 해제 ( FORCED_ACCOUNT_DELETE) | O | X | X |
| 서비스 외부 | 가입 미완료 사용자 연결 해제 처리 ( INCOMPLETE_SIGN_UP) | O | X | X |
| 메서드 | URL | 필수 응답 규격 | 인증 방식 |
|---|---|---|---|
GET/POST | 앱 관리 페이지의 [앱] > [웹훅] > [연결 해제 웹훅]에 등록한 웹훅 URL | HTTP 상태 코드 200 OK (3초 내) | 대표 어드민 키 |
연결 해제 웹훅은 사용자가 서비스 외부에서 앱과 연결을 끊은 경우, 카카오가 해당 사실을 서비스로 전달하는 기능입니다. 웹훅을 수신한 서비스는 내부 정책에 따라 사용자 정보를 처리한 뒤, HTTP 상태 코드 200 OK로 3초 내에 응답해야 합니다.
서비스 외부에서 연결 해제를 요청한 사용자에게는 더 이상 해당 서비스를 사용할 수 없다는 문구가 표시됩니다. 연결 해제 웹훅은 사용자에 대한 연결 해제 처리를 완료한 후 발송합니다.
웹훅은 헤더에 대표 어드민 키를, 본문에 앱 ID(app_id), 회원번호(user_id), 연결 해제 요청 경로(referrer_type)를 각각 포함합니다.
연결 해제 웹훅은 웹훅 URL과 메서드를 지정해야 사용할 수 있으며, 리다이렉트는 지원하지 않습니다. 설정 방법은 연결 해제 웹훅을 참고합니다.
연결 해제 시 삭제해야 할 정보가 있는 카카오 및 공동체 서비스는 연결 해제 웹훅을 필수로 설정해야 합니다.
아래 상황이 발생한 경우 연결 해제 웹훅을 발송합니다. 서비스가 연결 해제 API를 호출해 앱과 사용자의 연결을 끊은 경우에는 연결 해제 웹훅을 발송하지 않습니다.
- 가입 미완료 사용자 연결 해제 처리
- 사용자가 카카오계정 관리 페이지나 카카오톡의 연결된 서비스 관리 메뉴에서 앱과의 연결을 끊은 경우
- 사용자의 카카오계정 탈퇴
- CS로 인한 연결 해제 처리
카카오계정 탈퇴 불가 사유 API를 사용하는 경우에도 카카오계정 탈퇴(장기 휴면 또는 고객센터)가 발생할 수 있습니다. 이 경우, 웹훅을 수신한 서비스는 성공 응답 후 해당 회원 탈퇴, 문의 대응을 위한 데이터 백업 등 후처리를 해야 합니다.
서비스는 웹훅 수신 시 필요한 작업 수행 후 정해진 규격으로 응답해야 합니다. 아래 과정을 참고합니다.
- 수신한 웹훅의 유효성을 포함된 대표 어드민 키와
app_id로 검증합니다. - 수신한 웹훅이 유효한 경우,
user_id에 해당하는 사용자 정보를 개인정보 처리방침과 서비스 정책에 따라 탈퇴 처리, 삭제 또는 기타 방법으로 데이터베이스(DB)에 반영합니다. - 웹훅 수신 시점으로부터 3초 내에 HTTP 상태 코드
200 OK로 응답합니다.- HTTP 상태 코드로 응답 성공 여부를 판단하므로 본문(Body)은 필요하지 않습니다.
- 사용자 정보 처리에 실패했거나, 사용자를 찾을 수 없는 경우에도 HTTP 상태 코드
200 OK로 응답해야 합니다. 이후 서비스 내부에서 필요한 작업을 수행합니다.
연결 해제 웹훅을 받으려면 사용자가 연결을 끊는 상황을 만들어야 합니다. 카카오계정 페이지 또는 카카오톡의 더보기 탭에 있는 카카오계정 관리 메뉴에서 연결 해제 기능을 제공합니다. 이 기능을 사용해 서비스 서버가 연결 해제 웹훅을 정상적으로 처리하는지 확인할 수 있습니다.
와치 센터 알림을 참고합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}인증 방식, 대표 어드민 키로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| app_id | String | 사용자가 연결 해제를 요청한 서비스 앱 ID | O |
| user_id | String | 연결 해제를 요청한 사용자 회원번호 | O |
| account_id Inhouse | String | 연결 해제를 요청한 사용자 카카오계정 ID 회원번호를 저장하지 않거나 참고 정보로 필요한 경우에 제공 가능 인하우스 앱이 아닐 경우, 카카오계정 ID 응답 권한을 가진 앱에만 제공 | X |
| referrer_type | String | 사용자가 연결 해제를 요청한 경로, 아래 중 하나
| O |
| group_user_token | String | 연결 해제를 요청한 사용자의 그룹 사용자 토큰, 연결 해제가 발생한 앱이 그룹앱인 경우에만 제공 | X |
- HTTP 상태 코드
200 OK(3초 내)
요청: GET 메서드
curl -v -G GET "${UNLINK_CALLBACK_URL}?app_id=${APP_ID}&user_id=${USER_ID}&referrer_type=UNLINK_FROM_APPS" \-H "Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}"
요청: POST 메서드
curl -v -X POST "${UNLINK_CALLBACK_URL}" \-H "Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}" \--data-urlencode "app_id=${APP_ID}" \--data-urlencode "user_id=${USER_ID}" \--data-urlencode "referrer_type=UNLINK_FROM_APPS"
응답
HTTP/1.1 200 OK
| 메서드 | URL | 필수 응답 규격 | 인증 방식 |
|---|---|---|---|
GET | 앱 관리 페이지의 [앱] > [웹훅] > [연결 해제 웹훅]에 등록한 [연결 해제 불가 사유 API]의 URL | HTTP 상태 코드 200 OK (3초 내) | 대표 어드민 키 |
연결 해제 웹훅 시 [연결 해제 불가능 사용자 포함] 설정을 한 경우, 연결 해제 불가 사유 API를 호출해야 합니다. 연결 해제 불가능한 경우가 있는 서비스에서 사용자가 연결 해제를 요청한 경우, 연결 해제 불가 사유 API를 호출해 연결을 끊을 수 없는 원인을 확인해 사용자에게 안내하는 데 사용됩니다.
카카오계정 탈퇴 불가 설정은 카카오계정의 탈퇴 요청을 제한하는 것으로 카카오디벨로퍼스에서 지원하지 않으며, 계정파트에 문의해 별도로 설정해야 합니다. 자세한 안내는 카카오계정 탈퇴 불가 설정을 참고합니다.
연결 해제 불가 사유 API의 요청은 연결 해제 설정에 등록된 [연결 해제 불가 사유 API]의 URL로 사전에 정의된 파라미터들을 포함해 전달됩니다. 서비스에서는 아래 정보를 JSON 형식으로 응답의 deactivation 키 하위에 담아 제공해야 합니다. 응답의 HTTP Status는 성공 시 200으로 고정되어야 합니다.
- 카카오 API 플랫폼 서버에서 서비스 서버로 보내는 요청 규격입니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | 대표 어드민 키, 유효한 요청인지 판단하는 데 사용Authorization: KakaoAK ${PRIMARY_ADMIN_KEY} | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| app_id | Long | 앱 ID | O |
| app_user_id | Long | 회원번호 | O |
| account_id | Integer | 카카오계정 ID 공동체 서비스인 경우, 권한에 따라 전달되지 않을 수 있음 | X |
| locale | String | 사용자에게 안내할 메시지의 언어, ISO 3166 COUNTRY CODES 참고 사전 안내 없이 추가될 수 있음 | O |
| mobile | Boolean | 모바일 환경인지 여부 | O |
- 서비스 서버에서 카카오 API 플랫폼 서버로 반환해야 하는 응답 규격입니다.
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| deactivation | Deactivation | 연결 해제 불가 사유 조회 요청에 대한 응답 아래 Deactivation의 필수 항목을 포함한 JSON 객체를 반환해야 함 | O |
- 아래 명시된 필드 이외의 다른 필드를 포함해도 무방하나, 명시된 필드 이외의 필드는 무시됩니다.
- 요청의
locale,mobile파라미터를 참고해 사용자 환경에 맞는 정보를 응답에 제공해야 합니다.
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| canDeactivate | Boolean | 연결 해제 가능 여부
false인 경우, 아래 title, message 필드로 연결 해제 불가 사유의 상세 내용을 전달 필요존재하지 않는 사용자인 경우 true로 응답 필요 | O |
| title | String | 사용자에게 안내할 내용의 제목, 기본 문자열로 구성 중요: canDeactivate가 false인 경우 필수 | X |
| message | String | 사용자에게 안내할 내용의 본문, 기본 문자열로 구성 중요: canDeactivate가 false인 경우 필수 | X |
| checkboxLabel | String | canDeactivate 값이 false인 연결 해제 불가능 사용자가, 선택 시 연결 해제를 할 수 있는 체크박스 UI에 들어갈 문구현재 UI에는 고정 문구("위 내용을 확인했습니다.")가 노출되지만, 기능이 변경될 수 있으므로 사용자에게 노출되어도 무방한 문자열 값으로 전달 필요 checkboxLabel 값 전달 시, 사용자가 안내 문구 확인 후 연결 해제할 수 있도록 체크박스와 [연결 해제] 버튼 표시checkboxLabel 값이 빈 문자열이거나 전달되지 않은 경우, 사용자가 연결 해제를 할 수 없도록 체크박스와 [연결 해제] 버튼 표시 안 함 | X |
요청
curl -v -G "${등록된 연결 해제 불가 사유 API URL}" \-H "Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}" \-d "app_id=987000" \-d "account_id=1122" \-d "app_user_id=1376016924429759250" \-d "locale=ko" \-d "mobile=false"
응답: 연결 해제 가능한 사용자
{"deactivation": {"canDeactivate": true}}
응답: 연결 해제 불가능 사용자
{"deactivation": {"canDeactivate": false,"title": "사용자 안내 제목입니다.","message": "모든 정보 삭제 버튼을 누르면 나타나는 사용자 안내의 본문입니다."}}

로그아웃 웹훅은 카카오 로그인 사용 서비스의 사용자가 서비스 외부에서 로그아웃을 요청 했거나, 계정 정보 수정 또는 제재 등으로 인한 로그아웃이 발생한 경우, 카카오가 해당 사실을 서비스로 전달하는 기능입니다. 웹훅을 수신한 서비스는 HTTP 상태 코드 200 OK로 3초 내에 응답해야 합니다.
웹훅을 수신한 서비스는 로그아웃한 사용자의 서비스 세션을 만료시켜 푸시 알림 대상에서 제외하거나, 서비스 재이용 시 자연스러운 동선을 제공할 수 있습니다.
- 사용자는 웹훅 전송 성공 여부와 무관하게 로그아웃 처리됩니다.
- 연결 해제로 인한 로그아웃은 연결 해제 웹훅으로 처리해야 합니다.
- 로그아웃 웹훅은 모든 로그아웃 경로에 대한 웹훅 전송을 보장하지 않습니다. 서비스에서도 자체적으로 로그아웃으로 인한 토큰 만료 등 서비스 외부에서의 로그아웃에 대한 예외처리를 구현해야 합니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}인증 방식, 대표 어드민 키로 인증 요청 | O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| app_id | String | 서비스 앱 ID | O |
| user_id | String | 로그아웃된 사용자 회원번호 | O |
| account_id Inhouse | String | 로그아웃된 사용자 카카오계정 ID 회원번호를 저장하지 않거나 참고 정보로 필요한 경우에 제공 가능 인하우스 앱이 아닐 경우, 카카오계정 ID 응답 권한을 가진 앱에만 제공 | X |
| referrer_type | String | 참고용 로그아웃 경로 정보LOGOUTALL_FROM_ACCOUNT: 카카오계정 비밀번호 변경, 제재 등으로 인한 로그아웃 | O |
- HTTP 상태 코드
200 OK(3초 내)
요청: GET 메서드
curl -v -X GET "${LOGOUT_CALLBACK_URL}?app_id=${APP_ID}&user_id=${USER_ID}&referrer_type=UNLINK_FROM_APPS" \-H "Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}"
요청: POST 메서드
curl -v -X POST "${LOGOUT_CALLBACK_URL}" \-H "Authorization: KakaoAK ${PRIMARY_ADMIN_KEY}" \-d "app_id=12345" \-d "app_user_id=1234567" \-d "referrer_type=LOGOUTALL_FROM_ACCOUNT"
응답
HTTP/1.1 200 OK
계정 상태 변경 웹훅은 카카오 계정 상태가 변경됐을 때, 카카오 로그인을 사용하는 서비스에 변경 이벤트 정보를 전달하는 기능입니다. 계정 상태 변경 웹훅을 참고합니다.
인하우스 앱은 아래 정책을 따릅니다.
- [카카오계정 상태 변경 내역] 동의항목을 설정하지 않아도 CAEP, RISC 이벤트를 사용할 수 있습니다.
- 앱 사용자가 정보 제공에 동의하지 않아도 변경 이벤트를 발송합니다.
- KAKAO 카테고리에서 아래 이벤트를 추가로 사용할 수 있습니다.
| 이벤트 타입 | 발생 시점 | 상세 명세 |
|---|---|---|
| User ServiceTerms Consent | 사용자가 서비스 약관에 동의 시 | 스키마https://schemas.kakao.com/platevent/kakao/event-type/user-service-term-consent파라미터 service_term: 서비스가 지정한 서비스 약관의 태그 |
| User ServiceTerms Withdraw | 사용자가 서비스 약관에 동의 철회 시 | 스키마https://schemas.kakao.com/platevent/kakao/event-type/user-service-term-withdraw파라미터 service_term: 서비스가 지정한 서비스 약관의 태그 |
| Kakao Account Term Consent | 카카오계정 약관 동의 | 스키마https://schemas.kakao.com/platevent/kakao/event-type/account-term-consent파라미터 account_term: 동의한 카카오계정 약관 코드
OPTIONAL_PROFILE: 프로필정보 추가 수집 동의
|
| Kakao Account Term Withdraw | 카카오계정 약관 철회 | 스키마https://schemas.kakao.com/platevent/kakao/event-type/account-term-withdraw파라미터 account_term: 동의 철회한 카카오계정 약관 코드
OPTIONAL_PROFILE: 프로필정보 추가 수집 동의
|
공동체 앱에서 CAEP, RISC 카테고리의 이벤트를 사용하려면 권한이 필요합니다.
- [서비스] API플랫폼 아지트에서 [계정 상태 변경 웹훅 권한] 요청
- 권한을 부여받은 후, 앱 관리 페이지의 [카카오 로그인] > [동의항목]에서 [카카오계정 상태 변경 내역]을 [필수 동의] 또는 [선택 동의] 동의 단계로 설정합니다.
- 동의항목을 설정해도, 사용자가 [카카오계정 상태 변경 내역]에 동의한 경우에만 이벤트 정보가 전달됩니다.