본문 바로가기메인 메뉴 바로가기사이드 메뉴 바로가기

kakao developers

Related sites
  • Docs
  • Kakao Moment
  • Personalized message management

사이드 메뉴

Kakao Map

Search

This document describes how to use the Personalized message management APIs.

MethodURLAuthorization
POSThttps://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/sendTestPersonalMessageBusiness token

Sends a test message of the Personal message X Reach campaign.

The message sent by this API includes a text [테스트 발송].

Send a POST request with the business token and ad account ID in the header. If the request is successful, the response has an empty body. If failed, refer to Error code to figure out its failure cause.

This API limits the number of calls you can make to every minute per user account and ad account.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${BUSINESS_ACCESS_TOKEN}
Business token as a type of user authentication.
O
adAccountIdadAccountId: ${AD_ACCOUNT_ID}
Ad account's ID.
O
NameTypeDescriptionRequired
IDIntegerCreative IDO
NameTypeDescriptionRequired
phoneNumberStringTarget's phone number.O
variablesJSONA JSON object including key-value pairs for variables in the message template.O
curl -X POST "https://apis.moment.kakao.com/openapi/v4/messages/creatives/1/sendTestPersonalMessage" \
-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \
-H "adAccountId: 1" \
-H "Content-Type: application/json" \
-d '{
"phoneNumber": "010-1234-1234",
"variables": {
"image_url1": "https://t1.daumcdn.net/b2/personalMessage/1/testImage.jpg",
"user_name1": "Test user"
}
}'
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
MethodURLAuthorization
POSThttps://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/sendPersonalMessageBusiness token

Sends a message of the Personal message X Reach campaign.

You can send only one message at once with this API.

Send a POST request with the business token and the ad account ID in the header. The delivery is made synchronously.

If the request is successful, the response includes information of the result. If failed, refer to Error code to figure out its failure cause.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${BUSINESS_ACCESS_TOKEN}
Business token as a type of user authentication.
O
adAccountIdadAccountId: ${AD_ACCOUNT_ID}
Ad account's ID.
O
NameTypeDescriptionRequired
IDIntegerCreative IDO
NameTypeDescriptionRequired
messageSerialNumberStringA unique ID that identifies each sent message.
The length must be under 39 characters, and the pattern is below.
yyyyMMdd-${creativeId}-${uniqueId_for_message}
For the single delivery, messageSerialNumber is automatically set to the unique request ID (requestId).
O
receiverTypeStringReceiver ID type, one of:
APP_USER_ID: Service user ID of the app connected to Personalized message creative template profileId
PHONE_NUMBER: Phone number
O
receiverKeyStringReceiver ID
A Service user ID or a phone number.
O
variablesJSONA JSON object including key-value pairs for variables in the message template.O
NameTypeDescription
requestIdStringA unique request ID
Used to retrieve the sending status.
messageSerialNumberStringA unique ID that identifies each sent message.
statusStringSending result, one of:
SUCCEEDED
FAILED
sendAtStringDate the message was sent, in yyyy-MM-dd HH:mm:ss format.
curl -X POST "https://apis.moment.kakao.com/openapi/v4/messages/creatives/1/sendPersonalMessage" \
-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \
-H "adAccountId: 1" \
-H "Content-Type: application/json" \
-d '{
"messageSerialNumber": "20230731-1-send1",
"receiverType": "PHONE_NUMBER",
"receiverKey": "010-1234-1234",
"variables": {
"image_url1": "https://t1.daumcdn.net/b2/personalMessage/1/testImage.jpg",
"user_name1": "테스트유저"
}
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"requestId": "20230731-1-001",
"messageSerialNumber": "20230731-1-send1",
"status": "SUCCEEDED",
"sendAt": "2023-07-31 16:00:00"
}
MethodURLAuthorization
POSThttps://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/sendPersonalMessagesBusiness token

Sends a message of the Personal message X Reach campaign.

With this API, you can send a minimum of 2 and 100 messages at once.

