알림톡 설정

템플릿 생성

보낼 문구를 템플릿으로 만들어 카카오 검수를 받아요.

알림톡은 문구를 그때그때 지어 보내는 메시지가 아니에요. 카카오 검수에서 승인(APR)된 템플릿으로만 보낼 수 있어요. 예약 확정, 수강 안내, 청구서처럼 고객의 이용에 따른 정보성 안내를 템플릿으로 먼저 만들고, 승인을 받은 뒤 변수만 바꿔 보내요.

공식 템플릿에 맞는 문구가 있으면 그걸 쓰는 편이 빨라요. 부트페이가 검수를 받아 둔 템플릿이라 그룹키가 등록된 채널이면 검수 없이 바로 보낼 수 있어요. 맞는 문구가 없을 때 여기서 자체 템플릿을 만들어요.

승인까지의 순서

단계 하는 일 문구 수정·삭제
1. 템플릿 생성 이 API 로 만들면 카카오에 바로 올라가요 할 수 있어요
2. 검수 요청 검수 요청을 불러 카카오에 심사를 맡겨요 결과가 나올 때까지 못 해요
3. 승인 카카오가 승인하면 발송할 수 있어요 못 해요

반려되면 반려 사유대로 수정한 뒤 다시 검수를 요청해요.

만들기만 해서는 카카오 검수가 시작되지 않아요. 검수를 요청하기 전까지는 고치거나 지울 수 있으니, 검수 요청 전에 문구를 확인하면 돼요.

POSThttps://message.bootapi.com/alimtalk/templatesBasic Auth

요청 파라미터

파라미터 타입 필수 설명
ksp_id String 필수 소유 채널 id. sender_id 로도 받아요
register Boolean 선택 생략하면 카카오에 바로 올라가요. false면 부트페이에만 저장해 두고 나중에 등록해요
name String 필수 템플릿 이름. 같은 채널 안에서 중복될 수 없어요
content String 필수 본문 (최대 1000자). 변수는 #{변수명}, 템플릿 전체에서 최대 40개
msg_type String 선택 BA(기본형, 기본값)·EX(부가정보형)·AD(채널추가형)·MI(복합형)
emphasize_type String 선택 NONE·TEXT(강조표기형)·IMAGE(이미지형)·ITEM_LIST(아이템리스트형)
emphasize_title String 선택 강조 타이틀 (최대 50자). 발송할 때 치환돼요
emphasize_subtitle String 선택 강조 보조문구 (최대 40자). 변수를 쓸 수 없어요 — 쓰면 3017로 거부돼요
template_extra String 선택 부가정보 문구. EX·MI는 필수
template_header String 선택 헤더 (최대 16자). 아이템리스트형에서만 전송돼요
item_highlight Object 선택 아이템 하이라이트 (title·description·storage_image_url)
template_item Object 선택 아이템 리스트 (list 2~10개, summary 선택)
buttons Array 선택 버튼 (최대 5개)
image_url String 선택 카카오 사본 이미지 URL을 직접 넣는 경우
storage_image_url String 선택 이미지 업로드 응답의 image_url
security_flag Boolean 선택 보안 템플릿 여부
category String 선택 분류
tags Array 선택 태그
examples Object 선택 변수 예문(표시용). 주면 모든 변수에 예문이 있어야 하고, 채널의 변수 예문 사전에 합쳐져요
template_code String 선택 생략하면 서버가 BT_ 로 시작하는 코드를 채번해요

메시지 유형

유형 값 조건
기본형 BA 본문만 있으면 돼요
부가정보형 EX template_extra 필수
채널추가형 AD 채널추가(AC) 버튼 필수
복합형 MI template_extra + AC 버튼 둘 다 필수

강조 유형

유형 값 조건
없음 NONE —
강조표기형 TEXT emphasize_title·emphasize_subtitle 둘 다 필수
이미지형 IMAGE 이미지 필수. 이미지 업로드로 먼저 올려요
아이템리스트형 ITEM_LIST template_item.list 2~10개 필수 + template_header·item_highlight·이미지 중 하나 이상

아이템리스트형 글자 수 제한

항목 한도
헤더 (template_header) 16자
하이라이트 타이틀 30자 (썸네일이 있으면 21자)
하이라이트 설명 19자 (썸네일이 있으면 13자)
아이템 타이틀 6자
아이템 설명 23자
요약 타이틀 6자
요약 설명 14자. 변수·숫자·화폐 단위·쉼표·마침표만 쓸 수 있어요

버튼

필드 설명
name 버튼명 (최대 14자). 변수를 쓸 수 없어요​. DS(배송조회)는 배송 조회하기로 고정이에요
linkType WL(웹링크)·AL(앱링크)·DS(배송조회)·BK(봇키워드)·MD(메시지전달)·BC(상담톡)·BT(봇전환)·AC(채널추가)
linkMo 모바일 링크. WL은 필수예요. http:// 또는 https:// 로 시작해야 해요 (https://#{mobile_link}처럼 변수 앞에 프로토콜을 둬요)
linkPc PC 링크. WL에서 쓰면 linkMo와 같은 프로토콜 규칙을 따라요
linkIos / linkAnd 앱링크용. AL은 둘 중 하나 이상 필요해요

