

이 문서는 REST API를 사용한 카카오톡 소셜 API 구현 방법을 안내합니다.
이 문서에 포함된 기능은 [도구] > [REST API 테스트]에서 사용해 볼 수 있습니다.
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET |
https://kapi.kakao.com/v1/api/talk/profile |
액세스 토큰 |
| 권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
|---|---|---|---|
| 필요: 동의항목 | 플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 프로필 정보(닉네임/프로필 사진) 닉네임 프로필 사진 |
현재 로그인한 사용자의 카카오계정에 연결된 카카오톡 프로필 정보를 받는 기능입니다. 카카오톡 프로필과 카카오계정 프로필의 차이는 이해하기를 참고합니다.
액세스 토큰을 헤더에 담아 GET으로 요청하고, 응답은 JSON 객체로 받습니다. 사용자 카카오계정에 연결된 카카오톡이 없다면 에러 응답을 받습니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 |
O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| nickName | String |
카카오톡 닉네임 필요한 동의항목: 프로필 정보(닉네임/프로필 사진) 또는 닉네임 |
X |
| profileImageURL | String |
카카오톡 프로필 이미지 URL 640px * 640px 크기, HTTPS만 지원필요한 동의항목: 프로필 정보(닉네임/프로필 사진) 또는 프로필 사진 |
X |
| thumbnailURL | String |
카카오톡 프로필 썸네일(Thumbnail) 이미지 URL 110px * 110px 크기, HTTPS만 지원필요한 동의항목: 프로필 정보(닉네임/프로필 사진) 또는 프로필 사진 |
X |
* countryISO: Deprecated, 사용자가 카카오톡을 이용 중인 국가(String), 공지 참고
2021년 6월 25일부터 프로필 정보가 '닉네임'과 '프로필 사진'으로 분리되어 제공됩니다. 분리된 동의항목인 '닉네임'과 '프로필 사진' 동의항목을 각각 설정하여 서비스에 필요한 프로필 정보만 선택적으로 제공 받을 수 있습니다. 기존 '프로필(닉네임/프로필 사진)' 동의항목을 사용 중인 앱에서는 기존과 같이 해당 동의항목으로 닉네임과 프로필 사진 정보를 모두 받을 수 있습니다. 기존 동의항목을 사용하던 앱에서 분리된 동의항목을 사용하려면 데브톡에서 변경을 요청합니다. 이 경우, 응답 구성이 변경될 수 있으므로 주의합니다. 자세한 내용은 공지를 참고합니다.
curl -v -G GET "https://kapi.kakao.com/v1/api/talk/profile" \
-H "Authorization: Bearer ${ACCESS_TOKEN}"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"nickName":"홍길동",
"profileImageURL":"https://xxx.kakao.co.kr/.../aaa.jpg",
"thumbnailURL":"https://xxx.kakao.co.kr/.../bbb.jpg"
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"nickName":"홍길동"
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"profileImageURL":"https://xxx.kakao.co.kr/.../aaa.jpg",
"thumbnailURL":"https://xxx.kakao.co.kr/.../bbb.jpg"
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{}
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET |
https://kapi.kakao.com/v1/api/talk/friends |
액세스 토큰 |
| 권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
|---|---|---|---|
| 필요: 사용 권한 |
플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 카카오 서비스 내 친구목록(프로필사진, 닉네임, 즐겨찾기 포함) |
현재 로그인한 사용자의 카카오계정에 연결된 카카오톡의 친구 정보를 받아 옵니다. 액세스 토큰을 헤더에 담아 GET으로 요청합니다. 정렬 순서, 한 페이지에 가져올 친구 수 등 파라미터를 선택적으로 사용할 수 있습니다.
응답은 JSON 객체로 받습니다. 카카오톡 친구 수가 요청 시 limit보다 많다면 결과가 페이지로 나뉩니다. 이 경우, 직접 개별 파라미터를 지정하지 않고도 액세스 토큰과 응답에 포함된 after_url로 GET 요청을 해 다음 페이지의 친구 목록을 받아올 수 있습니다. 사용자 카카오계정에 연결된 카카오톡이 없다면 에러 응답을 받습니다.
파라미터 중 친구 정보를 정렬하는 기준은 order와 friend_order으로 설정합니다. 만약 친구 목록 응답에 즐겨찾기 친구들을 먼저 나오게 하고 싶다면 order는 'asc', friend_order은 'favorite'으로 지정합니다. 즐겨찾기 여부와 관계없이 닉네임 오름차순으로 친구 목록을 받아보려면 order는 'asc', friend_order은 'nickname'으로 지정합니다.
만약 사용자가 카카오톡 친구 목록 제공에 동의하지 않아 요청이 실패한 경우, 아래 내용을 참고해 사용자 동의를 받은 후 다시 요청합니다.
친구 목록은 파라미터(order) 지정에 따라 오름차순(asc) 또는 내림차순(desc)으로 정렬되며, 기본 정렬 기준인 'asc'일 경우, 세부적인 정렬 순서는 아래와 같습니다. 'desc'일 경우는 아래의 정렬 순서와 반대로 정렬됩니다.
기본적으로 한글 기준으로 정렬되지만, Kakao SDK로 언어를 설정한 경우 영어 기준으로 정렬됩니다. friend_order를 favorite으로 설정해 즐겨찾기 친구 우선 정렬로 요청했다면 즐겨찾기 친구, 그 외 친구들의 정보 순으로 정렬되며, 각각 동일한 세부 정렬 순서가 적용됩니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: Bearer ${ACCESS_TOKEN}인증 방식, 액세스 토큰으로 인증 요청 |
O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| offset | Integer |
친구 목록 시작 지점(기본값: 0) |
X |
| limit | Integer |
한 페이지에 가져올 친구 최대 수(기본값: 10, 최대: 100) |
X |
| order | String |
친구 목록 정렬 순서 오름차순( asc) 또는 내림차순(desc)(기본값 asc) |
X |
| friend_order | String |
친구 목록 정렬 시 기준 설정favorite: 즐겨찾기 친구 우선 정렬nickname: 닉네임 순서 정렬로 기준 설정(기본값 favorite) |
X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| elements | Friend[] |
각 친구 정보를 담은 JSON 배열 |
X |
| total_count | Integer |
전체 친구 수 | O |
| before_url | String |
친구 목록 이전 페이지 URL | X |
| after_url | String |
친구 목록 다음 페이지 URL | X |
| favorite_count | Integer |
즐겨찾기(favorite) 친구 수 |
X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| id | Long |
회원번호 | O |
| uuid | String |
친구마다 고유한 값을 가지는 참고용 코드(Code) 카카오톡 메시지 전송 시 사용 |
O |
| favorite | Boolean |
해당 친구 즐겨찾기 여부 | X |
| profile_nickname | String |
프로필 닉네임 | X |
| profile_thumbnail_image | String |
프로필 썸네일(Thumbnail) 이미지HTTPS만 지원 |
X |
* allowed_msg: Deprecated, 메시지 차단 여부, 프로필 공개 설정 기능 추가에 따라 더 이상 사용되지 않음
curl -v -G GET "https://kapi.kakao.com/v1/api/talk/friends" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "limit=3"
curl -v -G GET "https://kapi.kakao.com/v1/api/talk/friends" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-d "offset=3" \
-d "limit=3" \
-d "order=asc"
HTTP/1.1 200 OK
{
"after_url": "https://kapi.kakao.com/v1/api/talk/friends?offset=3&limit=3&order=asc",
"elements": [
{
"id": 00000000001,
"uuid": "abcdefg0001",
"favorite": true,
"profile_nickname": "이수민",
"profile_thumbnail_image": "https://xxx.kakao.co.kr/.../aaa.jpg"
},
{
"id": 00000000002,
"uuid": "abcdefg0002",
"favorite": false,
"profile_nickname": "홍길동",
"profile_thumbnail_image": "https://xxx.kakao.co.kr/.../bbb.jpg"
},
{
"id": 00000000003,
"uuid": "abcdefg0003",
"favorite": false,
"profile_nickname": "김철수",
"profile_thumbnail_image": "https://xxx.kakao.co.kr/.../ccc.jpg"
}
],
"total_count": 11,
"favorite_count": 1
}
| 메서드 | URL | 인증 방식 |
|---|---|---|
GET/POST |
https://kapi.kakao.com/v2/api/talk/profiles |
서비스 앱 어드민 키 |
| 권한 | 사전 설정 | 카카오 로그인 | 동의항목 |
|---|---|---|---|
| 필요: 동의항목 | 플랫폼 등록 카카오 로그인 활성화 동의항목 |
필요 | 필요: 프로필 정보(닉네임/프로필 사진) 닉네임 프로필 사진 |
서비스 사용자의 카카오톡 프로필 목록을 조회합니다. 특정 사용자를 지정해 그 사용자 기준으로 보이는 카카오톡 프로필 목록을 조회할 수도 있습니다.
카카오톡 프로필 조회 API와 카카오톡 친구 목록 조회 API는 사용자의 인증 정보로 각각 서비스 사용자의 프로필과 친구 목록을 요청합니다. 반면, 이 API는 서비스 관리자가 서비스 어드민 키로 서비스 사용자의 카카오톡 프로필 정보를 조회합니다.
요청 시 조회할 사용자 ID 목록을 전달하면 사용자의 카카오톡 프로필 목록을 반환합니다. 조회 대상 중 단 한 명이라도 서비스에 가입되지 않은 사용자가 포함된 경우 API 호출이 실패하고 에러가 발생합니다.
조회 대상이 멀티 프로필을 설정한 경우, 멀티 프로필이 적용된 프로필 정보가 반환됩니다. 조회자와 조회 대상자가 친구 관계인 경우, 조회자 기준으로 노출되는 프로필 정보(닉네임, 이미지)가 반환됩니다. 닉네임과 프로필 이미지 URL로 응답하는 정보는 프로필 정보 노출 우선순위를 따릅니다.
| 이름 | 설명 | 필수 |
|---|---|---|
| Authorization | Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}인증 방식, 서비스 앱 어드민 키로 인증 요청 |
O |
| Content-Type | Content-Type: application/x-www-form-urlencoded;charset=utf-8요청 데이터 타입 |
O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| target_ids | Long[] |
카카오톡 프로필을 가져올 대상 사용자 ID 목록 | O |
| target_id_type | String |
target_id 타입, user_id(회원번호)로 고정 |
O |
| viewer_id | Long |
카카오톡 프로필을 조회할 때, 조회 기준이 될 사용자 IDviewer_id를 전달하지 않는 경우, target_ids로 전달한 사용자의 카카오톡 프로필만 응답 |
X |
| viewer_id_type | String |
viewer_id 타입, user_id(회원번호)로 고정 |
X |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| viewer | TalkProfileInfo |
요청한 viewer_id에 해당하는 사용자의 카카오톡 프로필 정보파라미터에 viewer_id를 포함한 경우에만 제공 |
X |
| targets | TalkProfileInfo[] |
target_ids로 지정한 사용자의 카카오톡 프로필 정보 목록중요: viewer_id의 사용자와 친구인 경우, 사용자에게 보이는 멀티 프로필이 적용되어 반환 |
O |
| 이름 | 타입 | 설명 | 필수 |
|---|---|---|---|
| user_id | Long |
회원번호, 카카오계정과 앱이 연결될 때 부여되는 앱별 사용자 고유 ID | O |
| nickname | String |
카카오톡 프로필 닉네임 필요한 동의항목: 닉네임, 또는 프로필 정보(닉네임/프로필 사진) |
X |
| profile_image | String |
카카오톡 프로필 사진 URL 필요한 동의항목: 프로필 사진, 또는 프로필 정보(닉네임/프로필 사진) |
X |
| thumbnail_image | String |
카카오톡 프로필 썸네일 이미지 URL 필요한 동의항목: 프로필 사진, 또는 프로필 정보(닉네임/프로필 사진) 참고: 프로필 변경 시 기존 프로필 이미지 URL 삭제 처리 |
X |
curl -X GET "https://kapi.kakao.com/v2/api/talk/profiles" \
-H "Authorization: KakaoAK ${SERVICE_APP_ADMIN_KEY}" \
-H "Content-Type: application/x-www-form-urlencoded;charset=utf-8" \
-d "viewer_id=12345" \
-d "viewer_id_type=user_id" \
-d "target_ids=[9876,5432]" \
-d "target_id_type=user_id"
HTTP/1.1 200 OK
{
"viewer": {
"user_id": 12345,
"nickname": "xxx",
"profile_image_url": "http://yyy.kakao.com/dn/.../img_640x640.jpg",
"thumbnail_image_url": "http://yyy.kakao.com/.../img_110x110.jpg",
},
"targets": [
{
"user_id": 9876,
"nickname": "yyy",
"profile_image_url": "http://yyy.kakao.com/dn/.../img_640x640.jpg",
"thumbnail_image_url": "http://yyy.kakao.com/.../img_110x110.jpg",
},
{
"user_id": 5432,
"nickname": "zzz",
"profile_image_url": "http://yyy.kakao.com/dn/.../img_640x640.jpg",
"thumbnail_image_url": "http://yyy.kakao.com/.../img_110x110.jpg",
}
]
}
HTTP/1.1 200 OK
{
"targets": [
{
"user_id": 9876,
"nickname": "yyy",
},
]
}
HTTP/1.1 400 Bad Request
Content-Type: application/json;charset=UTF-8
{
"code": -101,
"msg": "NotRegisteredUserException"
}
HTTP/1.1 400 Bad request
Content-Type: application/json;charset=UTF-8
{
"code": -2,
"msg": "invalid target_ids. can get the profile only to registered users."
}