Send a Kakao Brand Message — the successor to Friendtalk
Send Brand Messages to channel friends, non-friends, or every consenting friend at once. How targeting splits the request path, and when to keep using the Friendtalk endpoint.
POST /api/v2/brand-messages/sendBrand Message is the KakaoTalk channel for marketing and promotional messages. Unlike Alimtalk, which is informational only, it can carry advertising — and unlike Friendtalk, it can reach people who are not channel friends.
v2 only. This endpoint does not exist on v1.
Prerequisites
- A Kakao sender profile key (
kakaoSenderKey) → Registering a sending number - A
friendTemplateUuidfrom a Brand Message template registered in the console - For promotional sends,
adFlag: "Y"and compliance with the advertising rules
targeting decides the path
targeting |
Audience | Mode | contacts |
|---|---|---|---|
M |
Channel friends | Single (BRAND_BASIC) |
required |
N |
Not channel friends | Single (BRAND_BASIC) |
required |
I |
Specified audience | Single (BRAND_BASIC) |
required |
F |
All consenting channel friends | Broadcast (BRAND_GROUP) |
not used |
F names no recipients, so the response carries acceptance only, not a send count. Check results through the campaign lookup.
Message types
Send the Friendtalk code; the server converts it.
| You send | Becomes | Content |
|---|---|---|
FT |
BT |
Text |
FI |
BI |
Image |
FW |
BW |
Wide image |
FL |
BL |
List |
FC |
BC |
Commerce |
FM |
BM |
Composite |
FP |
BP |
Premium video |
FA |
BA |
Carousel |
The important exception: sending FT/FI/FW with M/N/I returns NOT_A_BRAND_MESSAGE here. Free-form bodies to individual recipients still go through /api/v2/friends/send. See Friendtalk shut down.
Examples by language
Node.js / TypeScript
// Single send — channel friends
await sendgo.brandMessage.send({
targeting: 'M',
messageType: 'FL',
friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
adFlag: 'Y',
contacts: [{ contact: '01012345678', var1: '29,000원' }],
});
// Single send — people who are not channel friends
await sendgo.brandMessage.send({
targeting: 'N',
messageType: 'FM',
friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
adFlag: 'Y',
contacts: [{ contact: '01012345678' }],
});
// Broadcast — every consenting channel friend, no contacts
await sendgo.brandMessage.broadcast({
messageType: 'FW',
friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
adFlag: 'Y',
});
// Campaign results
const list = await sendgo.brandMessage.campaigns({ count: 10 });
const one = await sendgo.brandMessage.campaign(campaignId);
Python
client.brand_message.send(
targeting="M",
message_type="FL",
friend_template_uuid="9cd5460b-6458-4edc-9b11-c26d3013c340",
ad_flag="Y",
contacts=[{"contact": "01012345678", "var1": "29,000원"}],
)
PHP · Laravel
<?php
$sendgo->brandMessage->send([
'targeting' => 'M',
'messageType' => 'FL',
'friendTemplateUuid' => '9cd5460b-6458-4edc-9b11-c26d3013c340',
'adFlag' => 'Y',
'contacts' => [['contact' => '01012345678', 'var1' => '29,000원']],
]);
REST
curl -X POST https://sendgo.io/api/v2/brand-messages/send \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"kakaoSenderKey": "your_kakao_sender_key",
"targeting": "F",
"messageType": "FW",
"friendTemplateUuid": "9cd5460b-6458-4edc-9b11-c26d3013c340",
"adFlag": "Y",
"scheduleType": "DIRECTLY"
}'
SMS fallback
Brand Message supports replaceSms: "Y" too. Supply smsSubject, smsContent and senderKey alongside it.
await sendgo.brandMessage.send({
targeting: 'M',
messageType: 'FL',
friendTemplateUuid: '...',
replaceSms: 'Y',
smsSubject: '[Summer sale]',
smsContent: 'Check out our summer offers.',
contacts: [{ contact: '01012345678' }],
});
Campaign lookup
Broadcasts only confirm acceptance, so results come from a separate call.
# List, defaults to the last 90 days
curl "https://sendgo.io/api/v2/brand-messages?count=30" -H "Authorization: Bearer $TOKEN"
# Detail — use campaignId from the send response
curl "https://sendgo.io/api/v2/brand-messages/$CAMPAIGN_ID" -H "Authorization: Bearer $TOKEN"
This returns Brand Message campaigns (BRAND_GROUP, BRAND_BASIC) only. Friendtalk campaigns live at /api/v2/friends.
Next
자주 묻는 질문
- How is Brand Message different from Friendtalk?
- Brand Message is the successor channel. Unlike Friendtalk it can reach people who are not channel friends, broadcast to every consenting friend without a recipient list, and use template-based rich types such as list, carousel and commerce. Friendtalk shut down on 2025-12-31.
- Is the Friendtalk API gone?
- The endpoint remains. Free-form body types (FT, FI, FW) sent to individual recipients still go only through /api/v2/friends/send, and the brand-message endpoint returns NOT_A_BRAND_MESSAGE for that combination. What actually goes out is a Brand Message that Kakao substitutes.
- Should I change the message type codes to BT or BI?
- No. Send the Friendtalk codes (FT, FI, FW, FL, FC, FM, FP, FA) and the server converts them one to one.
- Does a broadcast need a recipient list?
- No. With targeting set to F the audience is every consenting channel friend, so you omit contacts. The response reports acceptance rather than a delivered count.