카카오톡 api 예제 - kakaotog api yeje

REST API

이 문서는 REST API를 사용한 카카오 API 사용법과 카카오디벨로퍼스(Kakao Developers, 이하 개발자 웹사이트) 설정에 대하여 안내합니다.

기능 소개

카카오 API는 대부분의 기능을 REST API로 제공합니다. 카카오톡 공유나 서비스 UI와 관련 있는 플러그인 성격의 일부 기능을 제외하고 모든 기능을 서비스 서버에서 REST API로 구현할 수 있습니다. 또한 카카오 SDK가 지원하지 않는 카카오 API는 REST API를 통해 사용 가능합니다.

REST API는 HTTP 요청을 보낼 수 있는 환경이라면 어디서든 이용 가능합니다. 클라이언트에서 서버로, 또는 서버에서 서버로 요청을 보낼 수 있습니다. 예를 들면 다음과 같은 환경에서 REST API를 사용할 수 있습니다.

  • 모바일/PC 웹 환경
  • iOS, Android 등 모바일 환경
  • Java, Ruby, Python 등 다양한 환경의 웹 서버

REST API 요청과 응답 규격을 비롯한 자세한 정보는 REST API 레퍼런스에서 확인할 수 있습니다.

요구 사양

카카오 플랫폼이 제공하는 REST API는 SSL(Secure Sockets Layer)이 적용된 HTTPS 프로토콜로만 호출 가능합니다. 이 외 개발 환경 요구 사양은 아래의 지원 버전 정보를 참고합니다.

NameVersion
OS X Mavericks 이상
Windows Windows XP SP3 이상
Java JRE 1.8.0_101 이상
브라우저 Chrome 49 이상
Firefox 50 이상
Safari 10 이상
IE(Internet Explorer) 9 이상
Edge 14 이상
CentOS/RHEL ca-certificates-2015.2.4-65.0.1.el6_6.noarch 등

* 참고: 카카오 Open API 플랫폼 SSL 인증서 변경

* IE를 제외한 다른 브라우저의 최신 버전 사용 권장

플랫폼 설정

[내 애플리케이션] > [플랫폼]에서 사이트 도메인을 비롯한 Web 플랫폼 정보를 입력할 수 있습니다. 자세한 안내는 플랫폼 등록을 참고합니다.

REST API 테스트 도구

개발자 웹사이트는 REST API를 개발하고 디버깅할 때 유용한 REST API 테스트 도구를 제공합니다.

curl을 이용한 테스트

REST API는 REST API 테스트 도구 외에 curl을 이용하여 테스트해볼 수 있습니다. macOS에는 일반적으로 curl이 기본 탑재돼 있어 별도 설치가 필요하지 않지만, Windows PC에서 테스트하려면 curl을 설치해야 합니다.

REST API 테스트 도구를 사용하여 간편하게 요청 및 응답 구성을 확인할 수 있습니다. 화면 구성 요소는 아래와 같습니다.

카카오톡 api 예제 - kakaotog api yeje

🅐 API 목록: 테스트할 API를 선택합니다.

🅑 앱 정보: REST API 요청을 보낼 대상 테스트 앱을 선택합니다. 예제인 [developers-sample]이 기본 설정돼 있으며, 앱 이름 옆의 목록 버튼을 눌러 사용자가 직접 등록한 앱으로 변경 가능합니다.

🅒 API 정보: 현재 선택한 API가 어떤 기능인지 설명합니다.

🅓 인증: 요청 헤더(Header)에 액세스 토큰과 앱 어드민 키 중 어떤 정보를 전달할 것인지 선택합니다. 액세스 토큰을 선택한 경우, [토큰 발급]을 누르면 현재 로그인한 카카오계정으로 테스트 앱의 액세스 토큰을 바로 발급 받을 수 있습니다.

🅔 Query String: 테스트 요청 시 전달할 파라미터 값을 직접 설정할 수 있습니다. 각 항목에 입력해야 하는 값의 내용이나 형식은 아래 요청 및 응답 정보에서 확인할 수 있습니다. [전송] 버튼을 눌러 입력한 내용대로 요청을 실행할 수 있습니다.

카카오톡 api 예제 - kakaotog api yeje

🅕 요청: 현재 선택한 API의 파라미터에 대한 설명입니다.

🅖 응답: API 요청 결과로 받는 응답의 구성 요소를 설명합니다.

카카오톡 api 예제 - kakaotog api yeje

🅗 응답 예제: 응답 및 에러가 어떤 형식과 구성으로 제공되는지 참고할 수 있도록 제공되는 기본 응답 예제입니다.