Send a POST request with the business token and ad account ID in the header. If the request includes invalid values, the response will be returned immediately. Otherwise, messages will be sent asynchronously.

If the request is successful, the response includes a JSON object including the sending status. If failed, refer to Error code to figure out its failure cause.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${BUSINESS_ACCESS_TOKEN}
Business token as a type of user authentication.
O
adAccountIdadAccountId: ${AD_ACCOUNT_ID}
Ad account's ID.
O
NameTypeDescriptionRequired
IDIntegerCreative IDO
NameTypeDescriptionRequired
requestIdStringA unique request ID
The length must be under 39 characters, and the pattern is below.
yyyyMMdd-${creativeId}-${uniqueId_for_message}
O
receiversPersonalMessageSendRequest[]Information for each messageO
NameTypeDescriptionRequired
messageSerialNumberStringA unique ID that identifies each sent message.
The length must be under 39 characters, and the pattern is below.
yyyyMMdd-${creativeId}-${uniqueId_for_message}
For the single delivery, messageSerialNumber is automatically set to the unique request ID (requestId).
O
receiverTypeStringReceiver ID type, one of:
APP_USER_ID: Service user ID of the app connected to Personalized message creative template profileId
PHONE_NUMBER: Phone number
O
receiverKeyStringReceiver ID
A Service user ID or a phone number.
O
variablesJSONA JSON object including key-value pairs for variables in the message template.O
NameTypeDescription
requestIdStringA unique request ID
Used to retrieve the sending status.
curl -X POST "https://apis.moment.kakao.com /openapi/v4/messages/creatives/1/sendPersonalMessages " \
-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \
-H "adAccountId: 1" \
-H "Content-Type: application/json" \
-d '{
"requestId": "20230731-1-request1",
"receivers": [
{
"messageSerialNumber": "20230731-1-send1",
"receiverType": "PHONE_NUMBER",
"receiverKey": "010-1234-1234",
"variables": {
"image_url1": "https://t1.daumcdn.net/b2/personalMessage/1/testImage1.jpg",
"user_name1": "Test user 1"
}
},
{
"messageSerialNumber": "20230731-1-send2",
"receiverType": "PHONE_NUMBER",
"receiverKey": "010-4321-4321",
"variables": {
"image_url1": "https://t1.daumcdn.net/b2/personalMessage/1/testImage2.jpg",
"user_name1": "Test user 2"
}
}
]
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"requestId": "20230731-1-request1"
}
MethodURLAuthorization
GEThttps://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/statuses/${REQUEST_ID}Business token

Retrieves sending status.

You can retrieve sending status in 7 days from the request.

Send a GET request with the business token and ad account ID in the header.

If the request is successful, the response includes whether sending is complete and the result of each sending. If failed, refer to Error code to figure out its failure cause.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${BUSINESS_ACCESS_TOKEN}
Business token as a type of user authentication.
O
adAccountIdadAccountId: ${AD_ACCOUNT_ID}
Ad account's ID.
O
NameTypeDescriptionRequired
IDIntegerCreative IDO
REQUEST_IDStringUnique request IDO
NameTypeDescription
completedBooleanWhether sending multiple messages is complete.
If not complete, completed is false, and results is an empty array.
resultsPersonalMessageResult[]The result list of each sending request.
NameTypeDescription
messageSerialNumberStringA unique ID that identifies each sent message.
statusStringSending result, one of:
SUCCEEDED
FAILED
statusReasonStringSending result detailed reason
sendAtStringDate the message was sent, in yyyy-MM-dd HH:mm:ss format.
curl -X GET "https://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/statuses/${REQUEST_ID}" \
-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \
-H "adAccountId: ${AD_ACCOUNT_ID}"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"completed": true,
"results": [
{
"status": "SUCCEEDED",
"sendAt": "2023-07-31 16:00:00"
}
]
}
MethodURLAuthorization
POSThttps://apis.moment.kakao.com/openapi/v4/messages/personal/images/uploadBusiness token

