알림톡 발송
카카오 알림톡을 발송합니다. 발신프로필과 템플릿은 웹사이트에서 등록·검수를 받고, API 는 승인된 발신프로필 키와 템플릿 코드를 사용해 발송만 담당합니다.
POST /v1/messages/alimtalk
알림톡·브랜드메시지는 사업자 회원만 사용할 수 있습니다. (개인 회원은 403 BUSINESS_MEMBER_REQUIRED)
준비
- 웹사이트 카카오 발신프로필 메뉴에서 채널을 등록합니다.
- 알림톡 템플릿을 작성하고 검수 승인을 받습니다.
- API 로 발신프로필·템플릿 목록을 조회하여
profile,template_code, 변수 목록을 확인합니다.
curl — 템플릿/변수 확인
curl "https://api-01.redbean8.io.kr/v1/kakao/templates?profile=2f81c0…&channel=alimtalk" \
-H "Authorization: Bearer $REDBEAN_API_KEY"요청 본문
| 필드 | 타입 | 설명 |
|---|---|---|
profile 필수 | string | 발신프로필 키 (GET /v1/kakao/profiles 의 profile) |
template_code 필수 | string | 승인된 템플릿 코드 |
recipients / to 택1 | object[] / string[] | 수신자 목록 (최대 1,000명). 수신자별 변수가 필요하면 recipients, 모두 같은 변수면 to + 공통 variables |
recipients[].to | string | 수신번호 (recipients 사용 시 필수) |
recipients[].variables | object | 템플릿 변수 값. 키는 #{이름} 의 이름 부분 (예: {"name":"홍길동"}) |
recipients[].ref | string | 수신자별 참조키 |
variables | object | 모든 수신자에게 공통으로 적용할 변수 (수신자별 값이 우선) |
send_at | string | 예약 시각 (ISO 8601). 생략 시 즉시 |
exclude_optout | boolean | 수신거부 번호 제외 (기본 true) |
name | string | 발송 이름 |
client_ref | string | 요청 참조키 |
dry_run | boolean | 검증·금액 계산만 수행 |
예시
템플릿 본문이 #{name}님, #{item} 주문이 접수되었습니다. 인 경우
curl
curl -X POST https://api-01.redbean8.io.kr/v1/messages/alimtalk \
-H "Authorization: Bearer $REDBEAN_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: alim-order-1001" \
-d '{
"profile": "2f81c0b7e4d9…",
"template_code": "ORDER_RECEIVED",
"recipients": [
{ "to": "01011112222", "variables": { "name": "홍길동", "item": "무선 이어폰" }, "ref": "A-1001" },
{ "to": "01033334444", "variables": { "name": "김영희", "item": "보조배터리" }, "ref": "A-1002" }
],
"client_ref": "alim-order-1001"
}'Python
import os, requests
payload = {
"profile": "2f81c0b7e4d9…",
"template_code": "ORDER_RECEIVED",
"recipients": [
{"to": "01011112222", "variables": {"name": "홍길동", "item": "무선 이어폰"}, "ref": "A-1001"},
],
}
r = requests.post(
"https://api-01.redbean8.io.kr/v1/messages/alimtalk",
headers={"Authorization": f"Bearer {os.environ['REDBEAN_API_KEY']}",
"Idempotency-Key": "alim-order-1001"},
json=payload, timeout=15,
)
print(r.status_code, r.json())응답
202 Accepted — 형식은 SMS 발송 응답과 같으며 channel 이 alimtalk 입니다.
주의사항
- 변수는 모두 채워야 합니다. 템플릿에 있는 변수가 수신자(또는 공통
variables)에 없으면422 TEMPLATE_VARIABLE_MISSING이며details.variable에 이름이 표시됩니다. - 템플릿이 승인·정상 상태가 아니거나 코드가 없으면
422 TEMPLATE_NOT_FOUND. - 발신프로필이 없거나 사용 중지 상태면
422 PROFILE_NOT_FOUND. - 알림톡은 사전에 승인된 템플릿 내용과 일치해야 하므로, 본문 자체는 API 에서 바꿀 수 없고 변수만 치환합니다.
- 알림톡이 실패해도 문자로 대체 발송하지 않습니다. 실패하면 해당 건은
FAILED로 종료되고 요금은 환불됩니다. (fallback필드는 지원하지 않으며 보내면422 INVALID_REQUEST) - 알림톡은 예약 발송 후 취소할 수 있습니다. (발송 시각 전)
오류
| HTTP | code | 원인 |
|---|---|---|
| 403 | BUSINESS_MEMBER_REQUIRED | 사업자 회원이 아님 |
| 422 | PROFILE_NOT_FOUND | 발신프로필 키 오류/비활성 |
| 422 | TEMPLATE_NOT_FOUND | 템플릿 코드 오류 또는 미승인 |
| 422 | TEMPLATE_VARIABLE_MISSING | 필수 변수 누락 |
| 402 | INSUFFICIENT_BALANCE | 잔액 부족 |