🅔 파라미터: [전송] 버튼을 눌러 테스트 요청을 실행할 수 있습니다. 요청 결과 화면은 응답 결과와 함께 사용자가 직접 커맨드(Command) 또는 터미널(Terminal)에서 전송해 볼 수 있는 요청 예제를 제공합니다. 요청 결과 화면의 구성 요소는 다음과 같습니다.

카카오톡 api 예제 - kakaotog api yeje

🅘 HTTP 상태 코드(Status code): API 요청 결과로 받은 응답의 HTTP 상태 코드입니다. 자세한 정보는 응답 코드에서 확인할 수 있습니다.

🅙 응답 본문(Body): API 요청 결과로 받은 응답 본문입니다.

🅚 요청 코드 예시: 사용자의 개발 환경에서 직접 요청해 보는 데 사용할 수 있는 예제입니다.

참고 예제

다양한 프로그래밍 언어로 REST API 요청과 응답 처리를 구현할 수 있습니다. 다음은 REST API를 사용하는 언어별 참고 예제입니다.

  • Java
  • PHP

예제 추가 요청 방법

이 문서에서 제공하지 않는 다른 언어 및 프레임워크(Framework)의 참고 자료나 예제는 데브톡에서 검색 또는 문의합니다.

보안: 허용 IP 주소

앱 키 유출과 같은 보안 사고에 대비하여, 카카오 API 서버가 등록된 IP 주소의 요청만 허용하도록 설정하는 기능입니다. [내 애플리케이션] > [허용 IP 주소]에서 설정할 수 있습니다.

카카오톡 api 예제 - kakaotog api yeje

해당 기능을 사용하려면 [허용 IP 주소 등록] 버튼을 눌러 서비스 서버의 IP 주소를 입력하고 [저장]을 누릅니다. 이 기능은 REST API 키 혹은 어드민 키를 사용하는 모든 카카오 API 호출에 적용되며 IP(IPv4, IPv6), CIDR(IP/CIDR), Subnet Mask(IP/Mask)를 지원합니다. 줄바꿈으로 여러 개의 IP를 추가할 수 있습니다.

허용 IP 등록 기능을 더 이상 사용하지 않으려면 [삭제] 버튼을 눌러 등록된 IP 주소 목록을 삭제합니다. 등록된 허용 IP 주소가 하나도 없으면 기능이 비활성화됩니다.

IP 주소를 등록한 후에는 등록된 IP 주소에서만 REST API 키 혹은 어드민 키로 카카오 API를 호출할 수 있습니다. 등록되지 않은 IP 주소에서 카카오 API 요청 시 아래와 같이 에러 응답을 받습니다. 문제를 해결하려면 요청을 보낸 서비스 서버의 IP 주소를 추가 등록하거나, 허용 IP 등록 기능을 비활성화해야 합니다.

"msg": "ip mismatched! callerIp=XXX.XXX.XXX.XXX. check out registered ips.",
"code": -401

카카오톡 메시지: REST API

이 문서는 REST API를 사용한 카카오톡 메시지 API 구현 방법을 안내합니다.

이 문서에 포함된 기능 일부는 [도구] > [REST API 테스트]를 통해 사용해 볼 수 있습니다.

시작하기 전에

구현 방식 선택

보낼 메시지의 종류와 구성 방법에 따라 호출해야할 API가 다르므로, 개발 전 다음 순서대로 사용할 API를 선택합니다.

Step 1. 메시지 API 선택하기

메시지 API는 카카오톡 공유와 카카오톡 메시지 두 가지입니다. 이해하기를 참고해 어떤 API로 메시지 보내기를 구현할 것인지 결정합니다. 카카오톡 메시지를 사용하려는 경우, Step 2 이후의 내용을 확인합니다.

주의: 카카오톡 공유 미지원

REST API는 카카오톡 공유를 지원하지 않습니다. 웹 페이지에 카카오톡 공유를 적용하려면 JavaScript SDK를 사용합니다.

Step 2. 메시지 종류 및 구성 방법 선택하기

종류를 참고하여 어떤 메시지 템플릿을 사용할지 결정합니다.

보낼 메시지는 기본 템플릿에 맞게 JSON 형태로 구성하거나, 서비스에 맞게 직접 구성한 사용자 정의 템플릿을 사용하여 구성할 수 있습니다. 자세한 정보는 메시지 구성 방법에서 확인할 수 있습니다.

Step 3. 메시지 전송 대상 선택하기

카카오톡 메시지의 경우, 수신 대상에 따라 나에게 보내기, 친구에게 보내기로 API가 구분되어 있다는 점에 유의합니다.

