사이드 메뉴
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 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
Flutter
This document describes how to integrate Kakao Talk Message APIs into your service with the Kakao SDK for Flutter ("Flutter SDK").
- The Kakao Talk Message API supports sending messages only between users within the same service.
- You must have permission to use the Kakao Talk Social API to use the feature to send messages to friends.
- For details, see Message sending features and How to use.
1. Select message sending feature
Kakao Developers provides two types of message sending features: Kakao Talk Share and Kakao Talk Message. Refer to Message sending features to select the feature to use. If you want to use Kakao Talk Message, perform the following steps.
2. Select message type and configuration method
Refer to Template types to decide which message template to use.
Refer to Configuration method comparison to decide how to configure messages. You can use default templates based on predefined templates in object form, or custom templates configured directly for your service.
3. Select message target
Note that for Kakao Talk Message, the APIs used are distinguished according to the message targets.
| Target | Description |
|---|---|
| Send to me | Sends a message to the "Me" chat in Kakao Talk of the currently logged-in user. This feature cannot send messages to other users and can only send messages to the logged-in user themselves. |
| Send to friends | Sends a message to friends in Kakao Talk of the currently logged-in user. Important: Additional feature request is required. You must implement a process to receive recipient information through Retrieve friends through picker API or Retrieve friends through picker API. You can send messages to up to 5 friends at once. Daily and monthly quotas are set, so refer to Quota. |
If you want to send messages to friends, Request permission is required. See Usage Policy as well.
To use the Kakao Talk Message API on the native app service, you must set the Custom URL Scheme. See how to set up a project by device environment below.
| Reference | App setting |
|---|---|
sendDefaultMemo()FeedTemplateListTemplateLocationTemplateCommerceTemplateTextTemplateMessageSendResultMessageFailureInfo | Install Initialize Project Setting |
| Permission | Prerequisite | Kakao Login | User consent |
|---|---|---|---|
| - | Platform key Product Link Activate Kakao Login Manage consent items | Required | Required: Send message in Kakao Talk (talk_message) |
Sends a message to the user's My Chatroom using the predefined default template in JSON format.
To create a message, implement the DefaultTemplate interface, then use one of the following classes according to the desired template type to configure template objects.
- Feed template:
FeedTemplate - List template:
ListTemplate - Location template:
LocationTemplate - Commerce template:
CommerceTemplate - Text template:
TextTemplate - Calendar template:
CalendarTemplate
When calling sendDefaultMemo(), pass the template object as the template parameter.
When message transmission fails, it returns a response code. See Error code to identify the cause of failure with code and msg.
try {await TalkApi.instance.sendDefaultMemo(defaultFeed);print('Succeeded in sending me a message.');} catch (error) {print('Failed to send me a message. $error');}
| Reference | App setting |
|---|---|
sendCustomMemo()MessageSendResultMessageFailureInfo | Install Initialize Project Setting |
| Permission | Prerequisite | Kakao Login | User consent |
|---|---|---|---|
| - | Platform key Product Link Activate Kakao Login Manage consent items Message template | Required | Required: Send message in Kakao Talk (talk_message) |
Sends a message to the user's My Chatroom using a custom template configured in [Tools] > [Message Template].
When calling sendCustomMemo(), you must pass the template ID confirmed in the message template tool as the templateId parameter. For how to configure a template, see Custom Template.
To include variable information in a message, add user arguments to the custom template, then pass key-value pairs to the templateArgs parameter. For detailed usage and precautions, see Directly inputting user arguments.
When message transmission fails, it returns a response code. See Error code to identify the cause of failure with code and msg.
// Custom template IDint templateId = '${YOUR_CUSTOM_TEMPLATE_ID}';try {await TalkApi.instance.sendCustomMemo(templateId: templateId);print('Succeeded in sending me a message.');} catch (error) {print('Failed to send me a message. $error');}
| Reference | App setting |
|---|---|
sendScrapMemo()FeedTemplateListTemplateLocationTemplateCommerceTemplateTextTemplateMessageSendResultMessageFailureInfo | Install Initialize Project Setting |
| Permission | Prerequisite | Kakao Login | User consent |
|---|---|---|---|
| - | Platform key Product Link Activate Kakao Login Manage consent items | Required | Required: Send message in Kakao Talk (talk_message) |
Sends a scrape message to the user's My Chatroom using information extracted from the specified web page URL.
To send a Kakao Talk message to the user's My Chatroom by scrapping a web page, call the sendScrapMemo() method in the TalkApi class. You must pass url when calling this method.
When using a custom template, the template ID verified in the message template tool must be passed to the templateId parameter. For how to configure a template, see Custom Template.
To include variable information in a message, add user arguments to the custom template, then pass key-value pairs to the templateArgs parameter. For detailed usage and precautions, see Directly inputting user arguments.
When message transmission fails, it returns a response code. See Error code to identify the cause of failure with code and msg.
// Web page URL to be shared.// * Caution: The domain of the URL to be shared must be registered in [App] > [Product Link] > [Web domain] in Kakao Developers.String url = 'https://developers.kakao.com';try {await TalkApi.instance.sendScrapMemo(url: url);print('Succeeded in sending me a message');} catch (error) {print('Failed to send me a message. $error');}
// Custom template IDint templateId = '${YOUR_CUSTOM_TEMPLATE_ID}';try {await TalkApi.instance.sendScrapMemo(url: url);print('Succeeded in sending me a message.');} catch (error) {print('Failed to send me a message. $error');}
| Reference | App setting |
|---|---|
sendDefaultMessage()FeedTemplateListTemplateLocationTemplateCommerceTemplateTextTemplateMessageSendResultMessageFailureInfo | Install Initialize Project Setting |
| Permission | Prerequisite | Kakao Login | User consent |
|---|---|---|---|
| Required: Permission | Platform key Product Link Activate Kakao Login Manage consent items | Required | Required: Send message in Kakao Talk (talk_message) |
Sends a message composed in JSON according to the predefined default template format.
- Configure message template: To create a message, implement the
DefaultTemplateinterface, then use one of the following classes according to the desired template type to configure template objects.- Feed template:
FeedTemplate - List template:
ListTemplate - Location template:
LocationTemplate - Commerce template:
CommerceTemplate - Text template:
TextTemplate - Calendar template:
CalendarTemplate
- Feed template:
- Retrieve message recipients: To send a message to friends, you must determine who to send the message to. First, call the Retrieve friends through picker API or Retrieve list of friends API to get the
uuidinformation of friends to send messages to. - Specify template and recipients: When calling
sendDefaultMessage(), pass the previously configured template object as thetemplateparameter, and pass the list ofuuids of friends selected by the user as thereceiverUuidsparameter. You can send messages to up to 5 friends at once.
The message transmission result is returned as a MessageSendResult object. When message transmission succeeds, successfulReceiverUuids contains a list of uuids of friends who successfully received the message. When message transmission fails for some friends, failureInfos contains failure information. See Error code to identify the cause of failure with code and msg.
// Retrieve a list of Kakao Talk friends.Friends friends;try {friends = await TalkApi.instance.friends();} catch (error) {print('Failed to retrieve a list of friends. $error');return;}if (friends.elements == null) {return;}if (friends.elements!.isEmpty) {print('There is no friend to send a message to :(');} else {// Retrieve UUIDs of the friends to send a message according to your service's environment.// This sample displays the Friends list and collects the UUIDs of the friends selected by a user.List<String> selectedItems = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => FriendPage(items: friends.elements!.map((friend) => PickerItem(friend.uuid,friend.profileNickname ?? '',friend.profileThumbnailImage)).toList(),),),);if (selectedItems.isEmpty) {return;}print('Selected friends:\n${selectedItems.join('\n')}');// List of UUIDs of recipients to send a message to.List<String> receiverUuids = selectedItems;// Feed messageFeedTemplate template = defaultFeed;// Send a Feed messagetry {MessageSendResult result =await TalkApi.instance.sendDefaultMessage(receiverUuids: receiverUuids,template: template,);print('Succeeded in sending a message to ${result.successfulReceiverUuids}.');if (result.failureInfos != null) {print('Succeed! But failed to send a message to some friends: \n${result.failureInfos}');}} catch (error) {print('Failed to send a message. $error');}}
| Reference | App setting |
|---|---|
sendCustomMessage()MessageSendResultMessageFailureInfo | Install Initialize Project Setting |
| Permission | Prerequisite | Kakao Login | User consent |
|---|---|---|---|
| Required: Permission | Platform key Product Link Activate Kakao Login Manage consent items Message template | Required | Required: Send message in Kakao Talk (talk_message) |
Sends a message using a custom template configured in [Tools] > [Message Template].
- Retrieve message recipients: To send a message to friends, you must determine who to send the message to. First, call the Retrieve friends through picker API or Retrieve list of friends API to get the
uuidinformation of friends to send messages to. Pass the list ofuuids of friends selected by the user as thereceiverUuidsparameter. You can send messages to up to 5 friends at once. - Pass template ID: When calling
sendCustomMessage(), you must pass the template ID confirmed in the message template tool as thetemplateIdparameter. For how to configure a template, see Custom Template. - Pass user arguments (optional): To include variable information in a message, add user arguments to the custom template, then pass key-value pairs to the
templateArgsparameter. For detailed usage and precautions, see Directly inputting user arguments.
The message transmission result is returned as a MessageSendResult object. When message transmission succeeds, successfulReceiverUuids contains a list of uuids of friends who successfully received the message. When message transmission fails for some friends, failureInfos contains failure information. See Error code to identify the cause of failure with code and msg.
// Retrieve a list of friends.Friends friends;try {friends = await TalkApi.instance.friends();} catch (error) {print('Failed to retrieve a list of friends. $error');return;}if (friends.elements == null) {return;}if (friends.elements!.isEmpty) {print('There is no friend to send a message to :(');} else {// Retrieve UUIDs of the friends to send a message according to your service's environment.// This sample displays the Friends list and collects the UUIDs of the friends selected by a user.List<String> selectedItems = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => FriendPage(items: friends.elements!.map((friend) => PickerItem(friend.uuid,friend.profileNickname ?? '',friend.profileThumbnailImage)).toList(),),),);if (selectedItems.isEmpty) {return;}print('Selected friends:\n${selectedItems.join('\n')}');// List of UUIDs of recipients to send a message toList<String> receiverUuids = selectedItems;// Custom template IDint templateId = '${YOUR_CUSTOM_TEMPLATE_ID}';// Send a message with custom templatetry {MessageSendResult result = await TalkApi.instance.sendCustomMessage(receiverUuids: receiverUuids,templateId: templateId,);print('Succeeded in sending a message to ${result.successfulReceiverUuids}.');if (result.failureInfos != null) {print('Succeed! But failed to send a message to some friends: \n${result.failureInfos}');}} catch (error) {print('Failed to send a message. $error');}}
| Reference | App setting |
|---|---|
sendScrapMessage()FeedTemplateListTemplateLocationTemplateCommerceTemplateTextTemplateMessageSendResultMessageFailureInfo | Install Initialize Project Setting |
| Permission | Prerequisite | Kakao Login | User consent |
|---|---|---|---|
| Required: Permission | Platform key Product Link Activate Kakao Login Manage consent items | Required | Required: Send message in Kakao Talk (talk_message) |
Sends a scrape message using information extracted from the specified web page URL.
- Retrieve message recipients: To send a message to friends, you need to determine who to send the message to. First, call the Retrieve friends through picker API or Retrieve list of friends API to get the
uuidinformation of friends to send messages to. - Specify web page URL to scrape: When calling
sendScrapMessage(), you must pass the URL of the web page to scrape as theurlparameter. The domain of the web page to scrape must be registered in [App] > [Product Link] > [Web domain] in the app management page. - Apply custom template (optional): If you want to send a scrape message based on a message template defined in your service, you must pass the template ID configured in [Tools] > [Message Template] as the
templateIdparameter. For template configuration methods, see Custom template. - Pass user arguments (optional): To include variable information in a message, add user arguments to the custom template, then pass key-value pairs to the
templateArgsparameter. For detailed usage and precautions, see Directly inputting user arguments.
The message transmission result is returned as a MessageSendResult object. When message transmission is successful, successfulReceiverUuids contains a list of uuids of friends who successfully received the message. When message transmission fails for some friends, failure information is included in failureInfos. Refer to Error code to check the failure cause using code and msg.
// Sending friends a message by scrapping a web page// Retrieving a list of friends.Friends friends;try {friends = await TalkApi.instance.friends();} catch (error) {print('Failed to retrieve a list of friends. $error');return;}if (friends.elements == null) {return;}if (friends.elements!.isEmpty) {print('There is no friend to send a message to :(');} else {// Retrieve UUIDs of the friends to send a message according to your service's environment.// This sample displays the Friends list and collects the UUIDs of the friends selected by a user.List<String> selectedItems = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => FriendPage(items: friends.elements!.map((friend) => PickerItem(friend.uuid,friend.profileNickname ?? '',friend.profileThumbnailImage)).toList(),),),);if (selectedItems.isEmpty) {return;}print('Selected friends:\n${selectedItems.join('\n')}');// List of UUIDs of recipients to send a message toList<String> receiverUuids = selectedItems;// Web page URL to be shared// * Caution: The domain of the URL to be shared must be registered in [App] > [Product Link] > [Web domain] in Kakao Developers.String url = "https://developers.kakao.com";// Sending a scrape messagetry {MessageSendResult result = await TalkApi.instance.sendScrapMessage(receiverUuids: receiverUuids,url: url,);print('Succeeded in sending a message to ${result.successfulReceiverUuids}.');if (result.failureInfos != null) {print('Succeed! But failed to send a message to some friends: \n${result.failureInfos}');}} catch (error) {print('Failed to send a message. $error');}}
// Sending friends a message by scrapping a web page with a custom template// Retrieving a list of friends.Friends friends;try {friends = await TalkApi.instance.friends();} catch (error) {print('Failed to retrieve a list of friends. $error');return;}if (friends.elements == null) {return;}if (friends.elements!.isEmpty) {print('There is no friend to send a message to :(');} else {// Retrieve UUIDs of the friends to send a message according to your service's environment.// This sample displays the Friends list and collects the UUIDs of the friends selected by a user.List<String> selectedItems = await Navigator.of(context).push(MaterialPageRoute(builder: (context) => FriendPage(items: friends.elements!.map((friend) => PickerItem(friend.uuid,friend.profileNickname ?? '',friend.profileThumbnailImage)).toList(),),),);if (selectedItems.isEmpty) {return;}print('Selected friends:\n${selectedItems.join('\n')}');// List of UUIDs of recipients to send a message toList<String> receiverUuids = selectedItems;// Web page URL to be shared// * Caution: The domain of the URL to be shared must be registered in [App] > [Product Link] > [Web domain] in Kakao Developers.String url = "https://developers.kakao.com";// Message template ID// * Refer to the guide: https://developers.kakao.com/docs/en/message-template/customint templateId = templateIds['customMessage']!;// Sending friends a message by scrapping a web page with a custom templatetry {MessageSendResult result = await TalkApi.instance.sendScrapMessage(receiverUuids: receiverUuids,url: url,);print('Succeeded in sending a message to ${result.successfulReceiverUuids}.');if (result.failureInfos != null) {print('Succeed! But failed to send a message to some friends: \n${result.failureInfos}');}} catch (error) {print('Failed to send a message. $error');}}
You can attach images to a message by passing an image URL when configuring a message template or by uploading images in the Message template builder in advance. Images saved on local devices must be uploaded to the Kakao server or scraped to be used for message transmission. For detailed guidance and examples, see Upload image.