사이드 메뉴
Getting started
Kakao Developers
Login
Communication
Advertisement
- Concepts
- Ad creation: Ad account
- Ad creation: Campaign
- Ad creation: Ad group
- Targeting for ad group
- Custom audience targeting for ad group
- Ad creation: Creative common
- Ad creation: Display creative
- Ad creation: Message creative
- Ad creation: Personalized message creative
- Bizboard landing settings
- Report
- Message management
- Personalized message management
- Message ad management
- Message ad operation
- Ad View management
- Business Form+ management
- Business Form linkage management
- Pixel & SDK linkage management
- Audience management
- Engagement targeting management
- Customer file management
- Friend group management
- Ad account management
- Reference
- Type information
- Error code
Personalized message management
This document describes how to use the Personalized message management APIs.
| Method | URL | Authorization |
|---|---|---|
POST | https://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/sendTestPersonalMessage | Business token |
| Permission | Prerequisite | Business Authentication | Business consent items |
|---|---|---|---|
| Required: Request permission | Switch to a Biz app Set Business redirect URI Business consent items | Required | Required |
Sends a test creative under a Personalized Message X Reach campaign.
The message includes [Test Send] in the promotional text area.
This API limits the number of calls you can make to every minute per user account and ad account.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}Business token as a type of user authentication. | O |
| adAccountId | adAccountId: ${AD_ACCOUNT_ID}Ad account's ID. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| ID | Integer | Creative ID | O |
| Name | Type | Description | Required |
|---|---|---|---|
| phoneNumber | String | Target's phone number. | O |
| variables | JSON | A JSON object including key-value pairs for variables in the message template. | O |
Request
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"}}'
Response
HTTP/1.1 200 OKContent-Type: application/json;charset=UTF-8
| Method | URL | Authorization |
|---|---|---|
POST | https://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/sendPersonalMessage | Business token |
| Permission | Prerequisite | Business Authentication | Business consent items |
|---|---|---|---|
| Required: Request permission | Switch to a Biz app Set Business redirect URI Business consent items | Required | Required |
Sends a creative under a Personalized Message X Reach campaign to one user.
- Can only send to one user at a time
- Single-message sending is processed synchronously
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}Business token as a type of user authentication. | O |
| adAccountId | adAccountId: ${AD_ACCOUNT_ID}Ad account's ID. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| ID | Integer | Creative ID | O |
| Name | Type | Description | Required |
|---|---|---|---|
| messageSerialNumber | String | A 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 |
| receiverType | String | Receiver ID type, one of: APP_USER_ID: Service user ID of the app connected to Personalized message creative template profileIdPHONE_NUMBER: Phone number | O |
| receiverKey | String | Receiver ID A Service user ID or a phone number. | O |
| variables | JSON | A JSON object including key-value pairs for variables in the message template. | O |
| Name | Type | Description |
|---|---|---|
| requestId | String | A unique request ID Used to retrieve the sending status. |
| messageSerialNumber | String | A unique ID that identifies each sent message. |
| status | String | Sending result, one of: SUCCEEDEDFAILED |
| sendAt | String | Date the message was sent, in yyyy-MM-dd HH:mm:ss format. |
Request
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": "테스트유저"}}'
Response
// 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"}
| Method | URL | Authorization |
|---|---|---|
POST | https://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/sendPersonalMessages | Business token |
| Permission | Prerequisite | Business Authentication | Business consent items |
|---|---|---|---|
| Required: Request permission | Switch to a Biz app Set Business redirect URI Business consent items | Required | Required |
Sends a creative under a Personalized Message X Reach campaign to multiple users.
- Can request from 2 to 100 messages at a time
- Responds immediately if the request includes an invalid value
- Multi-message sending that passes validation is processed asynchronously
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}Business token as a type of user authentication. | O |
| adAccountId | adAccountId: ${AD_ACCOUNT_ID}Ad account's ID. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| ID | Integer | Creative ID | O |
| Name | Type | Description | Required |
|---|---|---|---|
| requestId | String | A unique request ID The length must be under 39 characters, and the pattern is below. yyyyMMdd-${creativeId}-${uniqueId_for_message} | O |
| receivers | PersonalMessageSendRequest[] | Information for each message | O |
| Name | Type | Description | Required |
|---|---|---|---|
| messageSerialNumber | String | A 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 |
| receiverType | String | Receiver ID type, one of: APP_USER_ID: Service user ID of the app connected to Personalized message creative template profileIdPHONE_NUMBER: Phone number | O |
| receiverKey | String | Receiver ID A Service user ID or a phone number. | O |
| variables | JSON | A JSON object including key-value pairs for variables in the message template. | O |
| Name | Type | Description |
|---|---|---|
| requestId | String | A unique request ID Used to retrieve the sending status. |
Request
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"}}]}'
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"requestId": "20230731-1-request1"}
| Method | URL | Authorization |
|---|---|---|
GET | https://apis.moment.kakao.com/openapi/v4/messages/creatives/${ID}/statuses/${REQUEST_ID} | Business token |
| Permission | Prerequisite | Business Authentication | Business consent items |
|---|---|---|---|
| Required: Request permission | Switch to a Biz app Set Business redirect URI Business consent items | Required | Required |
Returns the result of a Personalized Message send request.
You can retrieve sending status in 7 days from the request.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}Business token as a type of user authentication. | O |
| adAccountId | adAccountId: ${AD_ACCOUNT_ID}Ad account's ID. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| ID | Integer | Creative ID | O |
| REQUEST_ID | String | Unique request ID | O |
| Name | Type | Description |
|---|---|---|
| completed | Boolean | Whether sending multiple messages is complete. If not complete, completed is false, and results is an empty array. |
| results | PersonalMessageResult[] | The result list of each sending request. |
| Name | Type | Description |
|---|---|---|
| messageSerialNumber | String | A unique ID that identifies each sent message. |
| status | String | Sending result, one of: SUCCEEDEDFAILED |
| statusReason | String | Sending result detailed reason |
| sendAt | String | Date the message was sent, in yyyy-MM-dd HH:mm:ss format. |
Request
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}"
Response
// HTTP/1.1 200 OK// Content-Type: application/json;charset=UTF-8{"completed": true,"results": [{"status": "SUCCEEDED","sendAt": "2023-07-31 16:00:00"}]}
| Method | URL | Authorization |
|---|---|---|
POST | https://apis.moment.kakao.com/openapi/v4/messages/personal/images/upload | Business token |
| Permission | Prerequisite | Business Authentication | Business consent items |
|---|---|---|---|
| Required: Request permission | Switch to a Biz app Set Business redirect URI Business consent items | Required | Required |
Enables you to upload images for Personalized messages.
You can upload from 1 to 100 images at once.
Kakao validates the images against the applicable specifications and policies before saving them.
- 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.
| Name | Description | Required |
|---|---|---|
| Authorization | Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}Business token as a type of user authentication. | O |
| adAccountId | adAccountId: ${AD_ACCOUNT_ID}Ad account's ID. | O |
| Name | Type | Description | Required |
|---|---|---|---|
| files | Multipart 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 |
| Name | Type | Description |
|---|---|---|
| successFiles | ImageFile[] | Uploaded image information |
| invalidFiles | InvalidFile[] | Image information and the reason that failed to upload |
| Name | Type | Description |
|---|---|---|
| downloadUrl | String | Image URL |
| originalFileName | String | Image file name |
| Name | Type | Description |
|---|---|---|
| fileName | String | File name that failed to upload |
| invalidReasons | InvalidReason[] | Failure reasons |
| Name | Type | Description |
|---|---|---|
| reason | String | Reason |
| description | String | Detail information |
Request
curl -X POST "https://apis.moment.kakao.com/openapi/v4/messages/personal/images/upload" \-H "Authorization: Bearer ${BUSINESS_ACCESS_TOKEN}" \-H "adAccountId: ${AD_ACCOUNT_ID}" \-F "files=@image.jpg"
Response
// 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"}]}]}