전송 대상설명
에게 보내기 현재 로그인한 사용자의 카카오톡 나와의 채팅에 메시지를 보냅니다. 이 기능으로는 다른 사용자에게 메시지를 보낼 수 없고, 로그인한 사용자 본인에게만 메시지를 보낼 수 있습니다.
친구에게 보내기 현재 로그인한 사용자의 카카오톡 친구에게 메시지를 보냅니다. 피커 또는 친구 목록 가져오기 API를 통해 수신 대상 정보를 받는 과정을 추가 구현해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다. 일간 및 월간 제공량이 정해져 있으므로 운영 정책을 참고합니다.


참고: 선택 조건별 필요한 API
전송 대상메시지 종류메시지 구성 방법API
나에게 보내기 피드, 리스트, 위치, 커머스, 텍스트 기본 템플릿 기본 템플릿으로 메시지 보내기
피드, 리스트, 커머스 사용자 정의 템플릿 사용자 정의 템플릿으로 메시지 보내기
스크랩 기본 템플릿 기본 템플릿으로 스크랩 메시지 보내기
사용자 정의 템플릿 사용자 정의 템플릿으로 스크랩 메시지 보내기
친구에게 보내기 피드, 리스트, 위치, 커머스, 텍스트 기본 템플릿 친구 목록 가져오기
기본 템플릿으로 메시지 보내기
피드, 리스트, 커머스 사용자 정의 템플릿 친구 목록 가져오기
사용자 정의 템플릿으로 메시지 보내기
스크랩 기본 템플릿 친구 목록 가져오기
기본 템플릿으로 스크랩 메시지 보내기
사용자 정의 템플릿 친구 목록 가져오기
사용자 정의 템플릿으로 스크랩 메시지 보내기

기본 템플릿으로 메시지 보내기

사용하려는 기본 템플릿에 따라 메시지를 JSON 형식으로 구성하여 보내는 기능입니다. 템플릿 종류에 따라 메시지 구성 요소가 다르므로, 기본 메시지 템플릿 구성 요소 및 예제를 참고해 메시지를 구성합니다.

액세스 토큰을 헤더에 담아 POST로 요청합니다. JSON 형식으로 구성한 기본 메시지 템플릿을 template_object 파라미터로 전달해야 합니다.

친구에게 메시지 보내기 요청 시에는 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuidreceiver_uuids 파라미터에 전달해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

모든 친구에게 메시지 보내기 성공 시, 메시지 보내기에 성공한 사용자 uuid 목록인 successful_receiver_uuids 배열을 받습니다. 일부 사용자에게만 메시지가 성공적으로 보내진 경우, successful_receiver_uuids와 함께 메시지 보내기에 실패한 사용자 목록과 실패 원인을 담은 failure_info 배열을 받습니다.

나에게 보내기

기본 정보
POST /v2/api/talk/memo/default/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
template_object Object 메시지 구성 요소를 담은 객체(Object)
피드, 리스트, 위치, 커머스, 텍스트 중 하나
O
Response
NameTypeDescriptionRequired
result_code Integer 전송 성공 시 0 O
Sample
Request

curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'template_object={
        "object_type": "feed",
        "content": {
            "title": "오늘의 디저트",
            "description": "아메리카노, 빵, 케익",
            "image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
            "image_width": 640,
            "image_height": 640,
            "link": {
                "web_url": "http://www.daum.net",
                "mobile_web_url": "http://m.daum.net",
                "android_execution_params": "contentId=100",
                "ios_execution_params": "contentId=100"
            }
        },
        "item_content" : {
            "profile_text" :"Kakao",
            "profile_image_url" :"https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_url" : "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_text" :"Cheese cake",
            "title_image_category" : "Cake",
            "items" : [
                {
                    "item" :"Cake1",
                    "item_op" : "1000원"
                },
                {
                    "item" :"Cake2",
                    "item_op" : "2000원"
                },
                {
                    "item" :"Cake3",
                    "item_op" : "3000원"
                },
                {
                    "item" :"Cake4",
                    "item_op" : "4000원"
                },
                {
                    "item" :"Cake5",
                    "item_op" : "5000원"
                }
            ],
            "sum" :"Total",
            "sum_op" : "15000원"
        },
        "social": {
            "like_count": 100,
            "comment_count": 200,
            "shared_count": 300,
            "view_count": 400,
            "subscriber_count": 500
        },
        "buttons": [
            {
                "title": "웹으로 이동",
                "link": {
                    "web_url": "http://www.daum.net",
                    "mobile_web_url": "http://m.daum.net"
                }
            },
            {
                "title": "앱으로 이동",
                "link": {
                    "android_execution_params": "contentId=100",
                    "ios_execution_params": "contentId=100"
                }
            }
        ]
    }'

curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'template_object={
        "object_type": "list",
        "header_title": "WEEKELY MAGAZINE",
        "header_link": {
            "web_url": "http://www.daum.net",
            "mobile_web_url": "http://m.daum.net",
            "android_execution_params": "main",
            "ios_execution_params": "main"
        },
        "contents": [
            {
                "title": "자전거 라이더를 위한 공간",
                "description": "매거진",
                "image_url": "https://mud-kage.kakao.com/dn/QNvGY/btqfD0SKT9m/k4KUlb1m0dKPHxGV8WbIK1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/1",
                    "mobile_web_url": "http://m.daum.net/contents/1",
                    "android_execution_params": "/contents/1",
                    "ios_execution_params": "/contents/1"
                }
            },
            {
                "title": "비쥬얼이 끝내주는 오레오 카푸치노",
                "description": "매거진",
                "image_url": "https://mud-kage.kakao.com/dn/boVWEm/btqfFGlOpJB/mKsq9z6U2Xpms3NztZgiD1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/2",
                    "mobile_web_url": "http://m.daum.net/contents/2",
                    "android_execution_params": "/contents/2",
                    "ios_execution_params": "/contents/2"
                }
            },
            {
                "title": "감성이 가득한 분위기",
                "description": "매거진",
                "image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/3",
                    "mobile_web_url": "http://m.daum.net/contents/3",
                    "android_execution_params": "/contents/3",
                    "ios_execution_params": "/contents/3"
                }
            }
        ],
        "buttons": [
            {
                "title": "웹으로 이동",
                "link": {
                    "web_url": "http://www.daum.net",
                    "mobile_web_url": "http://m.daum.net"
                }
            },
            {
                "title": "앱으로 이동",
                "link": {
                    "android_execution_params": "main",
                    "ios_execution_params": "main"
                }
            }
        ]
    }'

curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'template_object={
            "object_type": "location",
            "content": {
                "title": "카카오 판교오피스",
                "description": "카카오 판교오피스 위치입니다.",
                "image_url": "https://mud-kage.kakao.com/dn/drTdbB/bWYf06POFPf/owUHIt7K7NoGD0hrzFLeW0/kakaolink40_original.png",
                "image_width": 800,
                "image_height": 800,
                "link": {
                    "web_url": "https://developers.kakao.com",
                    "mobile_web_url": "https://developers.kakao.com/mobile",
                    "android_execution_params": "platform=android",
                    "ios_execution_params": "platform=ios"
                }
            },
            "buttons": [
                {
                    "title": "웹으로 보기",
                    "link": {
                        "web_url": "https://developers.kakao.com",
                        "mobile_web_url": "https://developers.kakao.com/mobile"
                    }
                }
            ],
            "address": "경기 성남시 분당구 판교역로 235 에이치스퀘어 N동 7층",
            "address_title": "카카오 판교오피스"
        }'

curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'template_object={
        "object_type": "commerce",
        "content": {
            "title": "Ivory long dress (4 Color)",
            "image_url": "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
            "image_width": 640,
            "image_height": 640,
            "link": {
                "web_url": "https://style.kakao.com/main/women/contentId=100",
                "mobile_web_url": "https://style.kakao.com/main/women/contentId=100",
                "android_execution_params": "contentId=100",
                "ios_execution_params": "contentId=100"
            }
        },
        "commerce": {
            "regular_price": 208800,
            "discount_price": 146160,
            "discount_rate": 30
        },
        "buttons": [
            {
                "title": "구매하기",
                "link": {
                    "web_url": "https://style.kakao.com/main/women/contentId=100/buy",
                    "mobile_web_url": "https://style.kakao.com/main/women/contentId=100/buy",
                    "android_execution_params": "contentId=100&buy=true",
                    "ios_execution_params": "contentId=100&buy=true"
                }
            },
            {
                "title": "공유하기",
                "link": {
                    "web_url": "https://style.kakao.com/main/women/contentId=100/share",
                    "mobile_web_url": "https://style.kakao.com/main/women/contentId=100/share",
                    "android_execution_params": "contentId=100&share=true",
                    "ios_execution_params": "contentId=100&share=true"
                }
            }
        ]
    }'

curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'template_object={
        "object_type": "text",
        "text": "텍스트 영역입니다. 최대 200자 표시 가능합니다.",
        "link": {
            "web_url": "https://developers.kakao.com",
            "mobile_web_url": "https://developers.kakao.com"
        },
        "button_title": "바로 확인"
    }'