버튼 링크에는 변수를 쓸 수 있고, 그 변수도 required_variables에 잡혀요.

코드 예제

curl -X POST "https://message.bootapi.com/alimtalk/templates" \
  -H "Authorization: Basic {base64(client_key:secret_key)}" \
  -H "Content-Type: application/json" \
  -d '{
    "ksp_id": "6a718d6cdd5558fb1fff72af",
    "name": "예약 확정 안내",
    "content": "#{company_name}\n#{user_name}님, #{booking_date} 예약이 확정되었어요.",
    "msg_type": "BA",
    "buttons": [
      {
        "name": "예약 확인하기",
        "linkType": "WL",
        "linkMo": "https://#{mobile_link}",
        "linkPc": "https://#{pc_link}"
      }
    ]
  }'bash

응답

{
  "id": "68b0f2a1c3d4e5f6a7b8c9d0",
  "code": "BT_A58A7B_1A2B3C4D",
  "ksp_id": "6a718d6cdd5558fb1fff72af",
  "name": "예약 확정 안내",
  "content": "#{company_name}\n#{user_name}님, #{booking_date} 예약이 확정되었어요.",
  "msg_type": "BA",
  "emphasize_type": "NONE",
  "required_variables": ["company_name", "user_name", "booking_date", "mobile_link", "pc_link"],
  "inspection_status": "registered",
  "vendor_status": 1,
  "comments": [],
  "comment_count": 0,
  "created_at": "2026-08-27T10:00:00+09:00"
}json

시각 필드 형식은 응답의 시각 형식을 먼저 봐요.

에러 코드

코드 error_code 메시지 대처 방법
3017 TEMPLATE_VARIABLE_MISSING 변수 누락·규격 위반 글자 수·강조표기 조건·버튼 규격을 확인해요
3018 SENDER_NOT_VERIFIED 발신프로필 미검증 채널을 다시 연동해 인증을 마쳐요
3019 TEMPLATE_CODE_DUPLICATED 템플릿 코드 중복 template_code를 비워 서버 채번에 맡겨요
3024 SENDER_NOT_LINKED 발신프로필 미연결 ksp_id가 이 프로젝트의 채널인지 확인해요
3027 TEMPLATE_NAME_DUPLICATED 템플릿 이름 중복 같은 채널 안에서 이름이 겹쳐요. 다른 이름을 써요
3013 KAKAO_TEMPLATE_REQUEST_FAILED 등록 거부 (HTTP 500) 카카오가 등록을 거부했어요. message의 사유를 확인해요

변수 예문 사전

템플릿 본문의 #{user_name} 같은 자리표시자는 그대로 보면 무슨 메시지인지 알기 어려워요. 채널마다 표시용 예문​​을 모아 둔 사전이 있어서, 템플릿·공식 템플릿 응답의 variable_examples 와 미리보기가 홍길동처럼 읽혀요.

발송값이 아니에요

예문은 화면 표시 전용​​이에요. 카카오로 전송되지 않고 검수 상태에도 영향을 주지 않아요. 실제로 나가는 값은 발송의 variables예요.

사전은 두 경로로 채워져요.

  • 템플릿을 생성·수정할 때 examples 를 주면 그 채널 사전에 합쳐져요.
  • 템플릿과 상관없이 예문만 바꾸려면 아래 API를 불러요.
PUThttps://message.bootapi.com/alimtalk/senders/{ksp_id}/variable_examplesBasic Auth
파라미터 타입 필수 설명
ksp_id String 필수 채널 id (경로 파라미터)
examples Object 선택 변수명 → 예문 매핑. 비우면 아무것도 바꾸지 않고 현재 사전을 돌려줘요

보낸 키만 덮어쓰는 부분 갱신​​이에요. 다른 변수의 예문은 그대로 남고, 한 채널 안에서는 같은 변수에 같은 예문이 적용돼요. 빈 문자열은 무시돼서 이 API로 예문을 지울 수는 없어요. . 이 들어가거나 $ 로 시작하는 키는 오류 없이 버려져요.

curl -X PUT "https://message.bootapi.com/alimtalk/senders/6a718d6cdd5558fb1fff72af/variable_examples" \
  -H "Authorization: Basic {base64(client_key:secret_key)}" \
  -H "Content-Type: application/json" \
  -d '{ "examples": { "user_name": "홍길동", "company_name": "부트페이몰" } }'bash

갱신된 사전 전체를 돌려줘요.

{
  "ksp_id": "6a718d6cdd5558fb1fff72af",
  "variable_examples": {
    "user_name": "홍길동",
    "company_name": "부트페이몰",
    "order_number": "20260827-0001"
  }
}json

이 프로젝트에 연동된 채널이 아니면 3024(SENDER_NOT_LINKED)예요. 공식 템플릿은 조회할 때 ksp_id 를 넘기면 그 채널 사전으로 채워지고, 자체 템플릿은 소속 채널의 사전이 자동으로 적용돼요.

다음 단계

검수 요청으로 카카오 심사를 맡겨요. 승인이 나면 발송할 수 있어요.