Kakao Friendtalk shut down (2025-12-31) — migrating to Brand Message

Kakao Friendtalk shut down (2025-12-31) — migrating to Brand Message

What happens to existing Friendtalk code now that the channel has ended, when you must migrate to Brand Message, and the one case where the Friendtalk endpoint is still the right call.

POST /api/v2/brand-messages/send

Kakao Friendtalk ended on 2025-12-31. Brand Message is the successor channel.

First thing to know: existing code does not break. The endpoint remains and calls still succeed. But what goes out is a Brand Message that Kakao substituted, so it is worth understanding what changed.

What is happening now

Before 2025-12-31 From 2026-01-01
Calling /api/v2/friends/send Sends a Friendtalk Succeeds, delivered as a free-form Brand Message
Endpoint removal Not removed
New development Friendtalk Brand Message

When to migrate

Migrate now if you need

  • Template-based rich typesFL (list), FC (commerce), FM (composite), FP (premium video), FA (carousel)
  • Non-friend recipientstargeting: N or I
  • A broadcast to all consenting channel friendstargeting: F, no recipient list

None of these were possible with Friendtalk. Migrating is less about the shutdown than about gaining capability.

You can stay put if

  • You send free-form types (FT/FI/FW) to individual recipients

That combination should in fact keep using the Friendtalk endpoint. The brand-message endpoint answers NOT_A_BRAND_MESSAGE for it.

// Leave this alone — moving it to brandMessage returns NOT_A_BRAND_MESSAGE.
await sendgo.friendtalk.send({
  messageType: 'FT',
  content: 'Hello! Here is this week\'s update.',
  contacts: [{ contact: '01012345678' }],
});

If you do not want the substitution

If having Friendtalk requests silently become Brand Messages is not acceptable, do not call Friendtalk at all — send SMS instead.

Message type mapping

Send the Friendtalk code. The server converts.

Friendtalk Brand Message 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

Do not rewrite FT to BT in your code. Keep sending FT.

Migrating

Before — Friendtalk to individual recipients

await sendgo.friendtalk.send({
  messageType: 'FI',
  content: 'Check out this week\'s deals!',
  imageUrl: 'https://cdn.example.com/banner.jpg',
  adFlag: 'Y',
  contacts: [{ contact: '01012345678' }],
});

After — Brand Message with a template

Brand Message references a template registered in the console, so you need a friendTemplateUuid.

// Single send to channel friends
await sendgo.brandMessage.send({
  targeting: 'M',
  messageType: 'FL',
  friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
  adFlag: 'Y',
  contacts: [{ contact: '01012345678', var1: '29,000원' }],
});

// Broadcast to every consenting friend — no recipient list
await sendgo.brandMessage.broadcast({
  messageType: 'FW',
  friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
  adFlag: 'Y',
});

The big shift: the body no longer travels in the request. Friendtalk carried content per call; Brand Message rich types reference a registered template and you fill its variables.

Campaign lookups split too

# Brand Message campaigns (BRAND_GROUP, BRAND_BASIC)
GET /api/v2/brand-messages

# Friendtalk campaigns
GET /api/v2/friends

The brand-message list does not return Friendtalk campaigns. Reporting code that spans both channels has to query both.

Checklist

  • [ ] Found every Friendtalk call site (friendtalk, friends/send)
  • [ ] Classified each: FT/FI/FW to individuals → leave as is
  • [ ] Identified the ones needing rich types, non-friend targeting or broadcast → migrate
  • [ ] Registered Brand Message templates and captured their friendTemplateUuid
  • [ ] Set adFlag: 'Y' on promotional sends and checked the advertising rules
  • [ ] Reporting queries both endpoints
  • [ ] SDK upgraded to 1.2.1 or later (the release that reflects the shutdown)

Next

자주 묻는 질문

Does existing Friendtalk code break?
No. The /api/v2/friends/send endpoint stays and calls keep succeeding. From 2026-01-01 what actually goes out is a free-form Brand Message that Kakao substitutes automatically.
So can I do nothing?
Nothing breaks today, but you must move to Brand Message if you need template-based rich types, non-friend targeting, or a broadcast to all consenting channel friends. New work should start on Brand Message.
Is there a case where I should keep using the Friendtalk endpoint?
Yes. Free-form body types (FT, FI, FW) sent to individual recipients still go only through /api/v2/friends/send. The brand-message endpoint returns NOT_A_BRAND_MESSAGE for that combination.
Do I have to change the message type codes to BT, BI and so on?
No. Send the Friendtalk codes (FT, FI, FW, FL, FC, FM, FP, FA) and the server converts them. The mapping is one to one.

이 문서에서 쓰는 패키지

관련 문서