Response
HTTP/1.1 200 OK
{
  "result_code":0
}

친구에게 보내기

기본 정보
POST /v1/api/talk/friends/message/default/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
receiver_uuids String[] 피커 또는 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
template_object Object 메시지 구성 요소를 담은 객체(Object)
피드, 리스트, 위치, 커머스, 텍스트 중 하나
O
Response
NameTypeDescriptionRequired
successful_receiver_uuids String[] 메시지 전송에 성공한 사용자 아이디(uuid) 배열 X
failure_info FailureInfo[] 실패 정보
요청 수신자가 2명 이상일 때 실패 시 "http status code: 200"과 함께 실패한 사용자 정보를 failure_info로 전달
요청 수신자가 1명일 때 실패 시 failure_info 없이 에러 코드로 전달
X
FailureInfo
NameTypeDescriptionRequired
code Integer 에러 코드 O
msg String 에러 메시지 O
receiver_uuids String[] 해당 에러 코드로 실패한 사용자 아이디(uuid) 배열 O
Sample
Request

curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode 'template_object={
        "object_type": "feed",
        "content": {
            "title": "오늘의 디저트",
            "description": "아메리카노, 빵, 케익",
            "image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
            "image_width": 640,
            "image_height": 640,
            "link": {
                "web_url": "http://www.daum.net",
                "mobile_web_url": "http://m.daum.net",
                "android_execution_params": "contentId=100",
                "ios_execution_params": "contentId=100"
            }
        },
        "item_content" : {
            "profile_text" :"Kakao",
            "profile_image_url" :"https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_url" : "https://mud-kage.kakao.com/dn/Q2iNx/btqgeRgV54P/VLdBs9cvyn8BJXB3o7N8UK/kakaolink40_original.png",
            "title_image_text" :"Cheese cake",
            "title_image_category" : "Cake",
            "items" : [
                {
                    "item" :"Cake1",
                    "item_op" : "1000원"
                },
                {
                    "item" :"Cake2",
                    "item_op" : "2000원"
                },
                {
                    "item" :"Cake3",
                    "item_op" : "3000원"
                },
                {
                    "item" :"Cake4",
                    "item_op" : "4000원"
                },
                {
                    "item" :"Cake5",
                    "item_op" : "5000원"
                }
            ],
            "sum" :"Total",
            "sum_op" : "15000원"
        },
        "social": {
            "like_count": 100,
            "comment_count": 200,
            "shared_count": 300,
            "view_count": 400,
            "subscriber_count": 500
        },
        "buttons": [
            {
                "title": "웹으로 이동",
                "link": {
                    "web_url": "http://www.daum.net",
                    "mobile_web_url": "http://m.daum.net"
                }
            },
            {
                "title": "앱으로 이동",
                "link": {
                    "android_execution_params": "contentId=100",
                    "ios_execution_params": "contentId=100"
                }
            }
        ]
    }'

curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode 'template_object={
        "object_type": "list",
        "header_title": "WEEKELY MAGAZINE",
        "header_link": {
            "web_url": "http://www.daum.net",
            "mobile_web_url": "http://m.daum.net",
            "android_execution_params": "main",
            "ios_execution_params": "main"
        },
        "contents": [
            {
                "title": "자전거 라이더를 위한 공간",
                "description": "매거진",
                "image_url": "https://mud-kage.kakao.com/dn/QNvGY/btqfD0SKT9m/k4KUlb1m0dKPHxGV8WbIK1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/1",
                    "mobile_web_url": "http://m.daum.net/contents/1",
                    "android_execution_params": "/contents/1",
                    "ios_execution_params": "/contents/1"
                }
            },
            {
                "title": "비쥬얼이 끝내주는 오레오 카푸치노",
                "description": "매거진",
                "image_url": "https://mud-kage.kakao.com/dn/boVWEm/btqfFGlOpJB/mKsq9z6U2Xpms3NztZgiD1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/2",
                    "mobile_web_url": "http://m.daum.net/contents/2",
                    "android_execution_params": "/contents/2",
                    "ios_execution_params": "/contents/2"
                }
            },
            {
                "title": "감성이 가득한 분위기",
                "description": "매거진",
                "image_url": "https://mud-kage.kakao.com/dn/NTmhS/btqfEUdFAUf/FjKzkZsnoeE4o19klTOVI1/openlink_640x640s.jpg",
                "image_width": 640,
                "image_height": 640,
                "link": {
                    "web_url": "http://www.daum.net/contents/3",
                    "mobile_web_url": "http://m.daum.net/contents/3",
                    "android_execution_params": "/contents/3",
                    "ios_execution_params": "/contents/3"
                }
            }
        ],
        "buttons": [
            {
                "title": "웹으로 이동",
                "link": {
                    "web_url": "http://www.daum.net",
                    "mobile_web_url": "http://m.daum.net"
                }
            },
            {
                "title": "앱으로 이동",
                "link": {
                    "android_execution_params": "main",
                    "ios_execution_params": "main"
                }
            }
        ]
    }'

curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode 'template_object={
        "object_type": "location",
        "content": {
            "title": "카카오 판교오피스",
            "description": "카카오 판교오피스 위치입니다.",
            "image_url": "https://mud-kage.kakao.com/dn/drTdbB/bWYf06POFPf/owUHIt7K7NoGD0hrzFLeW0/kakaolink40_original.png",
            "image_width": 800,
            "image_height": 800,
            "link": {
                "web_url": "https://developers.kakao.com",
                "mobile_web_url": "https://developers.kakao.com/mobile",
                "android_execution_params": "platform=android",
                "ios_execution_params": "platform=ios"
            }
        },
        "buttons": [
            {
                "title": "웹으로 보기",
                "link": {
                    "web_url": "https://developers.kakao.com",
                    "mobile_web_url": "https://developers.kakao.com/mobile"
                }
            }
        ],
        "address": "경기 성남시 분당구 판교역로 235 에이치스퀘어 N동 7층",
        "address_title": "카카오 판교오피스"
    }'

curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode 'template_object={
        "object_type": "commerce",
        "content": {
            "title": "Ivory long dress (4 Color)",
            "image_url": "https://mud-kage.kakao.com/dn/RY8ZN/btqgOGzITp3/uCM1x2xu7GNfr7NS9QvEs0/kakaolink40_original.png",
            "image_width": 640,
            "image_height": 640,
            "link": {
                "web_url": "https://style.kakao.com/main/women/contentId=100",
                "mobile_web_url": "https://style.kakao.com/main/women/contentId=100",
                "android_execution_params": "contentId=100",
                "ios_execution_params": "contentId=100"
            }
        },
        "commerce": {
            "regular_price": 208800,
            "discount_price": 146160,
            "discount_rate": 30
        },
        "buttons": [
            {
                "title": "구매하기",
                "link": {
                    "web_url": "https://style.kakao.com/main/women/contentId=100/buy",
                    "mobile_web_url": "https://style.kakao.com/main/women/contentId=100/buy",
                    "android_execution_params": "contentId=100&buy=true",
                    "ios_execution_params": "contentId=100&buy=true"
                }
            },
            {
                "title": "공유하기",
                "link": {
                    "web_url": "https://style.kakao.com/main/women/contentId=100/share",
                    "mobile_web_url": "https://style.kakao.com/main/women/contentId=100/share",
                    "android_execution_params": "contentId=100&share=true",
                    "ios_execution_params": "contentId=100&share=true"
                }
            }
        ]
    }'

curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/default/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode 'template_object={
        "object_type": "text",
        "text": "텍스트 영역입니다. 최대 200자 표시 가능합니다.",
        "link": {
            "web_url": "https://developers.kakao.com",
            "mobile_web_url": "https://developers.kakao.com"
        },
        "button_title": "바로 확인"
    }'

Response: 친구에게 보내기 성공
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002","abcdefg0003"]
}
Response: 일부 친구에게만 전송 성공
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002"],
  "failure_info":[{
      "code": -532,
      "msg": "daily message limit per sender has been exceeded.",
      "receiver_uuids": ["abcdefg0003"]
  }]
}

사용자 정의 템플릿으로 메시지 보내기

[도구] > [메시지 템플릿]에서 직접 구성한 사용자 정의 템플릿을 사용하여 메시지를 보내는 기능입니다.

액세스 토큰을 헤더에 담아 POST로 요청합니다. 사용자 정의 템플릿 ID를 template_id 파라미터로 전달해야 합니다.

메시지에 변동되는 정보를 포함하려면 해당 사용자 정의 템플릿에 사용자 인자를 추가한 후, template_args 파라미터를 통해 키와 값을 전달합니다. 사용자 정의 템플릿에 사용자 인자가 포함되었음에도 해당 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출됩니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuidreceiver_uuids 파라미터에 전달해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

모든 친구에게 메시지 보내기 성공 시, 메시지 보내기에 성공한 사용자 uuid 목록인 successful_receiver_uuids 배열을 받습니다. 일부 사용자에게만 메시지가 성공적으로 보내진 경우, successful_receiver_uuids와 함께 메시지 보내기에 실패한 사용자 목록과 실패 원인을 담은 failure_info 배열을 받습니다.