Enables you to upload images for Personalized messages.

You can upload up to 100 images at once.

Kakao checks the image specification and the policies and saves them into a stable internal repository.

Send a POST request with the business token and ad account ID in the header.

If the request is successful, the response includes URLs for Personalized messages. If failed, refer to Error code to figure out its failure cause.

Cautions when uploading images

  • Uploaded images should be included in the message content.
  • If the images are uploaded for other purposes, it is possible to get penalties to ad account.
  • Also recommend uploading images as close to the time of sending the message as possible.
  • The response image URL cannot be used permanently, and the registered image may be deleted without notice due to Kakao's system conditions.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${BUSINESS_ACCESS_TOKEN}
Business token as a type of user authentication.
O
adAccountIdadAccountId: ${AD_ACCOUNT_ID}
Ad account's ID.
O
NameTypeDescriptionRequired
filesMultipart file[]Image files to upload
File format: JPG, JPEG, PNG
Recommended size: 800x400(2:1 ratio), 800x800(1:1 ratio), 800x600(4:3 ratio)
File size: less than 10MB
O
NameTypeDescription
successFilesImageFile[]Uploaded image information
invalidFilesInvalidFile[]Image information and the reason that failed to upload
NameTypeDescription
downloadUrlStringImage URL
originalFileNameStringImage file name
NameTypeDescription
fileNameStringFile name that failed to upload
invalidReasonsInvalidReason[]Failure reasons
NameTypeDescription
reasonStringReason
descriptionStringDetail information
curl -X GET "https://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/statuses/${REQUEST_ID}" \
-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \
-H "adAccountId: ${AD_ACCOUNT_ID}"
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"successFiles": [
{
"originalFileName": "string",
"downloadUrl": "string"
}
],
"invalidFiles": [
{
"fileName": "string",
"invalidReasons": [
{
"reason": "string",
"description": "string"
}
]
}
]
}
MethodURLAuthorization
POSThttps://apis.moment.kakao.com/openapi/v4/messages/personal/videos/registerBusiness token

Sets a video on Kakao TV in advance to validate.

You can set up to 100 images at once.

You must request by the owner account of the Kakao TV channel.

The videos that are not set by this API cannot be used for Personalized messages.

Send a POST request with the business token and ad account ID in the header.

If the request is successful, the response includes whether the videos are set or not. If failed, refer to Error code to figure out its failure cause.

NameDescriptionRequired
AuthorizationAuthorization: Bearer ${BUSINESS_ACCESS_TOKEN}
Business token as a type of user authentication.
O
adAccountIdadAccountId: ${AD_ACCOUNT_ID}
Ad account's ID.
O
NameTypeDescriptionRequired
kakaoTVUrlsString[]Kakao TV video URLs to set.O
NameTypeDescription
successVideoUrlsString[]Kakao TV video URLs that were successfully set.
invalidKakaoTVUrlsInvalidKakaoTV[]Failure reasons
NameTypeDescription
kakaoTVUrlStringKakao TV video URLs that failed to be set.
reasonStringReason
curl -X POST "https://apis.moment.kakao.com/openapi/v4/messages/personal/videos/register" \
-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \
-H "adAccountId: ${AD_ACCOUNT_ID}"
-d '{"kakaoTVUrls": ["http://tv.kakao.com/v/111","http://tv.kakao.com/1/222", "https://tv.kakao.com/v/333"]
}'
// HTTP/1.1 200 OK
// Content-Type: application/json;charset=UTF-8
{
"successVideoUrls": ["https://tv.kakao.com/v/111"],
"invalidKakaoTVUrls": [
{
"kakaoTVUrl": "https://tv.kakao.com/l/222",
"reason": "해당 영상은 메시지 홍보 동영상으로 사용할 수 없습니다."
},
{
"kakaoTVUrl": "https://tv.kakao.com/v/333",
"reason": "해당 카카오TV 채널에 권한이 없습니다."
}
]
}

Was this helpful?