카카오 브랜드메시지 보내기 — 친구톡 후속 채널

카카오 브랜드메시지 보내기 — 친구톡 후속 채널

브랜드메시지로 채널 친구·비친구·전체 동보 발송하는 방법. targeting 값에 따른 경로 차이와 친구톡 API 를 계속 써야 하는 예외까지.

POST /api/v2/brand-messages/send

브랜드메시지는 카카오 채널을 통한 마케팅·홍보 메시지 채널입니다. 정보성만 가능한 알림톡과 달리 광고를 보낼 수 있고, 친구톡과 달리 채널 친구가 아닌 사람에게도 보낼 수 있습니다.

v2 전용입니다. v1 에는 이 엔드포인트가 없습니다.

준비물

  • 카카오 발신프로필 키(kakaoSenderKey) → 발신번호 사전등록
  • 콘솔에 등록한 브랜드메시지 템플릿의 friendTemplateUuid
  • 광고성 메시지라면 adFlag: "Y"광고 규칙 준수

targeting 이 경로를 가른다

targeting 대상 발송 방식 contacts
M 채널 친구 단건(BRAND_BASIC) 필수
N 채널 친구가 아닌 수신자 단건(BRAND_BASIC) 필수
I 지정 대상 단건(BRAND_BASIC) 필수
F 수신 동의한 전체 채널 친구 동보(BRAND_GROUP) 불필요

F 는 수신자를 지정하지 않으므로 응답에 발송 건수가 없고 접수 여부만 돌아옵니다. 결과는 캠페인 조회로 확인합니다.

메시지 타입

요청에는 친구톡 코드를 그대로 넘깁니다. 서버가 브랜드메시지 코드로 변환합니다.

넘기는 값 변환 결과 내용
FT BT 텍스트
FI BI 이미지
FW BW 와이드 이미지
FL BL 리스트
FC BC 커머스
FM BM 복합
FP BP 프리미엄 동영상
FA BA 캐러셀

중요한 예외: FT/FI/FWM/N/I 로 보내면 이 엔드포인트는 NOT_A_BRAND_MESSAGE 를 반환합니다. 자유 본문을 개별 수신자에게 보내는 경로는 여전히 /api/v2/friends/send 입니다. 자세한 내용은 친구톡 종료 대응에 있습니다.

언어별 예제

Node.js / TypeScript

// 단건 발송 — 채널 친구 대상
await sendgo.brandMessage.send({
  targeting: 'M',
  messageType: 'FL',
  friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
  adFlag: 'Y',
  contacts: [{ contact: '01012345678', var1: '29,000원' }],
});

// 단건 발송 — 채널 친구가 아닌 수신자
await sendgo.brandMessage.send({
  targeting: 'N',
  messageType: 'FM',
  friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
  adFlag: 'Y',
  contacts: [{ contact: '01012345678' }],
});

// 동보 발송 — 수신 동의한 전체 채널 친구 (contacts 없음)
await sendgo.brandMessage.broadcast({
  messageType: 'FW',
  friendTemplateUuid: '9cd5460b-6458-4edc-9b11-c26d3013c340',
  adFlag: 'Y',
});

// 캠페인 결과 확인
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 대체 발송

브랜드메시지도 replaceSms: "Y" 로 실패 시 문자 대체가 가능합니다. smsSubjectsmsContent, 그리고 senderKey 를 함께 넘겨야 합니다.

await sendgo.brandMessage.send({
  targeting: 'M',
  messageType: 'FL',
  friendTemplateUuid: '...',
  replaceSms: 'Y',
  smsSubject: '[여름 특가]',
  smsContent: '여름 한정 특가를 확인하세요.',
  contacts: [{ contact: '01012345678' }],
});

캠페인 결과 조회

동보 발송은 접수만 확인되므로 결과를 따로 조회합니다.

# 목록 (기본 최근 90일)
curl "https://sendgo.io/api/v2/brand-messages?count=30" -H "Authorization: Bearer $TOKEN"

# 상세 — 발송 응답의 campaignId 사용
curl "https://sendgo.io/api/v2/brand-messages/$CAMPAIGN_ID" -H "Authorization: Bearer $TOKEN"

이 엔드포인트는 브랜드메시지 캠페인(BRAND_GROUP, BRAND_BASIC)만 반환합니다. 친구톡 캠페인은 /api/v2/friends 를 쓰세요.

다음 단계

자주 묻는 질문

브랜드메시지와 친구톡은 무엇이 다른가요?
브랜드메시지는 친구톡의 후속 채널입니다. 친구톡과 달리 채널 친구가 아닌 수신자에게 보낼 수 있고, 수신 동의한 전체 친구에게 동보 발송할 수 있으며, 리스트·캐러셀·커머스 같은 템플릿 기반 리치 타입을 지원합니다. 친구톡은 2025-12-31 종료되었습니다.
친구톡 API 는 이제 못 쓰나요?
엔드포인트는 유지됩니다. 자유 본문 타입(FT/FI/FW)을 개별 수신자에게 보내는 경로는 여전히 /api/v2/friends/send 뿐이고, 브랜드메시지 엔드포인트는 그 조합에 NOT_A_BRAND_MESSAGE 를 반환합니다. 다만 실제로 나가는 것은 카카오가 자동 대체한 브랜드메시지(자유형)입니다.
메시지 타입 코드를 BT, BI 로 바꿔야 하나요?
아니요. 요청에는 친구톡 코드(FT, FI, FW, FL, FC, FM, FP, FA)를 그대로 넘기고 서버가 브랜드메시지 코드로 변환합니다. FT→BT, FI→BI 처럼 1:1 대응됩니다.
동보 발송은 수신자 목록이 필요 없나요?
필요 없습니다. targeting 을 F 로 두면 수신 동의한 전체 채널 친구가 대상이 되므로 contacts 를 넘기지 않습니다. 응답도 발송 건수가 아니라 접수 여부만 돌아옵니다.

이 문서에서 쓰는 패키지

관련 문서