비즈뿌리오 NAPI
공통 사항
네이버 톡톡 관리 API (NAPI) — 네이버 톡톡 발송에 필요한 파트너·그룹·이미지·템플릿을 등록·조회·수정·삭제하는 관리 API.
NOTE: NAPI 는 네이버 톡톡 메시지를 발송하지 않습니다. 발송은 메시지 API 의
content.ntalk을 사용합니다. (BIZCLIENT 미지원, NTALK 은 API 전용)
연동 규격
| 항목 | 값 |
|---|---|
| 프로토콜 | HTTPS |
| 도메인 | https://napi.bizppurio.com/ |
| 메서드 | POST 전용 |
| 인코딩 | UTF-8 |
| Content-Type | application/json; charset=utf-8 |
| 인증 | Bearer 토큰 (Authorization: Bearer {accessToken}) |
| 권장 응답 대기 시간 | 30초 |
인증 흐름
자세한 토큰 발급은 토큰 API 를 참고하세요.
공통 응답 형식
성공·실패 모두 다음 형식. 429 외 검증·인증 실패는 HTTP 200 + 본문 code 로 결과 전달.
{ "code": "200", "message": "요청 성공", "data": { ... } }
| 필드 | 설명 |
|---|---|
code |
결과 코드 (200 = 성공, 그 외 코드 정의 참고) |
message |
결과 메시지 |
data |
성공 시 응답 본문 (엔드포인트별 상이) |
errors |
필드 검증 실패 시 { field, value, reason } 배열 |
Rate Limit
| 구분 | 제한 |
|---|---|
토큰 API (/token/*) |
IP 기준 10 r/m |
| 그 외 자원 API | 계정 기준 100 r/m |
초과 시 HTTP 429 + 응답 헤더 X-Rate-Limit-Limit / X-Rate-Limit-Remaining / X-Rate-Limit-Retry-After-Seconds.
자원 ↔ 발송 연결
NAPI 로 등록·관리하는 자원은 다음과 같이 메시지 API content.ntalk 에서 사용됩니다.
| NAPI 에서 등록·관리 | 네이버 톡톡 발송에서 사용 |
|---|---|
파트너 키 (naverPartnerKey) |
content.ntalk.partnerkey |
템플릿 코드 (templateCode) |
content.ntalk.templatecode |
이미지 해시 ID (imageHashId) |
content.ntalk.extra.attachment.imageHashId |
템플릿 그룹 키 (templateGroupKey) |
content.ntalk.groupkey |
추가 사항
템플릿 상태 변화:
templateStatusType(검수):REGISTERED→PENDING→APPROVED|REJECTEDtemplateSendingStatusType(발송):WAITING→SENDING|BLOCKEDWAITING이 아닌 상태에서는 수정/삭제 불가
토큰
refreshToken (1주) · accessToken (4시간) 발급 (2개 엔드포인트, 인증 헤더 없음, IP 단위 10 r/m)
Refresh-Token 발행
accessToken 발행에 사용하는 장기 토큰입니다. 유효 기간 1주.
- 비즈뿌리오 사이트에 등록된 모듈 계정(
bizId) + 발급받은apiKey필요 - 토큰 발급 API는 IP 단위 10 r/m Rate Limit 적용
- 응답으로
refreshToken과 즉시 사용 가능한accessToken한 쌍을 함께 반환
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| bizId | string | 필수 | 비즈뿌리오 사용자 ID |
| apiKey | string | 필수 | 발급받은 API Key |
curl -X POST "https://napi.bizppurio.com/token/refresh" \
-H "Content-Type: application/json" \
-d '{
"bizId": "bizUserId001",
"apiKey": "123cr0wSXXXXXXXX"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └refreshToken | string | — | 리프레시 토큰 (1주 유효) |
| └accessToken | string | — | 인증 토큰 (4시간 유효) |
{
"code": "200",
"message": "요청 성공",
"data": {
"refreshToken": "...",
"accessToken": "..."
}
}Access-Token 발행
API 인증에 사용하는 단기 토큰입니다. 유효 기간 4시간.
refreshToken만으로 호출- 만료 시 다시 발급하여
Authorization: Bearer {accessToken}헤더에 사용
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| refreshToken | string | 필수 | 리프레시 토큰 |
curl -X POST "https://napi.bizppurio.com/token/access" \
-H "Content-Type: application/json" \
-d '{
"refreshToken": "..."
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └accessToken | string | — | 인증 토큰 (4시간 유효) |
{
"code": "200",
"message": "요청 성공",
"data": {
"accessToken": "..."
}
}파트너
네이버 톡톡 파트너(발송 계정) 정보 조회 (1개 엔드포인트).
파트너 등록은 NAPI에서 불가 — 비즈뿌리오 웹에서만 가능. 사전에 네이버 톡톡 파트너센터에서 파트너 계정 생성·승인 후 대행사(다우기술)를 등록해야 naverPartnerKey 가 발급됩니다.
파트너 조회
네이버 톡톡에 등록된 파트너(발송 계정) 정보를 조회합니다.
ℹ️ 파트너 등록은 NAPI에서 불가하며 비즈뿌리오 웹에서만 가능합니다. 사전에 네이버 톡톡 파트너센터에서 파트너 계정 생성·승인 후 대행사(다우기술) 등록이 완료되어 있어야 합니다.
응답에는 소속 그룹 정보(templateGroups[]), 템플릿 상태별 개수(templateCount), 계정 정보(account)가 포함됩니다. accountStatusType 코드는 NORMAL · PAUSE · SYSPAUSE · PREBLOCK · BLOCK · DELETED.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 네이버 톡톡 파트너 키 (파트너센터에서 파트너 계정 생성·승인 후 대행사 등록 완료된 파트너의 키) |
curl -X POST "https://napi.bizppurio.com/v1/partner/get" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "fAO8bJKWXXXXXXXX"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └templateGroups | array<object> | — | 소속된 그룹 정보 배열 |
| └name | string | — | 그룹명 |
| └templateGroupKey | string | — | 그룹키 |
| └templateCount | object | — | 템플릿 상태별 개수 |
| └approved | integer | — | 검수완료 템플릿 수 |
| └rejected | integer | — | 검수반려 템플릿 수 |
| └pending | integer | — | 검수요청 템플릿 수 |
| └registered | integer | — | 등록 템플릿 수 |
| └account | object | — | 파트너 계정 정보 |
| └profileName | string | — | 프로필명 |
| └accountStatus | string | — | 계정상태 (한글 라벨) |
| └accountStatusType | string | — | 계정상태 코드 = NORMAL | PAUSE | SYSPAUSE | PREBLOCK | BLOCK | DELETED |
| └accountId | string | — | 톡톡계정 ID |
| └partnerKey | string | — | 파트너키 |
| └chatYn | boolean | — | 상담 기능 사용 여부 |
| └businessTypeCategoryName | string | — | 업종분류 |
| └registerDate | string | — | 등록일 |
{
"code": "200",
"message": "요청 성공",
"data": {
"templateGroups": [
{
"name": "그룹 1",
"templateGroupKey": "..."
},
{
"name": "비즈뿌리오",
"templateGroupKey": "..."
}
],
"templateCount": {
"approved": 260,
"rejected": 260,
"pending": 260,
"registered": 260
},
"account": {
"profileName": "다우기술",
"accountStatus": "사용중",
"accountStatusType": "NORMAL",
"accountId": "...",
"partnerKey": "...",
"chatYn": true,
"businessTypeCategoryName": "인터넷/통신 > 인터넷서비스",
"registerDate": "2024.05.17. 14:09:27"
}
}
}그룹
파트너 그룹 생성 · 구성원 추가/제거 (3개 엔드포인트). 그룹의 템플릿은 파트너 개별 템플릿과 별도로 관리됩니다.
파트너 그룹 추가
파트너 그룹을 생성합니다. 생성된 그룹의 templateGroupKey를 이용해 파트너 추가 및 그룹 템플릿 관리에 사용합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| groupName | string | 필수 | 그룹명 |
curl -X POST "https://napi.bizppurio.com/v1/group/register" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"groupName": "TP-GROUP-TEST"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └name | string | — | 그룹명 |
| └templateGroupKey | string | — | 그룹키 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"name": "string",
"templateGroupKey": "string"
}
}파트너 그룹에 파트너 추가
파트너 그룹에 파트너를 추가합니다. 추가된 파트너는 해당 그룹의 그룹 템플릿을 사용할 수 있습니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| naverPartnerId | string | 필수 | 파트너 ID |
curl -X POST "https://napi.bizppurio.com/v1/group/add/partner" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "dOn5qlguXXXXXXXX",
"naverPartnerId": "w4tXXXXXXXX"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └name | string | — | 그룹명 |
| └templateGroupKey | string | — | 그룹키 |
| └naverPartners | array<string> | — | 그룹에 속한 파트너 ID 리스트 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"name": "string",
"templateGroupKey": "string",
"naverPartners": [
"string"
]
}
}파트너 그룹에서 파트너 제거
파트너 그룹에 존재하는 네이버 파트너를 제거합니다. 요청·응답 구조는 파트너 추가와 동일합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| naverPartnerId | string | 필수 | 파트너 ID |
curl -X POST "https://napi.bizppurio.com/v1/group/remove/partner" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"naverPartnerId": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └name | string | — | 그룹명 |
| └templateGroupKey | string | — | 그룹키 |
| └naverPartners | array<string> | — | 그룹에 속한 파트너 ID 리스트 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"name": "string",
"templateGroupKey": "string",
"naverPartners": [
"string"
]
}
}이미지
파트너 / 그룹 이미지 URL · 파일 업로드 (4개 엔드포인트).
- 포맷 JPG / JPEG / PNG / GIF, 300 KB 이하
imageType: content권장 552×552 /imageType: feed598×300 고정 (혜택 피드용)- 반환된
imageHashId를 템플릿의sampleImageHashId·feedDisplayImageHashId·thumbnailImageHashId등에 사용
이미지 URL 업로드
원격 URL의 이미지를 업로드하여 imageHashId를 발급받습니다.
- 포맷 JPG / JPEG / PNG / GIF, 300 KB 이하
imageType: content권장 552×552,imageType: feed598×300 고정
📖 상세 규격은 버튼·이미지 규격 참고.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| imageUrl | string | 필수 | 업로드할 이미지 URL |
| imageType | string | — | content(기본 552×552 권장) / feed(598×300 고정) = content | feed |
curl -X POST "https://napi.bizppurio.com/v1/image/upload/url" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"imageUrl": "https://...",
"naverPartnerKey": "fAO8bJKWXXXXXXXX",
"imageType": "content"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └imageHashId | string | — | 이미지 해시 ID — 템플릿에서 참조 |
{
"code": "200",
"message": "요청 성공",
"data": {
"imageHashId": "..."
}
}이미지 파일 업로드
로컬 이미지 파일(multipart/form-data)을 업로드합니다.
- 포맷 JPG / JPEG / PNG / GIF, 300 KB 이하
imageType동작은 이미지 URL 업로드 참고
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| file | string <binary> | 필수 | 업로드할 이미지 파일 |
| imageType | string | — | content(기본) 또는 feed = content | feed |
curl -X POST "https://napi.bizppurio.com/v1/image/upload/file" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "string",
"file": "{binary}",
"imageType": "content"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └imageHashId | string | — | 이미지 해시 ID — 템플릿에서 참조 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"imageHashId": "string"
}
}발송 그룹 이미지 URL 업로드
파트너 그룹 단위로 사용할 이미지를 URL로 업로드합니다. 응답 구조는 이미지 URL 업로드와 동일합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| imageUrl | string | 필수 | 업로드할 이미지의 URL |
| imageType | string | — | = content | feed |
curl -X POST "https://napi.bizppurio.com/v1/image/group/upload/url" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"imageUrl": "string",
"imageType": "content"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └imageHashId | string | — | 이미지 해시 ID — 템플릿에서 참조 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"imageHashId": "string"
}
}발송 그룹 이미지 파일 업로드
파트너 그룹 단위로 사용할 이미지를 파일(multipart/form-data)로 업로드합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| file | string <binary> | 필수 | 업로드할 이미지 파일 |
| imageType | string | — | = content | feed |
curl -X POST "https://napi.bizppurio.com/v1/image/group/upload/file" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"file": "{binary}",
"imageType": "content"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └imageHashId | string | — | 이미지 해시 ID — 템플릿에서 참조 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"imageHashId": "string"
}
}템플릿
정보성 · 광고성(혜택) 네이버 톡톡 템플릿 CRUD · 검수 요청 · 이력 (9개 엔드포인트).
상품 종류 (productCode)
INFORMATION— 정보성 (알림 / 선물 전달)BENEFIT— 마케팅/광고성 (혜택)
템플릿 타입 (templateType)
- 정보성:
BASIC·GIFT·TABLE - 혜택:
BENEFIT·BENEFIT_LMS·BENEFIT_CAROUSEL_COMMERCE·BENEFIT_CAROUSEL_FEED·BENEFIT_LIST_COMMERCE·BENEFIT_LIST_FEED
발송 메시지 API 의 네이버 톡톡 ContentNtalk 의 템플릿 타입 코드(ID/IG/IT/BD/BM/BC/BL/CT)와 일관성 있게 매핑되며, NAPI 는 자원 등록 / 관리 단에서 위 풀네임을 사용합니다.
검색 노출 동작 (searchResultExposure)
true: 버튼 URL 개인화 불가. 변수(#{}) 사용 시 등록 실패.false: 발송 시점 URL 포함 가능.
카테고리 B005 (소식) 제약
categoryType · benefitTypes · discountInfo · feedDisplayEndedAt · feedDisplayImageHashId · validityInfo 사용 불가, searchResultExposure 는 항상 false.
템플릿 조회
등록된 템플릿의 상세 정보를 조회합니다.
📖
templateType별 구성은 템플릿 타입·노출 예시 참고.
템플릿 타입별 추가 필드:
GIFT:sampleCouponTABLE:tableElements[]+pushNoticeBENEFIT*:benefit객체 (title,feedDisplayImageHashId,categoryType,benefitTypes,discountInfo,validityInfo등)
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| templateCode | string | 필수 | 템플릿 코드 |
curl -X POST "https://napi.bizppurio.com/v1/template/get" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "string",
"templateCode": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}정보성 템플릿 생성
정보성(productCode: INFORMATION) 템플릿을 신규 등록합니다.
📖 타입별 노출 예시·필드는 템플릿 타입·노출 예시, 버튼·이미지 규격은 버튼·이미지 규격 참고.
templateType 별 필드:
BASIC— 텍스트 + 버튼 (이미지 없음)IMAGE— 텍스트 + 이미지(sampleImageHashId) + 버튼GIFT—sampleCoupon객체 사용 (쿠폰 첨부 시 이미지 첨부 불가)TABLE—text대신pushNotice,tableInfo.elementList[]필수 (1~6개)
등록 직후 템플릿 상태는 templateStatusType: REGISTERED / templateSendingStatusType: WAITING.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string(64) | 필수 | 네이버 파트너 키 |
| templateCode | string(64) | 필수 | 관리 템플릿 코드 — 영문/숫자/ - 구성, 파트너별 유니크 |
| templateType | string | — | BASIC(기본형) · IMAGE(이미지형) · GIFT(선물) · TABLE(테이블) = BASIC | IMAGE | GIFT | TABLE |
| text | string(2048) | — | 발송 텍스트 — 변수( #{name}) 사용 가능, 알파벳·숫자·한글·/-_~ 허용. 변수 치환 결과 150자 이내 |
| pushNotice | string(2048) | — | TABLE 형에서 text 대신 사용하는 푸시 알림 메시지 |
| categoryCode | string(8) | 필수 | 템플릿 카테고리 코드 — G/C/F/D/P/S/T/R 시리즈 |
| buttons | array<object>(~5) | — | 버튼 배열 (최대 5개) |
| └type | string | 필수 | = WEB_LINK | APP_LINK |
| └buttonCode | string(64) | 필수 | 템플릿 내 유니크 코드 |
| └buttonName | string(20) | 필수 | 버튼 표시 문구 (기본형 20자, 커머스형 8자) |
| └mobileUrl | string | — | WEB_LINK 모바일 URL |
| └pcUrl | string | — | WEB_LINK PC URL |
| └iOsAppScheme | string | — | APP_LINK iOS 스킴 |
| └aOsAppScheme | string | — | APP_LINK Android 스킴 |
| sampleImageHashId | string | — | 이미지 API로 발급받은 해시 ID (쿠폰 첨부 시 이미지 첨부 불가) |
| sampleCoupon | object | — | 쿠폰 정보 (정보성-GIFT 형에서 사용) |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| couponDescription | array<object>(~10) | — | 쿠폰 설명 {title, content} 쌍 배열 (최대 10개) |
| └title | string | — | — |
| └content | string | — | — |
| tableInfo | object | — | 테이블 정보 (TABLE 형 필수) |
| └elementList | array<object>(1~6) | — | 테이블 요소 배열 (1~6개) |
| └subtitle | string(30) | — | 서브 타이틀 |
| └title | string(30) | — | 타이틀 |
| └strikeTitle | boolean | — | 타이틀 취소선 |
| └thumbnailImageUrl | string | — | 썸네일 이미지 URL |
| └thumbnailImageHashId | string | — | 썸네일 이미지 해시 ID |
| └table | array<object>(~10) | — | 테이블 항목 — {title(7자), content(20자)} × 최대 10개 (본문 없으면 필수) |
| └title | string(7) | — | — |
| └content | string(20) | — | — |
| └text | string(1000) | — | 본문 — table이 없으면 필수 |
| └additionalContent | string(500) | — | 부가정보 |
| └buttons | array<object>(~5) | — | — |
| └type | string | 필수 | = WEB_LINK | APP_LINK |
| └buttonCode | string(64) | 필수 | 템플릿 내 유니크 코드 |
| └buttonName | string(20) | 필수 | 버튼 표시 문구 (기본형 20자, 커머스형 8자) |
| └mobileUrl | string | — | WEB_LINK 모바일 URL |
| └pcUrl | string | — | WEB_LINK PC URL |
| └iOsAppScheme | string | — | APP_LINK iOS 스킴 |
| └aOsAppScheme | string | — | APP_LINK Android 스킴 |
| └updateMode | string | — | 수정 시 항목별 동작 (그룹 템플릿 수정에서 사용) = delete | update | add |
curl -X POST "https://napi.bizppurio.com/v1/template/register/information" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "fAO8bJKWXXXXXXXX",
"templateCode": "TP-INFORMATION-BASIC-XXXXXXXX",
"text": "템플릿 등록 테스트입니다.",
"categoryCode": "R006",
"templateType": "BASIC",
"buttons": [
{
"type": "WEB_LINK",
"buttonCode": "BTN-CODE-1",
"buttonName": "웹 링크 버튼"
}
]
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}광고성(혜택) 템플릿 생성
광고성·혜택 템플릿을 신규 등록합니다. templateType 은 6종입니다.
| templateType | 설명 |
|---|---|
BENEFIT |
기본형 |
BENEFIT_LMS |
LMS형(장문) |
BENEFIT_CAROUSEL_COMMERCE |
캐러셀 커머스형 |
BENEFIT_CAROUSEL_FEED |
캐러셀 피드형 |
BENEFIT_LIST_COMMERCE |
리스트 커머스형 |
BENEFIT_LIST_FEED |
리스트 피드형 |
혜택 소재는 모두 benefit 객체 안에 담습니다.
| 구분 | 필드 |
|---|---|
| 필수 | title · feedDisplayImageHashId(598×300) · categoryType · benefitTypes · validityInfo · searchResultExposure |
| 둘 중 하나 필수 | blockCallNumber / blockMessageUrl |
| 캐러셀·리스트형 추가 | introduction · products[] · moreButton* |
제약
- 검색 노출(
searchResultExposure: true) 시 버튼 URL 개인화 불가 categoryCode: B005(소식) 선택 시categoryType·benefitTypes·discountInfo·feedDisplayEndedAt·feedDisplayImageHashId·validityInfo사용 불가,searchResultExposure는 항상false
📖 타입별 노출 예시는 템플릿 타입·노출 예시,
benefit구성·할인·유효기간·소식 제약은 혜택 메시지 구성 참고.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string(64) | 필수 | — |
| templateType | string | 필수 | = BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| templateCode | string(64) | 필수 | 영문/숫자, 파트너별 유니크 |
| categoryCode | string | 필수 | 혜택 카테고리 코드 — B001 쿠폰 · B002 적립금 · B003 추가 증정 · B004 기타 이벤트 · B005 소식 |
| text | string | — | 발송 텍스트 (기본형 360자, LMS형 2000자) |
| sampleImageHashId | string | — | 톡톡 말풍선용 이미지 해시 ID (기본형 필수, LMS형 선택) |
| buttons | array<object> | — | — |
| └type | string | 필수 | = WEB_LINK | APP_LINK |
| └buttonCode | string(64) | 필수 | 템플릿 내 유니크 코드 |
| └buttonName | string(20) | 필수 | 버튼 표시 문구 (기본형 20자, 커머스형 8자) |
| └mobileUrl | string | — | WEB_LINK 모바일 URL |
| └pcUrl | string | — | WEB_LINK PC URL |
| └iOsAppScheme | string | — | APP_LINK iOS 스킴 |
| └aOsAppScheme | string | — | APP_LINK Android 스킴 |
| benefit | object | 필수 | 혜택 소재 정보. |
| └title | string | — | 혜택 제목 (한글 20자 내 권장) |
| └categoryType | string | — | 혜택 카테고리 — 피드 [인기] 탭 분류 = FASHION | BEAUTY | DIGITAL_APPLIANCE | LIVING | FOOD | KIDS | SPORTS_LEISURE | NECESSITIES | BOOK_HOBBY | FINANCE | ETC |
| └benefitTypes | array<string>(~2) | — | 혜택 유형 1~2개. LMS형은 EVENT 고정 |
| └feedDisplayEndedAt | string | — | 피드 표시용 만료일 (YYYY-MM-DD, 최대 2주) |
| └feedDisplayImageHashId | string | — | 피드 노출 이미지 해시 ID — 598×300 고정 ( imageType: feed로 업로드) |
| └searchResultExposure | boolean | — | 검색결과 노출 여부 (미입력 시 false). true 시 버튼 URL 개인화 불가 — 등록 시점에 URL 확정 필요 |
| └blockCallNumber | string(13) | — | 080 광고수신거부 전화번호 ( 080-123-1234 형식). blockMessageUrl과 둘 중 하나 필수 |
| └blockMessageUrl | string | — | https 광고수신거부 URL. blockCallNumber와 둘 중 하나 필수 |
| └blockContactType | string | — | 광고수신거부 연락 유형 — TELEPHONE(전화번호) / LINK(링크) = TELEPHONE | LINK |
| └moreButtonType | string | — | 더보기 버튼 타입 (캐러셀형) — WEB_LINK / APP_LINK = WEB_LINK | APP_LINK |
| └moreButtonUrl | string | — | 더보기 버튼 URL (캐러셀형). 미입력 시 더보기 버튼 미표시 |
| └moreButtonMobileUrl | string | — | 더보기 버튼 모바일 URL. 미입력 시 moreButtonUrl 값 사용 |
| └moreButtoniOsAppScheme | string | — | 더보기 버튼 iOS 앱 스킴 (moreButtonType=APP_LINK) |
| └moreButtonaOsAppScheme | string | — | 더보기 버튼 Android 앱 스킴 (moreButtonType=APP_LINK) |
| └introduction | object | — | 캐러셀 / 리스트형 인트로 (캐러셀 커머스 · 리스트 커머스 · 리스트 피드 필수) |
| └headerImageHashId | string | — | 헤더 이미지 해시 ID ( headerImageUrl과 둘 중 하나 필수) |
| └headerImageUrl | string | — | 헤더 이미지 URL ( headerImageHashId와 둘 중 하나 필수) |
| └title | string | 필수 | 인트로 제목 (한글 20자 이내) |
| └description | string | — | 인트로 내용 (캐러셀 커머스 60자 · 리스트 커머스/피드 70자) |
| └buttonType | string | — | 인트로 버튼 타입 — WEB_LINK / APP_LINK = WEB_LINK | APP_LINK |
| └buttonCode | string(64) | — | 인트로 버튼 코드 |
| └buttonTitle | string | — | 캐러셀 커머스 필수 버튼 제목 (8자) |
| └pcUrl | string | — | — |
| └mobileUrl | string | — | — |
| └iOsAppScheme | string | — | — |
| └aOsAppScheme | string | — | — |
| └products | array<object>(~6) | — | 상품 배열 (캐러셀/리스트형) — 캐러셀 커머스 2~5 · 캐러셀 피드 2~6 · 리스트 커머스 3~6 · 리스트 피드 2~3 |
| └imageHashId | string | — | 상품 이미지 해시 ID ( imageUrl과 둘 중 하나 필수) |
| └imageUrl | string | — | 상품 이미지 URL ( imageHashId와 둘 중 하나 필수) |
| └title | string | — | 상품명 (한글 20자 이내) |
| └description | string | — | 상품 설명 (캐러셀 피드 100자 필수) |
| └originalPrice | number | — | 할인 전 가격 |
| └currentPrice | number | — | 할인 후 가격 (originalPrice 이하) |
| └buttonType | string | — | 상품 버튼 타입 — WEB_LINK / APP_LINK = WEB_LINK | APP_LINK |
| └buttonCode | string(64) | — | 상품 버튼 코드 |
| └pcUrl | string | — | — |
| └mobileUrl | string | — | — |
| └iOsAppScheme | string | — | — |
| └aOsAppScheme | string | — | — |
| └buttons | array<object> | — | — |
| └type | string | 필수 | = WEB_LINK | APP_LINK |
| └buttonCode | string(64) | 필수 | 템플릿 내 유니크 코드 |
| └buttonName | string(20) | 필수 | 버튼 표시 문구 (기본형 20자, 커머스형 8자) |
| └mobileUrl | string | — | WEB_LINK 모바일 URL |
| └pcUrl | string | — | WEB_LINK PC URL |
| └iOsAppScheme | string | — | APP_LINK iOS 스킴 |
| └aOsAppScheme | string | — | APP_LINK Android 스킴 |
| └discountInfo | object | — | 할인 정보 |
| └discountType | string | — | AMOUNT(할인금액) / RATE(할인률) / POINT(적립금) = AMOUNT | RATE | POINT |
| └discountAmount | number | — | 할인금액 — discountType=AMOUNT |
| └discountRate | number | — | 할인률 — discountType=RATE |
| └maxDiscountAmount | number | — | 최대 할인금액 — discountType=RATE |
| └minimumOrderAmount | number | — | 최소 주문금액 (POINT/PRODUCT/DELIVERY/ORDER 포함 시 1,000원 이상) |
| └accumulateAmount | number | — | 적립금액 — discountType=POINT |
| └landingPageUrl | string | — | 혜택 클릭 시 이동 페이지 (POINT/PRODUCT/DELIVERY/ORDER 필수) |
| └benefitContent | string | — | 혜택 본문 (예 "3,000원 할인 쿠폰") |
| └benefitKindType | string | — | 혜택 종류 — COUPON(쿠폰) / POINT(적립금) = COUPON | POINT |
| └couponPublicationType | string | — | 쿠폰 발급 방식 — DOWNLOAD(다운로드) / IMMEDIATE(즉시발급) = DOWNLOAD | IMMEDIATE |
| └validityInfo | object | — | 혜택 유효 기간 |
| └validType | string | 필수 | PERIOD(기간 설정) / EXPIRATION(발급일 기준 N일) = PERIOD | EXPIRATION |
| └validDays | number | — | EXPIRATION 유형 — 다운로드 후 N일간 유효 |
| └validStartedAt | string | — | PERIOD 유형 시작일 (YYYY-MM-DD) |
| └validEndedAt | string | — | PERIOD 유형 종료일 (YYYY-MM-DD) |
curl -X POST "https://napi.bizppurio.com/v1/template/register/benefit" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "fAO8bJKWXXXXXXXX",
"templateType": "BENEFIT",
"templateCode": "TP-BENEFIT-BASIC-XXXXXXXX",
"categoryCode": "B002",
"text": "역대급 할인 오늘 단 하루만 진행! 패션 PICK 5시간 후 종료!",
"sampleImageHashId": "om_TcC1RXXXXXXXX",
"buttons": [
{
"type": "WEB_LINK",
"buttonName": "구매하기",
"buttonCode": "POPUP_BUTTON1",
"mobileUrl": "https://m.naver.com",
"pcUrl": "https://www.naver.com"
}
],
"benefit": {
"title": "곧 종료 시즌 막바지 ~70% 대박할인!",
"feedDisplayImageHashId": "om_TcC1RXXXXXXXX",
"feedDisplayEndedAt": "2024-12-30",
"categoryType": "LIVING",
"benefitTypes": [
"TIMESALE",
"PRODUCT"
],
"discountInfo": {
"discountType": "AMOUNT",
"discountAmount": 3000,
"minimumOrderAmount": 10000,
"landingPageUrl": "https://www.naver.com"
},
"validityInfo": {
"validType": "PERIOD",
"validStartedAt": "2024-12-30",
"validEndedAt": "2024-12-30"
},
"blockCallNumber": "080-123-1234"
}
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}템플릿 수정
등록 또는 검수 반려된 템플릿을 수정합니다. 수정된 템플릿은 templateStatusType: REGISTERED로 업데이트됩니다.
- 수정이 필요한 필드만 요청. 변경 불가:
productCode·templateCode·naverPartnerKey·templateType·createdAt·modifiedAt. buttons·couponDescription등 목록형은 입력 전체로 교체. 모두 제거하려면"buttons": [].
배열형태의 데이터 수정 (테이블형, 혜택 캐러셀/리스트)
각 항목별로 updateMode를 사용하여 삭제·수정·추가를 진행합니다. updateMode는 소문자로 입력하며 다음과 같습니다.
delete: 해당 순서의 항목을 삭제합니다.update: 해당 순서의 항목에 입력된 필드를 수정합니다. 일반 수정처럼 필요 항목만 입력 가능합니다.add: 입력한 페이로드를 이용하여 목록의 마지막에 항목을 추가합니다.
⚠️ 발송대기(
WAITING)가 아닌 템플릿은 수정/삭제 불가.
naverPartnerKey + templateCode (정보성/광고성 페이로드 동일 구조)curl -X POST "https://napi.bizppurio.com/v1/template/modify" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "fAO8bJKWXXXXXXXX",
"productCode": "INFORMATION",
"templateCode": "TP-INFORMATION-BASIC-XXXXXXXX",
"text": "템플릿 수정 테스트입니다.",
"categoryCode": "S001",
"templateType": "BASIC",
"buttons": []
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}템플릿 검수 요청
등록·수정된 템플릿을 검수 요청합니다. 검수 요청 시 templateStatusType이 PENDING으로 변경됩니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| templateCode | string | 필수 | 템플릿 코드 |
| comment | string | — | 검수 요청 메모 |
curl -X POST "https://napi.bizppurio.com/v1/template/inspect" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "string",
"templateCode": "string",
"comment": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └templateCode | string | — | — |
{
"code": "200",
"message": "요청 성공",
"data": {
"templateCode": "TP-INFORMATION-TABLE-XXXXXXXX"
}
}템플릿 검수 요청 취소
검수 요청 상태의 템플릿을 취소합니다. 요청 파라미터는 검수 요청과 동일합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| templateCode | string | 필수 | 템플릿 코드 |
| comment | string | — | 검수 요청 메모 |
curl -X POST "https://napi.bizppurio.com/v1/template/inspect/cancel" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "string",
"templateCode": "string",
"comment": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
]
}템플릿 검수 요청 이력
템플릿의 검수 요청·취소·반려 이력을 시간 순으로 조회합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| templateCode | string | 필수 | 템플릿 코드 |
curl -X POST "https://napi.bizppurio.com/v1/template/inspect/history" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "string",
"templateCode": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | array<object> | — | 이력 배열 |
| └content | string | — | 이력 내용 (검수 요청 / 취소 / 반려 등) |
| └createdAt | string | — | 발생 시점 |
{
"code": "200",
"message": "요청 성공",
"data": [
{
"content": "검수 요청",
"createdAt": "2024-12-26 15:40:39"
},
{
"content": "취소",
"createdAt": "2024-12-26 15:41:06"
}
]
}템플릿 삭제
템플릿을 삭제합니다.
⚠️ 발송대기(
WAITING)가 아닌 템플릿은 삭제 불가.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| templateCode | string | 필수 | 템플릿 코드 |
curl -X POST "https://napi.bizppurio.com/v1/template/remove" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "string",
"templateCode": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └templateCode | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"templateCode": "string"
}
}최근 변경된 템플릿 조회
지정 기간 내 변경된 템플릿을 페이지네이션으로 조회합니다. modifiedOnly: false로 호출하면 미수정 템플릿도 포함됩니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| naverPartnerKey | string | 필수 | 파트너 키 |
| fromDate | string | 필수 | 조회 시작 일자 ( yyyyMMdd 또는 YYYY-MM-DD) |
| toDate | string | — | 조회 종료 일자 — 미입력 시 현재 일자 |
| page | integer | — | — |
| count | integer | — | — |
| modifiedOnly | boolean | — | 수정된 값만 조회 (false 시 미수정 템플릿도 포함) |
curl -X POST "https://napi.bizppurio.com/v1/template/search" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"naverPartnerKey": "fAO8bJKWXXXXXXXX",
"fromDate": "2024-12-25",
"toDate": "2024-12-30",
"page": 1,
"count": 3
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | array<object> | — | 검색 결과 배열 |
| └id | string | — | — |
| └code | string | — | 템플릿 코드 |
| └partnerId | string | — | — |
| └freeOfCharge | boolean | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": [
{
"id": "string",
"code": "string",
"partnerId": "string",
"freeOfCharge": true,
"createdAt": "string",
"modifiedAt": "string"
}
]
}그룹 템플릿
파트너 그룹에 속한 여러 파트너가 공유하는 그룹 템플릿 CRUD · 검수 (8개 엔드포인트).
요청·응답 페이로드는 템플릿 관리와 동일하며, 식별자만 naverPartnerKey → templateGroupKey 로 대체됩니다. 경로 패턴도 /v1/template/* → /v1/template/group/*.
그룹 템플릿 조회
파트너 그룹에 등록된 그룹 템플릿을 조회합니다.
요청·응답 구조는 템플릿 조회와 동일하며 naverPartnerKey 대신 templateGroupKey 를 사용합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| templateCode | string | 필수 | 템플릿 코드 |
curl -X POST "https://napi.bizppurio.com/v1/template/group/get" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "YT1EN2VAXXXXXXXX",
"templateCode": "TP-GROUP-BASIC-XXXXXXXX"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}그룹 템플릿 생성
파트너 그룹용 템플릿을 신규 등록합니다. 페이로드는 정보성 템플릿 생성 / 광고성 템플릿 생성과 동일하며, naverPartnerKey 대신 templateGroupKey를 사용합니다.
templateGroupKeycurl -X POST "https://napi.bizppurio.com/v1/template/group/register" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "YT1EN2VAXXXXXXXX",
"templateCode": "TP-GROUP-BASIC-XXXXXXXX",
"text": "템플릿 등록 테스트입니다.",
"categoryCode": "S001",
"buttons": [
{
"type": "WEB_LINK",
"buttonCode": "BTN-CODE-1",
"buttonName": "웹 링크 버튼"
}
]
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}그룹 템플릿 수정
그룹 템플릿을 수정합니다. 동작 규칙은 템플릿 수정과 동일하며, 식별자만 templateGroupKey로 대체됩니다.
templateGroupKey + templateCode (정보성/광고성 페이로드 동일 구조)curl -X POST "https://napi.bizppurio.com/v1/template/group/modify" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "dOn5qlguXXXXXXXX",
"productCode": "INFORMATION",
"templateCode": "TP-GROUP-BASIC-XXXXXXXX",
"text": "템플릿 수정 테스트입니다.",
"categoryCode": "S001",
"templateType": "BASIC",
"buttons": []
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | 템플릿 상세 데이터.
|
| └id | string | — | — |
| └templateType | string | — | CARD_PAYMENT(productCode=CARDINFO)는 카드결제 알림 템플릿으로, 별도 채널에서 등록되며 NAPI 등록 엔드포인트로는 생성하지 않습니다.= BASIC | IMAGE | GIFT | TABLE | CARD_PAYMENT | BENEFIT | BENEFIT_LMS | BENEFIT_CAROUSEL_COMMERCE | BENEFIT_CAROUSEL_FEED | BENEFIT_LIST_COMMERCE | BENEFIT_LIST_FEED |
| └productCode | string | — | = INFORMATION | BENEFIT | CARDINFO |
| └code | string | — | 템플릿 코드 |
| └text | string | — | — |
| └partnerId | string | — | — |
| └templateGroupKey | string | — | 그룹 템플릿일 때만 포함 |
| └categoryCode | string | — | — |
| └templateStatusType | string | — | 검수 상태 — REGISTERED(등록) / PENDING(검수요청) / APPROVED(검수완료) / REJECTED(반려) = REGISTERED | PENDING | APPROVED | REJECTED |
| └templateSendingStatusType | string | — | 발송 상태 — WAITING(발송대기) / SENDING(발송중) / BLOCKED(차단). 발송대기 외 상태는 수정/삭제 불가. = WAITING | SENDING | BLOCKED |
| └freeOfCharge | boolean | — | — |
| └buttons | array<object> | — | — |
| └sampleCoupon | allOf | — | — |
| └code | string(100) | 필수 | 쿠폰 코드 (한글/영문/숫자/ -) |
| └name | string(20) | 필수 | 쿠폰 이름 |
| └endDate | string | 필수 | 쿠폰 만료일 (YYYY-MM-DD) |
| └publisher | string | — | 쿠폰 발행처 (생략 시 파트너 프로필명) |
| └imageUrl | string | — | 쿠폰 바코드 이미지 URL (300KB, 552×552 권장) |
| └pushNotice | string | — | — |
| └tableElements | array<object> | — | — |
| └benefit | object | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"id": "string",
"templateType": "BASIC",
"productCode": "INFORMATION",
"code": "string",
"text": "string",
"partnerId": "string",
"templateGroupKey": "string",
"categoryCode": "string",
"templateStatusType": "REGISTERED",
"templateSendingStatusType": "WAITING",
"freeOfCharge": true,
"buttons": [
{}
],
"sampleCoupon": {
"code": "string",
"name": "string",
"endDate": "string",
"publisher": "string",
"imageUrl": "string"
},
"pushNotice": "string",
"tableElements": [
{}
],
"benefit": {},
"createdAt": "string",
"modifiedAt": "string"
}
}그룹 템플릿 삭제
그룹 템플릿을 삭제합니다. 발송대기(WAITING) 상태에서만 가능합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| templateCode | string | 필수 | 템플릿 코드 |
curl -X POST "https://napi.bizppurio.com/v1/template/group/remove" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"templateCode": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └templateCode | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"templateCode": "string"
}
}그룹 템플릿 검수 요청
그룹 템플릿의 검수를 요청합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| templateCode | string | 필수 | 템플릿 코드 |
| comment | string | — | 검수 요청 메모 |
curl -X POST "https://napi.bizppurio.com/v1/template/group/inspect" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"templateCode": "string",
"comment": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | object | — | — |
| └templateCode | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": {
"templateCode": "string"
}
}그룹 템플릿 검수 요청 취소
그룹 템플릿 검수 요청을 취소합니다. 파라미터는 그룹 템플릿 검수 요청과 동일.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| templateCode | string | 필수 | 템플릿 코드 |
| comment | string | — | 검수 요청 메모 |
curl -X POST "https://napi.bizppurio.com/v1/template/group/inspect/cancel" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"templateCode": "string",
"comment": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
]
}그룹 템플릿 검수 요청 이력
그룹 템플릿의 검수 요청·취소·반려 이력을 조회합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| templateCode | string | 필수 | 템플릿 코드 |
curl -X POST "https://napi.bizppurio.com/v1/template/group/inspect/history" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "string",
"templateCode": "string"
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | array<object> | — | 이력 배열 |
| └content | string | — | 이력 내용 (검수 요청 / 취소 / 반려 등) |
| └createdAt | string | — | 발생 시점 |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": [
{
"content": "string",
"createdAt": "string"
}
]
}최근 변경된 그룹 템플릿 조회
지정 기간 내 변경된 그룹 템플릿을 페이지네이션으로 조회합니다.
| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| templateGroupKey | string | 필수 | 그룹 키 |
| fromDate | string | 필수 | 조회 시작 일자 (YYYY-MM-DD) |
| toDate | string | — | 조회 종료 일자 — 미입력 시 현재 |
| page | integer | — | — |
| count | integer | — | — |
| modifiedOnly | boolean | — | — |
curl -X POST "https://napi.bizppurio.com/v1/template/group/search" \
-H "Authorization: Bearer {accessToken}" \
-H "Content-Type: application/json" \
-d '{
"templateGroupKey": "dOn5qlguXXXXXXXX",
"fromDate": "2024-11-05",
"toDate": "2024-11-11",
"page": 1,
"count": 5
}'| 파라미터 | 타입 | 필수 | 설명 |
|---|---|---|---|
| code | string | 필수 | 결과 코드 (200=성공 · 400=잘못된 요청 · 401=인증 없음 · 403=접근 권한 없음 · 404=없는 페이지 · 429=요청 한도 초과 · 500=내부 에러) |
| message | string | 필수 | — |
| errors | array<object> | — | 필드 검증 실패 시 상세 오류 배열 |
| └field | string | — | — |
| └value | string | — | — |
| └reason | string | — | — |
| data | array<object> | — | 검색 결과 배열 |
| └id | string | — | — |
| └code | string | — | 템플릿 코드 |
| └partnerId | string | — | — |
| └freeOfCharge | boolean | — | — |
| └createdAt | string | — | — |
| └modifiedAt | string | — | — |
{
"code": "200",
"message": "요청 성공",
"errors": [
{
"field": "string",
"value": "string",
"reason": "string"
}
],
"data": [
{
"id": "string",
"code": "string",
"partnerId": "string",
"freeOfCharge": true,
"createdAt": "string",
"modifiedAt": "string"
}
]
}템플릿 타입·노출 예시
네이버 톡톡 템플릿은 정보성(productCode: INFORMATION) 4종과 광고성·혜택(productCode: BENEFIT) 6종으로 나뉩니다. 등록 시 productCode는 templateType에 따라 자동 고정되므로 요청에 포함하지 않습니다. 코드값 목록은 코드 정의를 참고하세요.
정보성 템플릿
| templateType | 설명 | 핵심 필드 | 톡톡 말풍선 |
|---|---|---|---|
BASIC |
텍스트 기본형 | text, buttons |
텍스트 + 버튼 |
IMAGE |
이미지형 | text, sampleImageHashId, buttons |
상단 이미지 + 텍스트 + 버튼 |
GIFT |
선물(쿠폰) | text, sampleCoupon, couponDescription |
쿠폰 카드 + 본문 |
TABLE |
테이블형 | pushNotice, tableInfo.elementList[] |
썸네일 + 표/본문 + 버튼 (요소 1~6개) |
TABLE형 — 필드 → 화면 노출 위치
테이블형은 tableInfo.elementList[]의 각 필드가 톡톡 말풍선의 정해진 위치에 노출됩니다.
광고성 혜택 템플릿
혜택 소재는 모두 benefit 객체 안에 담습니다. 타입별 introduction·products 요건, 할인·유효기간 규칙은 혜택 메시지 구성 에서 다룹니다.
| templateType | 설명 |
|---|---|
BENEFIT |
기본형 — 단일 말풍선(이미지 + 본문 + 쿠폰칩 + 버튼) |
BENEFIT_LMS |
LMS형 — 장문 본문(최대 2,000자), 이미지·캐러셀 없음 |
BENEFIT_CAROUSEL_COMMERCE |
캐러셀 커머스형 — 가로 상품 카드, 가격(원가·할인가·할인율) 노출 + 인트로 필수 |
BENEFIT_CAROUSEL_FEED |
캐러셀 피드형 — 가로 상품 카드, 설명·버튼 노출(가격 없음) |
BENEFIT_LIST_COMMERCE |
리스트 커머스형 — 세로 상품 리스트, 가격 노출 + 인트로 필수 |
BENEFIT_LIST_FEED |
리스트 피드형 — 세로 상품 리스트, 가격 없음 + 인트로 필수 |
💡 커머스형 ↔ 피드형 구분: 커머스형은 상품 가격을 노출(쇼핑 중심), 피드형은 가격 대신 상품 설명·버튼을 노출합니다. 캐러셀은 가로 스크롤, 리스트는 세로 나열입니다.
ℹ️ 위 목업은 레이아웃 구조 이해용입니다. 실제 노출은 기기 해상도·네이버 톡톡 정책에 따라 달라질 수 있습니다.
혜택 탭 · 검색 피드 노출
네이버 앱 푸시·알림으로 도착한 메시지는 발송 후 7일간 알림 목록·혜택 추천, 혜택 피드, 톡톡 메시지 등 여러 지면에 노출됩니다. 각 지면에는 feedDisplayImageHashId(598×300)·benefit.title·benefitTypes·discountInfo가 함께 표시됩니다.
템플릿 상태
templateStatusType (검수) |
의미 |
|---|---|
REGISTERED |
등록 |
PENDING |
검수요청 |
APPROVED |
검수완료 |
REJECTED |
반려 |
templateSendingStatusType (발송) |
의미 |
|---|---|
WAITING |
발송대기 |
SENDING |
발송중 |
BLOCKED |
차단 |
검수 완료 후 발송 전까지
WAITING, 발송 시작 시SENDING으로 전환됩니다.WAITING외 상태는 수정·삭제 불가.
파트너 계정 상태
파트너 조회 응답의 accountStatusType 값입니다.
| 코드 | 설명 |
|---|---|
NORMAL |
사용중 |
PAUSE |
사용중지 |
SYSPAUSE |
시스템사용중지 |
PREBLOCK |
사용보류 |
BLOCK |
사용제재 |
DELETED |
삭제 |
템플릿 카테고리 코드
등록 시 발송 상황에 맞는 categoryCode 를 입력합니다. 혜택(B) 코드는 productCode: BENEFIT 전용입니다.
게임 (G)
| 코드 | 중분류 | 코드 | 중분류 | |
|---|---|---|---|---|
G001 |
취소예정 | G007 |
입금확인(삽니다) | |
G002 |
종료예정 | G008 |
판매신청 | |
G003 |
취소 | G009 |
흥정신청 | |
G004 |
즉시구매 | G010 |
흥정수락 | |
G005 |
종료 | G011 |
재흥정 | |
G006 |
입금확인(팝니다) |
고객 (C)
| 코드 | 중분류 |
|---|---|
C001 |
방문완료 |
C002 |
방문 담당자안내 |
C003 |
A/S 완료안내 |
C004 |
필수고지안내 |
금융 (F)
| 코드 | 중분류 | 코드 | 중분류 | |
|---|---|---|---|---|
F001 |
입금알림 | F005 |
종가 알림 | |
F002 |
출금알림 | F006 |
체결내역알림 | |
F003 |
목표가 도달 | F007 |
정기적 수신동의 | |
F004 |
수익률 도달 | F009 |
금융 일반 |
배송 (D)
| 코드 | 중분류 | 코드 | 중분류 | |
|---|---|---|---|---|
D001 |
택배사 도착 | D006 |
대리수령완료 | |
D002 |
배송중 | D007 |
위탁배송지 배송완료 | |
D003 |
도착예정 | D008 |
반품수거방문 | |
D004 |
배송완료 | D009 |
배송 일반 | |
D005 |
배송시간안내 |
선물 (P)
| 코드 | 중분류 |
|---|---|
P001 |
선물도착알림 |
쇼핑 (S)
| 코드 | 중분류 | 코드 | 중분류 | |
|---|---|---|---|---|
S001 |
입금안내 | S020 |
배송지연 | |
S002 |
입금요청 | S021 |
상품유의사항 | |
S003 |
주문결제완료 | S022 |
회원그룹변경 | |
S004 |
무통장입금완료 | S023 |
주문완료 | |
S005 |
배송대기 | S024 |
상품준비중 | |
S006 |
발송조치 | S025 |
반품완료 | |
S007 |
배송완료 | S026 |
교환완료 | |
S008 |
취소접수 | S027 |
결제취소 | |
S009 |
반품접수 | S028 |
부분취소 | |
S010 |
문의답변완료 | S029 |
픽업상품 미수령 | |
S011 |
교환접수 | S030 |
쿠폰 만료 안내 | |
S012 |
환불완료 | S031 |
수신거부 처리 | |
S013 |
회원가입 | S032 |
정기결제 신청 | |
S014 |
회원인증 안내 | S033 |
정기결제 취소 | |
S015 |
비밀번호 안내 | S034 |
정기결제상품 품절 | |
S016 |
회원탈퇴 | S035 |
정기결제 건너뛰기 | |
S017 |
재입고 안내 | S036 |
정기결제 예정일 | |
S018 |
적립금 소멸 안내 | S037 |
정기결제 완료 | |
S019 |
본인확인 인증번호 발송 | S038 |
정기결제 실패 |
여행 (T)
| 코드 | 중분류 | 코드 | 중분류 | |
|---|---|---|---|---|
T001 |
예약확정 | T004 |
결제 요청 | |
T002 |
예약취소 | T005 |
맞춤여행 | |
T003 |
바우처발송 | T006 |
여행안내 |
카드이용알림 (R)
| 코드 | 중분류 |
|---|---|
R006 |
가입완료 |
R007 |
가입실패 |
R014 |
가입확인알림 |
R018 |
카드이용관련안내 |
혜택 (B) — productCode: BENEFIT 전용
| 코드 | 중분류 |
|---|---|
B001 |
쿠폰 |
B002 |
적립금 |
B003 |
추가 증정 |
B004 |
기타 이벤트 |
B005 |
소식 |
혜택 메시지 구성
광고성(productCode: BENEFIT) 템플릿의 benefit 객체 구성 규칙입니다. 타입별 레이아웃은 템플릿 타입·노출 예시를 참고하세요.
타입별 구성 요건
| templateType | introduction |
products 개수 |
비고 |
|---|---|---|---|
BENEFIT (기본형) |
— | — | text(360자) + sampleImageHashId |
BENEFIT_LMS |
— | — | text(2,000자), benefitTypes=EVENT 고정 |
BENEFIT_CAROUSEL_COMMERCE |
필수 (description 60자) |
2~5 | 상품 originalPrice/currentPrice |
BENEFIT_CAROUSEL_FEED |
— | 2~6 | 상품 description(100자)·버튼 1개 필수 |
BENEFIT_LIST_COMMERCE |
필수 (description 70자) |
3~6 | 상품 가격 노출 |
BENEFIT_LIST_FEED |
필수 (description 70자) |
2~3 | — |
할인 정보
benefitTypes에 PRODUCT·DELIVERY·ORDER·POINT가 포함되면 discountInfo 객체가 필수입니다.
| discountType | 필수 필드 | 설명 |
|---|---|---|
AMOUNT |
discountAmount |
정액 할인 |
RATE |
discountRate, maxDiscountAmount |
정률 할인(최대 할인액 동반) |
POINT |
accumulateAmount |
적립 |
minimumOrderAmount—POINT/PRODUCT/DELIVERY/ORDER포함 시 1,000원 이상.landingPageUrl— 동일 조건에서 필수(혜택 클릭 시 이동 페이지).benefitKindTypeCOUPON/POINT,couponPublicationTypeDOWNLOAD/IMMEDIATE.
유효기간
validityInfo 객체로 혜택 유효기간을 지정합니다.
PERIOD—validStartedAt~validEndedAt(YYYY-MM-DD).EXPIRATION— 발급일 기준validDays일간.
검색결과 노출
benefit.searchResultExposure 값:
true— 검색결과 노출. 단 개인화 변수(#{}) 사용 불가 — 등록 시 버튼 URL을 확정해야 하며,#{}포함 시 등록 실패.false(기본) — 정보성 알림처럼 타이틀·기본형/LMS형 본문에#{}개인화 변수 사용 가능.
소식 카테고리 제약
categoryCode: B005(소식) 선택 시 혜택탭 관련 파라미터(categoryType·benefitTypes·discountInfo·validityInfo·feedDisplayImageHashId·feedDisplayEndedAt)를 넣으면 등록 실패하며, searchResultExposure는 항상 false로 고정됩니다.
광고 수신거부
blockCallNumber(080 번호, 080-123-1234 형식)와 blockMessageUrl(https URL) 둘 중 하나는 반드시 입력합니다.
혜택 카테고리
혜택 탭 [인기] 분류에 활용되는 categoryType 값입니다.
| 코드 | 분류 | 코드 | 분류 | |
|---|---|---|---|---|
FASHION |
패션 | SPORTS_LEISURE |
스포츠·레저 | |
BEAUTY |
뷰티 | NECESSITIES |
생활용품 | |
DIGITAL_APPLIANCE |
디지털·가전 | BOOK_HOBBY |
도서·취미 | |
LIVING |
리빙 | FINANCE |
금융 | |
FOOD |
식품 | ETC |
기타 | |
KIDS |
출산·육아 |
혜택 유형
benefitTypes 는 최소 1개·최대 2개 선택하며, LMS형은 EVENT 로 고정됩니다.
| 코드 | 설명 | discountInfo 필수 |
|---|---|---|
TIMESALE |
타임 세일 | N |
GIFT |
사은품 증정 | N |
BONUS |
1+1 | N |
BRANDDAY |
브랜드 데이 | N |
EVENT |
이벤트 | N |
PRODUCT |
상품 할인 | Y |
DELIVERY |
배송비 할인 | Y |
ORDER |
장바구니 할인 | Y |
POINT |
적립 | Y |
버튼·이미지 규격
버튼 타입
모든 버튼은 type·buttonName(기본형 20자/커머스형 8자)을 가지며, searchResultExposure: false일 때 buttonCode로 URL 개인화가 가능합니다.
| type | 설명 | 필수 파라미터 |
|---|---|---|
WEB_LINK |
웹페이지로 이동 | mobileUrl (또는 pcUrl 중 1개 이상) |
APP_LINK |
앱 스킴/웹링크로 이동 | iOsAppScheme·aOsAppScheme (발송 시 모두) |
- 한 버튼에서
WEB_LINK와APP_LINK를 중복 사용할 수 없습니다. - 발송(보내기) API로 발송 시
WEB_LINK는mobileUrl·pcUrl모두,APP_LINK는iOsAppScheme·aOsAppScheme모두 필수입니다.
템플릿 타입별 버튼 규칙
혜택 템플릿은 타입별로 버튼 사용 규칙이 다릅니다.
| 항목 | 기본형 | LMS형 | 캐러셀 커머스 | 캐러셀 피드 | 리스트 커머스 | 리스트 피드 |
|---|---|---|---|---|---|---|
| 버튼 사용 | 선택 | 없음 | 필수 | 필수 | 필수 | 필수 |
| 버튼명 수정 | 가능 | — | 구매하기 고정 |
가능 | 구매하기 고정 |
가능 |
| 버튼 개수 | 최대 2 | — | 카드당 최대 1 | 카드당 최대 2 | 3~6 | 2~3 |
앱 링크(APP_LINK) |
가능 | — | 가능 | 가능 | 가능 | 가능 |
리스트형의 버튼 개수는 상품(
products) 항목 수와 같습니다(각 상품이 링크 1개). 정보성 템플릿의 버튼은 최대 5개입니다.
이미지 규격
이미지 업로드 API(URL / 파일)로 imageHashId를 발급받아 템플릿에 첨부합니다.
| imageType | 용도 | 해상도 | 최대 크기 | 포맷 |
|---|---|---|---|---|
content(기본) |
일반 이미지 (말풍선·썸네일) | 552×552 권장(제한 없음, 미달 시 크롭) | 300 KB | JPG·JPEG·PNG·GIF |
feed |
혜택 피드 노출 이미지 | 598×300 고정 (그 외 업로드 에러) | 300 KB | JPG·JPEG·PNG·GIF |
- 혜택 템플릿의
benefit.feedDisplayImageHashId는 반드시feed(598×300)로 업로드한 해시를 사용합니다. - 쿠폰(
GIFT)이 첨부된 경우 이미지 첨부는 불가합니다.