나에게 보내기

기본 정보
POST /v2/api/talk/memo/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
메시지 템플릿
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
template_id String 메시지 템플릿 도구에서 구성한 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달 X
Response
NameTypeDescriptionRequired
result_code Integer 전송 성공 시 0 O
Sample
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    -d "template_id=12345"
Response
HTTP/1.1 200 OK
{
  "result_code":0
}

친구에게 보내기

기본 정보
POST /v1/api/talk/friends/message/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
메시지 템플릿
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
receiver_uuids String[] 피커 또는 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
template_id String 메시지 템플릿 도구에서 구성한 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달 X
Response
NameTypeDescriptionRequired
successful_receiver_uuids String[] 메시지 전송에 성공한 사용자 아이디(uuid) 배열 X
failure_info FailureInfo[] 실패 정보
요청 수신자가 2명 이상일 때 실패 시 "http status code: 200"과 함께 실패한 사용자 정보를 failure_info로 전달
요청 수신자가 1명일 때 실패 시 failure_info 없이 에러 코드로 전달
X
FailureInfo
NameTypeDescriptionRequired
code Integer 에러 코드 O
msg String 에러 메시지 O
receiver_uuids String[] 해당 에러 코드로 실패한 사용자 아이디(uuid) 배열 O
Sample
Request
curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    -d "template_id=12345" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' 
Response: 친구에게 보내기 성공
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002","abcdefg0003"]
}
Response: 일부 친구에게만 전송 성공
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002"],
  "failure_info":[{
      "code": -532,
      "msg": "daily message limit per sender has been exceeded.",
      "receiver_uuids": ["abcdefg0003"]
  }]
}

기본 템플릿으로 스크랩 메시지 보내기

스크랩한 웹 페이지 정보를 바탕으로 스크랩 메시지를 구성하여 전송하는 기능입니다.

액세스 토큰을 헤더에 담아 POST로 요청합니다. 스크랩할 웹 페이지 URL을 request_url 파라미터로 전달해야 합니다. 스크랩할 웹 페이지의 도메인은 [내 애플리케이션] > [플랫폼] > [Web]에 등록돼 있어야 합니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuidreceiver_uuids 파라미터에 전달해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

모든 친구에게 메시지 보내기 성공 시, 메시지 보내기에 성공한 사용자 uuid 목록인 successful_receiver_uuids 배열을 받습니다. 일부 사용자에게만 메시지가 성공적으로 보내진 경우, successful_receiver_uuids와 함께 메시지 보내기에 실패한 사용자 목록과 실패 원인을 담은 failure_info 배열을 받습니다.

나에게 보내기

기본 정보
POST /v2/api/talk/memo/scrap/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 O
Response
NameTypeDescriptionRequired
result_code Integer 전송 성공 시 0 O
Sample
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/scrap/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode "request_url=https://developers.kakao.com"
Response
HTTP/1.1 200 OK
{
  "result_code":0
}

친구에게 보내기

기본 정보
POST /v1/api/talk/friends/message/scrap/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
receiver_uuids String[] 피커 또는 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능 O
Response
NameTypeDescriptionRequired
successful_receiver_uuids String[] 메시지 전송에 성공한 사용자 아이디(uuid) 배열 X
failure_info FailureInfo[] 실패 정보
요청 수신자가 2명 이상일 때 실패 시 "http status code: 200"과 함께 실패한 사용자 정보를 failure_info로 전달
요청 수신자가 1명일 때 실패 시 failure_info 없이 에러 코드로 전달
X
FailureInfo
NameTypeDescriptionRequired
code Integer 에러 코드 O
msg String 에러 메시지 O
receiver_uuids String[] 해당 에러 코드로 실패한 사용자 아이디(uuid) 배열 O
Sample
Request
curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/scrap/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode "request_url=https://developers.kakao.com"
Response: 성공
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002","abcdefg0003"]
}
Response: 일부 사용자에게 전송 실패
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002"],
  "failure_info":[{
      "code": -532,
      "msg": "daily message limit per sender has been exceeded.",
      "receiver_uuids": ["abcdefg0003"]
  }]
}

사용자 정의 템플릿으로 스크랩 메시지 보내기

스크랩한 웹 페이지 정보를 바탕으로 사용자 정의 메시지 내용을 구성하여 보내는 기능입니다. [도구] > [메시지 템플릿]에서 구성한 사용자 정의 템플릿을 기반으로 스크랩 메시지를 구성해 전송합니다.

액세스 토큰을 헤더에 담아 POST로 요청합니다. 스크랩할 웹 페이지 URL을 request_url 파라미터로 전달해야 합니다. 스크랩할 웹 페이지의 도메인은 [내 애플리케이션] > [플랫폼] > [Web]에 등록돼 있어야 합니다.

사용자 정의 템플릿 ID를 template_id 파라미터로 전달해야 합니다. 메시지에 변동되는 정보를 포함하려면 해당 사용자 정의 템플릿에 사용자 인자를 추가한 후, template_args 파라미터를 통해 키와 값을 전달합니다. 사용자 정의 템플릿에 사용자 인자가 포함되었음에도 해당 파라미터를 사용하지 않을 경우, 사용자 인자로 지정된 부분이 ${KEY} 형식으로 메시지에 그대로 노출됩니다.

친구에게 메시지 보내기 요청 시, 피커 또는 친구 목록 가져오기 API의 응답으로 받은 uuidreceiver_uuids 파라미터로 전달해야 합니다. 한 번에 최대 5명의 친구에게 메시지를 보낼 수 있습니다.

모든 친구에게 메시지 보내기 성공 시, 메시지 보내기에 성공한 사용자 uuid 목록인 successful_receiver_uuids 배열을 받습니다. 일부 사용자에게만 메시지가 성공적으로 보내진 경우, successful_receiver_uuids와 함께 메시지 보내기에 실패한 사용자 목록과 실패 원인을 담은 failure_info 배열을 받습니다.

나에게 보내기

기본 정보
POST /v2/api/talk/memo/scrap/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
메시지 템플릿
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능
스크랩 메시지 참고
O
template_id String 스크랩한 정보를 반영할 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달
스크랩 결과를 덮어쓰기(overwrite) 할 수는 없음
X
Response
NameTypeDescriptionRequired
result_code Integer 전송 성공 시 0 O
Sample
Request
curl -v -X POST "https://kapi.kakao.com/v2/api/talk/memo/scrap/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    -d "template_id=12345" \
    --data-urlencode "request_url=https://developers.kakao.com"     

친구에게 보내기

기본 정보
POST /v1/api/talk/friends/message/scrap/send HTTP/1.1
Host: kapi.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
사전 설정카카오 로그인사용자 동의권한
플랫폼 등록
카카오 로그인 활성화
동의 항목
메시지 템플릿
필요 필요:
카카오톡 메시지 전송(talk_message)
필요:
사용 권한
(친구에게 보내기)
Request
Parameter
NameTypeDescriptionRequired
receiver_uuids String[] 피커 또는 친구 목록 가져오기 API를 통해 얻은 사용자 uuid 값, 최대 5개 O
request_url String 스크랩할 웹 페이지 URL, [내 애플리케이션] > [플랫폼] > [Web]에 등록된 도메인만 사용 가능
스크랩 메시지 참고
O
template_id String 스크랩한 정보를 반영할 사용자 정의 템플릿의 ID O
template_args Object template_id로 지정한 템플릿에 사용자 인자(User argument)가 포함되어 있는 경우 대입할 값, key:value 형식으로 전달
스크랩 결과를 덮어쓰기(overwrite) 할 수는 없음
X
Response
NameTypeDescriptionRequired
successful_receiver_uuids String[] 메시지 전송에 성공한 사용자 아이디(uuid) 배열 X
failure_info FailureInfo[] 실패 정보
요청 수신자가 2명 이상일 때 실패 시 "http status code: 200"과 함께 실패한 사용자 정보를 failure_info로 전달
요청 수신자가 1명일 때 실패 시 failure_info 없이 에러 코드로 전달
X
FailureInfo
NameTypeDescriptionRequired
code Integer 에러 코드 O
msg String 에러 메시지 O
receiver_uuids String[] 해당 에러 코드로 실패한 사용자 아이디(uuid) 배열 O
Sample
Request
curl -v -X POST "https://kapi.kakao.com/v1/api/talk/friends/message/scrap/send" \
    -H "Content-Type: application/x-www-form-urlencoded" \
    -H "Authorization: Bearer ${ACCESS_TOKEN}" \
    --data-urlencode 'receiver_uuids=["abcdefg0001","abcdefg0002","abcdefg0003"]' \
    --data-urlencode "request_url=https://developers.kakao.com" \
    -d "template_id=12345"
Response: 성공
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002","abcdefg0003"]
}
Response: 일부 사용자에게 전송 실패
HTTP/1.1 200 OK
{
  "successful_receiver_uuids": ["abcdefg0001","abcdefg0002"],
  "failure_info":[{
      "code": -532,
      "msg": "daily message limit per sender has been exceeded.",
      "receiver_uuids": ["abcdefg0003"]
  }]
}

더보기