이 문서는 소재 API 사용 방법을 안내합니다.
GET /openapi/v4/creatives HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
소재 목록을 조회합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 GET
으로 요청하며, 성공 시 응답 본문에 JSON
객체로 소재 상세 정보 목록을 받습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long |
광고그룹 번호 | O |
config | Array |
소재 상태, 복수선택 (default : [ON, OFF]) enum{ON, OFF, DEL} |
X |
이름 | 타입 | 설명 |
---|---|---|
content | Creative[] |
소재 정보 목록 |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
config | String |
소재 상태 ON , OFF , DEL (삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태ON , VOID , ADMIN_STOP 중 하나 |
curl -X GET "https://apis.moment.kakao.com/openapi/v4/creatives?adGroupId=1234&config=ON" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
HTTP/1.1 200 OK
Content-type: application/json;charset=UTF-8
{
"content": [
{
"id": 1111,
"name": "소재 1",
"config": "ON"
},
{
"id": 1112,
"name": "소재 2",
"config": "OFF"
}
]
}
GET /openapi/v4/creatives/${id} HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
각 소재의 상세 정보를 조회합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 GET
으로 요청합니다.
요청 성공 시 응답 본문에 JSON
객체로 종류별 광고 소재 상세 정보를 받습니다. 의견 및 증빙 파일의 경우 심사 처리 연동으로 인해 응답 값을 조회하는 데에 시간이 소요될 수 있으며, 연동이 완료되지 않은 경우 null
값으로 조회됩니다.
실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
2021년 8월 3일 업데이트로 소재 정보에 익스팬더블 여부를 확인하는 필드가 추가되었습니다. 익스팬더블 요소는 권한이 있는 광고계정에서 생성할 수 있으며 API로의 응답은 소재 조회와 보고서 조회만 지원합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long | 소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
O |
키 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
format | String |
소재 유형 IMAGE_BANNER(이미지 배너), IMAGE_NATIVE(이미지 네이티브), VIDEO_NATIVE(비디오 네이티브), SERVICE_CONTENT(콘텐츠) 중 하나 |
pcLandingUrl | String |
랜딩 URL (PC용 랜딩 URL) |
mobileLandingUrl | String |
랜딩 URL (모바일용 랜딩 URL) |
rspvLandingUrl | String |
랜딩 URL (반응형 랜딩 URL) |
frequencyCap | Integer |
게재빈도 |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID, ADMIN_STOP 중 하나 |
reviewStatus | String |
심사 상태 APPROVED(승인), WAITING(심사중), REJECTED(심사보류), MODIFICATION_WAITING(수정사항심사중), MODIFICATION_REJECTED(수정사항심사보류) 중 하나 |
creativeStatus | String |
소재의 운영 상태OPERATING (운영가능), UNAPPROVED (심사미승인), INVALID_DATE (기간오류), MONITORING_REJECTED (모니터링 보류), OFF (사용자OFF), DELETED (삭제), ADGROUP_UNAVAILABLE (광고그룹 운영불가), SYSTEM_CONFIG_VOID (운영불가 콘텐츠오류), SYSTEM_CONFIG_ADMIN_STOP (관리자 정지) 중 하나 |
statusDescription | String |
소재의 게재와 관련된 현재 상태 |
image | Image |
IMAGE_BANNER, IMAGE_NATIVE, VIDEO_NATIVE 소재의 메인 이미지 |
landingInfo | LandingInfo |
랜딩 정보 |
serviceContent | ServiceContent |
SERVICE_CONTENT 소재의 콘텐츠 정보 |
altText | String |
IMAGE_BANNER 소재의 이미지 대체 설명문구 |
title | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 타이틀 |
description | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 홍보문구 |
actionButton | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 행동유도버튼 |
profileName | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 프로필 이름 |
profileImage | Image |
업로드 된 프로필 이미지 |
video | Video |
VIDEO_NATIVE 소재의 비디오 |
videoSkippableType | String |
VIDEO_INSTREAM 소재의 비디오 노출 유형 SECONDS_5(최대 5초까지 노출), SECONDS_15(최대 15초까지 노출) |
rejectedReason | RejectedReason[] |
소재 보류 사유 |
assetGroups | AssetGroup[] |
슬라이드 아이템 |
hasExpandable | Boolean |
익스팬더블 요소 포함 여부 |
opinion | String |
심사 처리를 위한 참조 의견 |
opinionProof | OpinionFile[] |
심사 처리를 위한 의견, 증빙자료 파일 목록 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
ageVerification | Boolean |
연령인증 메시지 여부 true: 연령인증 메시지 false: 일반 메시지 |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 BASIC_TEXT_MESSAGE (기본텍스트), WIDE_MESSAGE (와이드이미지), WIDE_LIST_MESSAGE (와이드리스트), CAROUSEL_COMMERCE_MESSAGE (캐러셀커머스), CAROUSEL_FEED_MESSAGE (캐러셀피드), PREMIUM_VIDEO_MESSAGE (프리미엄동영상) |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID, ADMIN_STOP 중 하나 |
statusDescription | String |
메시지 광고그룹의 현재 상태 발송 대기, 발송중, 발송중지, 발송종료 중 하나 |
creativeStatus | String |
소재의 운영 상태 OPERATING(운영가능), UNAPPROVED(심사미승인), INVALID_DATE(기간오류), MONITORING_REJECTED(관리자정지), OFF(사용자OFF), DELETED(삭제), ADGROUP_UNAVAILABLE(광고그룹 운영불가) 중 하나 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
messageElement | MessageElement |
메시지 상세 설명 |
ageVerification | Boolean |
연령인증 메시지 여부 true: 연령인증 메시지 false: 일반 메시지 |
curl -X GET "https://apis.moment.kakao.com/openapi/v4/creatives/${id}" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 1111,
"name": "디스플레이 광고 소재",
"landingInfo": {
"landingType": "AD_VIEW",
"communicatorAdViewId": 1
},
"format": "IMAGE_BANNER",
"landingUrl": "http://www.daum.net",
"frequencyCapType": "DAY_IMP",
"frequencyCap": 3,
"config": "ON",
"image": {
"url": "http://xxx.kakao.co.kr/sample.jpg",
"fileName": "sample.jpeg",
"width": 640,
"height": 100,
"size": 50000
},
"reviewStatus": "REJECTED",
"creativeStatus": "UNAPPROVED",
"statusDescription": "심사보류",
"rejectedReason": [
{
"rejectedTitle": "공통1>가격 불일치",
"rejectedContent": "등록하신 광고 소재 내 가격 정보가 랜딩페이지 내 실제 판매금액과 일치하지 않아 광고 등록이 보류되었습니다.\n* 광고 소재 내 가격 정보 : 39,800\n* 랜딩 페이지 내 가격 정보 : 49,800\n - 수정방법 : 모든 이용자가 구매 가능한 정확한 가격을 기재해 주시기 바랍니다."
}
],
"createdDate": "2020-01-01T00:00:00",
"lastModifiedDate": "2020-01-01T01:00:00",
"hasExpandable" : false
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 12345,
"creativeId": 12345,
"name": "카카오톡 채널_도달_20210623",
"adGroupId": 39656,
"format": "WIDE_LIST_MESSAGE",
"config": "ON",
"statusDescription": "발송 종료",
"creativeStatus": "OPERATING",
"createdDate": "2021-06-23T13:26:53",
"lastModifiedDate": "2021-06-23T13:26:54",
"messageElement": {
"id": 12345,
"adAccountId": 123,
"profileId": "_xbHxd",
"name": "카카오톡 채널_도달_20210623",
"creativeFormat": "WIDE_LIST_MESSAGE",
"title": "와이드리스트홍보문구",
"shareFlag": true,
"adFlag": true,
"buttonAssetGroups": [
{
"ordering": 0,
"title": "버튼1",
"pcLandingUrl": "http://www.daum.net",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
}
],
"itemAssetGroups": [
{
"ordering": 0,
"image": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/dca51ee4c3fc2248999e7a770563b98d.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"title": "타이틀1",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
},
{
"ordering": 1,
"image": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/03b324a5e0a5fc29a8df001af6737279.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"title": "타이틀2",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
},
{
"ordering": 2,
"image": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/9248be0ea852f655b03294ea7435d09d.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"title": "타이틀3",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
}
],
"thumbnailUrl": "//beta.daumcdn.net/b2/creative/759/dca51ee4c3fc2248999e7a770563b98d.jpg",
"messageThumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/dca51ee4c3fc2248999e7a770563b98d.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"createdDate": "2021-06-23T13:26:53",
"lastModifiedDate": "2021-06-23T13:26:54"
}
}
{
"code": -813,
"msg": "KakaoMomentException",
"extras": {
"detailCode": 33003,
"detailMsg": "소재가 존재하지 않습니다."
}
}
POST /openapi/v4/creatives HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
디스플레이 소재를 생성합니다. 소재 생성 요청은 소재 유형(format)을 반드시 이미지 배너(IMAGE_BANNER), 이미지 네이티브(IMAGE_NATIVE) 중 하나로 명시해야 합니다. 소재 유형에 따라 전달해야 하는 파라미터 종류가 다릅니다. 예를 들어 이미지 배너는 imageFileUrl
을, 이미지 네이티브는 imageFileUrl
과 profileImageFileUrl
을 각각 전달합니다.
소재 생성하기 API는 이미지 등록을 위해 application/json
과 multipart/form-data
두 가지 Content-Type
을 지원합니다. 어느 방식으로 요청하더라도 소재 생성 결과는 같습니다.
imageFileUrl
파라미터로 http://
또는 https://
URL 형식의 소재 이미지 경로 전달imageFile
파라미터로 로컬 파일 경로 전달액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 POST
로 요청하며, 요청이 성공하면 응답 본문에 JSON
객체로 생성된 소재의 상세 정보를 목록으로 포함합니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
비즈보드 X 도달, 다음쇼핑 유형의 캠페인 하위에는 소재 생성이 불가능합니다.
이 API는 사용자 계정, 광고계정마다 1초에 한 번씩 요청 가능하도록 제한되어 있습니다.
2023년 2월 21일 업데이트로 캠페인 유형별 생성 가능한 소재 유형이 아래와 같이 변경되었습니다.
캠페인 유형 | 소재 유형 | 홍보 이미지 | 프로필 이미지 |
---|---|---|---|
카카오 비즈보드 | 이미지 배너(IMAGE_BANNER) | 1029x258, 300KB, PNG-24 | |
디스플레이 | 이미지 네이티브(IMAGE_NATIVE) | 500x500 이상 (1:1), 500KB, JPG/JPEG/PNG 1200x600 이상 (2:1), 500KB, JPG/JPEG/PNG |
300x300 이상 (1:1), 500KB, JPG/JPEG/PNG |
기존에 제공되던 URL과 더불어 다양한 유형의 소재 랜딩 유형 및 랜딩 설정이 가능합니다. 카카오 비즈보드 유형의 캠페인 하위에만 설정 가능하며, 랜딩 설정을 위한 목록 조회 API는 신규로 제공하지만 애드뷰 생성, 비즈니스폼등의 생성 API는 제공하지 않습니다. 카카오페이 구매의 경우 생성 및 수정은 불가능하며 조회만 가능합니다.
자세한 사용 방법은 아래 표를 참고합니다.
유형 | 파라미터 |
---|---|
URL | mobileLandingUrl에 설정 |
챗봇, 채널웹뷰 | 카카오톡 채널 프로필 목록 보기 API 사용 |
애드뷰 | 애드뷰 목록 보기 API 사용 |
비즈니스폼 | 비즈니스폼 목록 보기 API 사용 |
톡캘린더 | 이벤트 ID 사용 |
채널포스트 | 채널포스트 ID 사용 |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long |
광고그룹 번호 | O |
format | String |
소재 유형 IMAGE_BANNER (고정값) |
O |
imageFileUrl | String |
홍보이미지 사이즈, 용량, 파일형식 1029x258, 300KB, PNG-24 http:// 또는 https:// 형식의 URL형태로 요청 |
application/json 방식일 경우 필수 |
imageFile | Multipart File |
홍보이미지 사이즈, 용량, 파일형식 1029x258, 300KB, PNG-24 로컬 파일 경로 입력 |
multipart/form-data 방식일 경우 필수 |
landingInfo | LandingInfo |
랜딩 유형 카카오 비즈보드 유형의 캠페인 하위 소재만 설정 가능 |
X |
pcLandingUrl | String |
랜딩 URL PC용 URL로 http:// 또는 https:// 유효한 형식 입력 카카오 비즈보드 유형의 캠페인에는 설정할 수 없습니다. |
X |
mobileLandingUrl | String |
랜딩 URL 모바일용 URL로 http:// 또는 https:// 형식의 유효한 형식 입력 |
X |
rspvLandingUrl | String |
랜딩 URL 반응형 URL로 http:// 또는 https:// 형식의 유효한 형식 입력 카카오 비즈보드 유형의 캠페인에는 설정할 수 없습니다. |
X |
altText | String |
소재 설명 최대 30자 장애인에게 음성 안내되는 내용으로 특수문자는 사용 불가능 |
O |
name | String |
소재 이름 최대 40자 설정하지 않은 경우 {캠페인 유형}_{캠페인 목표}_{현재시간}_{소재 사이즈} 로 생성 |
X |
opinion | String |
의견(최대: 1,000자) | X |
opinionProofFileUrlList | String[] |
증빙application/json 방식 요청 시 사용 가능http:// 또는 https:// 형식의 증빙 파일 정보JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
opinionProofFileList | Multipart File[] |
증빙multipart/form-data 방식 요청 시 사용 가능JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long |
광고그룹 번호 | O |
format | String |
소재 유형 IMAGE_NATIVE (고정값) |
O |
profileImageFileUrl | String |
프로필이미지 사이즈, 용량, 파일형식 300x300 이상 (1:1), 500KB, JPG/JPEG/PNG http:// 또는 https:// 형식의 유효한 형식 입력 |
application/json 방식일 경우 필수 |
profileImageFile | Multipart File |
프로필이미지 사이즈, 용량, 파일형식 300x300 이상 (1:1), 500KB, JPG/JPEG/PNG 로컬 파일 경로 입력 |
multipart/form-data 방식일 경우 필수 |
imageFileUrl | String |
홍보이미지 사이즈, 용량, 파일형식 500x500 이상 (1:1), 500KB, JPG/JPEG/PNG 1200x600 이상 (2:1), 500KB, JPG/JPEG/PNG http:// 또는 https:// 형식의 유효한 형식 입력 |
application/json 방식일 경우 필수 |
imageFile | Multipart File |
홍보이미지 사이즈, 용량, 파일형식 500x500 이상 (1:1), 500KB, JPG/JPEG/PNG 1200x600 이상 (2:1), 500KB, JPG/JPEG/PNG 로컬 파일 경로 입력 |
multipart/form-data 방식일 경우 필수 |
title | String |
타이틀 최대 25자 |
O |
profileName | String |
프로필 이름 최대 20자 |
O |
description | String |
홍보문구 최대 45자 |
O |
actionButton | ActionButton | 행동유도버튼 | O |
pcLandingUrl | String |
PC 랜딩 URL PC용 URL로 http:// 또는 https:// 유효한 형식 입력 카카오 비즈보드 유형의 캠페인에는 설정할 수 없습니다. |
X |
mobileLandingUrl | String |
모바일 랜딩 URL 모바일용 URL로 http:// 또는 https:// 유효한 형식 입력 |
X |
rspvLandingUrl | String |
반응형 랜딩 URL 반응형 URL로 http:// 또는 https:// 유효한 형식 입력 카카오 비즈보드 유형의 캠페인에는 설정할 수 없습니다. |
X |
altText | String |
소재 설명 최대 30자 장애인에게 음성 안내되는 내용으로 특수문자는 사용 불가능 |
O |
name | String |
소재 이름 최대 40자 설정하지 않은 경우 {캠페인 유형}_{캠페인 목표}_{현재시간}_{소재 사이즈} 로 생성 |
X |
opinion | String |
의견(최대: 1,000자) | X |
opinionProofFileUrlList | String[] |
증빙application/json 방식 요청 시 사용 가능http:// 또는 https:// 형식의 증빙 파일 정보JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
opinionProofFileList | Multipart File[] |
증빙multipart/form-data 방식 요청 시 사용 가능JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
이름 | 타입 | 설명 |
---|---|---|
landingType | LandingType |
랜딩 유형 |
profileId | String |
PF_BOT (챗봇), CHANNEL_WEBVIEW (채널웹뷰) 랜딩 사용시 카카오톡 채널 프로필 ID 카카오톡 채널 프로필 보기 API를 통해 조회되는 응답 중 카카오톡 채널 프로필 ID를 요청 |
action | String |
PF_BOT (챗봇) 랜딩 사용시 키워드 |
adViewItem | AdViewItem |
AD_VIEW (애드뷰) 랜딩 사용시 애드뷰 객체 연동 가능한 애드뷰 랜딩 유형 목록 보기 API를 통해 조회되는 id를 사용 |
url | String |
CHANNEL_WEBVIEW (채널웹뷰) 랜딩 사용시 URL |
bizFormId | Long |
BIZ_FORM (비즈니스폼) 랜딩 사용시 비즈니스폼 번호 연동 가능한 비즈니스폼 랜딩 유형 목록 보기 API를 통해 조회되는 bizFormId를 사용 |
talkCalendarEventId | String |
TALK_CALENDAR (톡캘린더) 랜딩 사용시 톡캘린더 아이디 영문과 숫자만 허용되며, 한글, 공백, 특수문자는 사용불가능 |
channelPostId | Long |
CHANNEL_POST (채널포스트) 랜딩 사용시 채널 포스트 아이디 연동 가능한 채널포스트 랜딩 유형 목록 보기 API를 통해 조회되는 포스트번호를 사용 |
이름 | 설명 |
---|---|
PF_BOT | 챗봇 |
AD_VIEW | 애드뷰 |
CHANNEL_WEBVIEW | 채널웹뷰 |
BIZ_FORM | 비즈니스폼 |
TALK_CALENDAR | 톡캘린더 |
CHANNEL_POST | 채널포스트 |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
애드뷰 번호 |
랜딩 URL은 세 종류입니다.
PC용 URL(pcLandingUrl), 모바일용 URL(mobileLandingUrl), 반응형 URL(rspvLandingUrl) 으로 이루어진 랜딩 URL은 개별적으로는 필수(Required)가 아니지만 최소 1개 이상의 랜딩 URL을 필수로 설정해야 합니다.
디스플레이 광고 소재 중 비디오 네이티브와 이미지 박스는 종류별 랜딩 URL을 제공하지 않습니다.
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 IMAGE_BANNER |
image | Image |
업로드 된 홍보 이미지 |
landingInfo | LandingInfo |
랜딩 정보 |
pcLandingUrl | String |
랜딩 URL (PC용 URL) |
mobileLandingUrl | String |
랜딩 URL (모바일용 URL) |
rspvLandingUrl | String |
랜딩 URL (반응형 URL) |
altText | String |
소재 설명 |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID 중 하나 |
name | String |
소재 이름 |
reviewStatus | String |
심사 상태 APPROVED(승인), WAITING(심사중), REJECTED(심사보류), MONITORING_REJECTED(관리자정지) 중 하나 |
statusDescription | String |
소재의 게재와 관련된 현재 상태 |
opinionProof | OpinionFile[] |
심사 처리를 위한 의견, 증빙자료 파일 목록 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
rejectedReason | Array |
소재 심사 사유 (비어있는 배열) |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 IMAGE_NATIVE |
profileImage | Image |
업로드 된 프로필 이미지 |
image | Image |
업로드 된 홍보 이미지 |
title | String |
타이틀 |
profileName | String |
프로필 이름 |
description | String |
홍보문구 |
actionButton | String |
행동유도버튼 |
pcLandingUrl | String |
랜딩 URL (PC용 URL) |
mobileLandingUrl | String |
랜딩 URL (모바일용 URL) |
rspvLandingUrl | String |
랜딩 URL (반응형 URL) |
altText | String |
소재 설명 |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID 중 하나 |
name | String |
소재 이름 |
reviewStatus | String |
심사 상태 APPROVED(승인), WAITING(심사중), REJECTED(심사보류), MONITORING_REJECTED(관리자정지) 중 하나 |
statusDescription | String |
소재의 게재와 관련된 현재 상태 |
opinionProof | OpinionFile[] |
심사 처리를 위한 의견, 증빙자료 파일 목록 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
rejectedReason | Array |
소재 심사 사유 (비어있는 배열) |
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
-H "Content-Type: application/json" \
-d '{
"adGroupId":1234,
"format":"IMAGE_BANNER",
"imageFileUrl":"https://www.image.com/sample.png",
"altText":"소재설명",
"landingInfo": {
"landingType":"AD_VIEW",
"adViewItem":{"id":1}
},
"name": "첫번째_이미지배너"
}'
curl -X POST "http://api.moment.kakao.com/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "Content-Type: application/json" \
-d '{
\"adGroupId\":5678,
\"format\":\"IMAGE_NATIVE\",
\"profileImageFileUrl\":\"http://www.company.com/images/sample_image_native.jpg\",
\"imageFileUrl\":\"http://www.company.com/images/sample_image_banner.jpg\",
\"altText\":\"소재설명\",
\"title\":\"타이틀\",
\"profileName\":\"프로필이름\",
\"description\":\"홍보문구\",
\"actionButton\":\"JOIN\",
\"mobileLandingUrl\":\"http://www.daum.net\",
\"name\":\"네이티브_소재_등록\"
}'
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: multipart/form-data" \
-F "adGroupId=1234" \
-F "format=IMAGE_BANNER" \
-F "imageFile=@로컬_640X200_이미지_경로" \
-F "altText=소재설명" \
-F "name=첫번째_이미지배너" \
-F "mobileLandingUrl=http://www.daum.net" \
-F "landingInfo.landingType=AD_VIEW" \
-F "landingInfo.adViewItem.id=쿼리검색어"
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: multipart/form-data" \
-F "adGroupId=17181" \
-F "format=IMAGE_NATIVE" \
-F "profileImageFile=@로컬_300X300_이미지_경로" \
-F "imageFile=@로컬_640X480_이미지_경로" \
-F "altText=소재설명" \
-F "title=타이틀" \
-F "profileName=프로필이름" \
-F "description=홍보문구" \
-F "actionButton=JOIN" \
-F "mobileLandingUrl=http://www.daum.net"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 1,
"creativeId": 2,
"adGroupId": 1234,
"format": "IMAGE_BANNER",
"name": "첫번째_이미지배너",
"landingInfo": {
"landingType": "AD_VIEW",
"adViewItem": {"id":1}
},
"pcLandingUrl": null,
"mobileLandingUrl": "http://www.daum.net",
"rspvLandingUrl": null,
"frequencyCap": null,
"frequencyCapType": "AUTO",
"config": "ON",
"systemConfig": "ON",
"reviewStatus": "WAITING",
"image": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_xxx.jpeg",
"fileName": "sample.jpeg",
"width": 640,
"height": 100,
"size": 50000
},
"altText": "소재설명",
"statusDescription": "심사중",
"createdDate": "2020-01-01T00:00:00.00000",
"lastModifiedDate": "2020-01-01T00:00:00.000000",
"rejectedReason": []
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 1234,
"creativeId": 1235
"adGroupId": 5678,
"format": "IMAGE_NATIVE",
"name": "모먼트_소재_등록",
"pcLandingUrl": null,
"mobileLandingUrl": "http://www.daum.net",
"rspvLandingUrl": null,
"frequencyCap": null,
"frequencyCapType": "AUTO",
"config": "ON",
"systemConfig": "ON",
"reviewStatus": "WAITING",
"image": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_xxx.jpg",
"fileName": "sample_image_banner.jpg",
"width": 640,
"height": 480,
"size": 100000
},
"title": "타이틀",
"actionButton": "JOIN",
"profileName": "프로필이름",
"profileImage": {
"url": "http://xxx.kakao.co.kr/sample_image_native_xxx.jpg",
"fileName": "sample_image_native.jpeg",
"width": 300,
"height": 300,
"size": 50000
},
"altText": "소재설명",
"description": "홍보문구",
"statusDescription": "심사중",
"createdDate": "2020-01-01T00:00:00.000000",
"lastModifiedDate": "2020-01-01T00:00:00.000000",
"rejectedReason": []
}
POST /openapi/v4/creatives/copy HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
디스플레이 소재를 복사합니다. 최대 20개의 소재 복사를 요청할 수 있으나 그룹, 캠페인, 계정의 최대 생성 가능 소재 개수를 초과할 경우 복사 실패할 수 있습니다.
캠페인 유형X목표가 카카오 비즈보드X방문, 카카오 비즈보드X전환, 디스플레이X방문, 디스플레이X전환인 캠페인 하위의 이미지 배너, 이미지 네이티브 소재만 복사가 가능합니다. 모든 소재의 입찰 금액은 상위 광고그룹에 설정된 최대 입찰 금액으로 적용됩니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 POST
로 광고계정 번호와 복사할 소재가 있는 캠페인 번호, 복사할 소재 번호 목록을 지정하여 요청합니다. 성공 시 복사된 소재 정보의 배열을 받습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이 API는 사용자 계정, 광고계정마다 5초에 한 번씩 요청이 가능하도록 제한되어 있습니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long |
소재들이 복사될 광고그룹 번호(100개 제한) | O |
creativeIds | Long[] |
복사할 소재 번호 목록 | O |
이름 | 타입 | 설명 |
---|---|---|
- | DisplayCreative[] |
소재 정보 목록 |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
format | String |
소재 유형 IMAGE_BANNER(이미지 배너), IMAGE_NATIVE(이미지 네이티브), SERVICE_CONTENT(콘텐츠) 중 하나 |
landingUrl | String |
랜딩 URL |
frequencyCap | Integer |
게재빈도 |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID 중 하나 |
reviewStatus | String |
심사 상태 APPROVED(승인), WAITING(심사중), REJECTED(심사보류), MODIFICATION_WAITING(수정사항심사중), MODIFICATION_REJECTED(수정사항심사보류) 중 하나 |
creativeStatus | String |
소재의 운영 상태 OPERATING(운영가능), UNAPPROVED(심사미승인), INVALID_DATE(기간오류), MONITORING_REJECTED(관리자정지), OFF(사용자OFF), DELETED(삭제), ADGROUP_UNAVAILABLE(광고그룹 운영불가) 중 하나 |
statusDescription | String |
소재의 게재와 관련된 현재 상태 |
image | Image |
IMAGE_BANNER, IMAGE_NATIVE, VIDEO_NATIVE 소재의 메인 이미지 |
landingInfo | LandingInfo |
랜딩 정보 |
altText | String |
IMAGE_BANNER 소재의 이미지 대체 설명문구 |
title | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 타이틀 |
description | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 홍보문구 |
actionButton | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 행동유도버튼 |
profileName | String |
IMAGE_NATIVE, VIDEO_NATIVE 소재의 프로필 이름 |
profileImage | Image |
업로드 된 프로필 이미지 |
video | Video |
VIDEO_NATIVE 소재의 비디오 |
rejectedReason | RejectedReason |
소재 보류 사유 |
opinion | String |
심사 처리를 위한 참조 의견 |
opinionProof | OpinionFile[] |
심사 처리를 위한 의견, 증빙자료 파일 목록 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives/copy" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-d '{
"adGroupId" : 23456,
"creativeIds" : [34567,34568]
}'
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
[
{
"id": 35678,
"creativeId": 35678,
"adGroupId": 23456,
"format": "IMAGE_BANNER",
"name": "이미지 소재 1",
"landingInfo": {
"landingType": "URL",
"url": "http://m.daum.net"
},
"pcLandingUrl": null,
"mobileLandingUrl": "http://m.daum.net",
"rspvLandingUrl": null,
"frequencyCap": null,
"frequencyCapType": "AUTO",
"config": "ON",
"systemConfig": "ON",
"reviewStatus": "APPROVED",
"creativeStatus": "OPERATING",
"image": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_111.jpg",
"fileName": "sample_image_banner_111.jpg",
"width": 640,
"height": 480,
"size": 100000
},
"altText": "이미지설명문구 1",
"statusDescription": "운영중",
"rejectedReason": [],
"createdDate": "2020-01-01T00:00:00.000000",
"lastModifiedDate": "2020-01-01T00:00:00.000000"
},
{
"id": 35679,
"creativeId": 35678,
"adGroupId": 23456,
"format": "IMAGE_BANNER",
"name": "이미지 소재 2",
"landingInfo": {
"landingType": "URL",
"url": "http://m.daum.net"
},
"pcLandingUrl": null,
"mobileLandingUrl": "http://m.daum.net",
"rspvLandingUrl": null,
"frequencyCap": null,
"frequencyCapType": "AUTO",
"config": "ON",
"systemConfig": "ON",
"reviewStatus": "APPROVED",
"creativeStatus": "OPERATING",
"image": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_222.jpg",
"fileName": "sample_image_banner_222.jpg",
"width": 640,
"height": 480,
"size": 100000
},
"altText": "이미지설명문구 2",
"statusDescription": "운영중",
"rejectedReason": [],
"createdDate": "2020-01-01T00:00:00.000000",
"lastModifiedDate": "2020-01-01T00:00:00.000000"
}
]
PUT /openapi/v4/creatives HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
디스플레이 소재를 수정합니다. 소재 유형에 따라 전달해야 하는 파라미터 종류가 다릅니다. 예를 들어 이미지 배너(IMAGE_BANNER)는 imageFileUrl
을, 이미지 네이티브(IMAGE_NATIVE)는 imageFileUrl
과 profileImageFileUrl
을 각각 전달합니다.
소재 수정 API는 이미지 등록을 위해 application/json
과 multipart/form-data
두 가지 Content-Type
을 지원합니다. application/json
방식으로 호출할 때는 imageFileUrl
파라미터로 http://
또는 https://
URL 형식으로 소재 이미지를 전달해야 합니다. multipart/form-data
방식으로 호출할 때는 imageFile
파라미터에 경로를 지정해 로컬에 저장된 파일을 전달할 수 있습니다. 어느 방식으로 요청하더라도 소재 수정 결과는 같습니다.
imageFileUrl
또는 profileImageFileUrl
이 요청 Body
에 없으면 기존에 등록된 이미지를 활용합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 PUT
으로 요청하며, 성공 시 응답 본문에 JSON
객체로 소재 상세 정보를 목록으로 받습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
비즈보드 X 도달, 다음쇼핑 유형의 캠페인 하위에는 소재 수정이 불가능합니다.
이 API는 사용자 계정, 광고계정마다 1초에 한 번씩 요청 가능하도록 제한되어 있습니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
O |
adGroupId | Long |
광고그룹 번호 | O |
format | String |
소재 유형 IMAGE_BANNER (고정값) |
O |
imageFileUrl | String |
홍보이미지 사이즈, 용량, 파일형식 1029x258, 300KB, PNG-24 http:// 또는 https:// 형식의 URL형태로 요청 |
X application/json 방식일 경우 사용 가능 |
imageFile | Multipart File |
홍보이미지 사이즈, 용량, 파일형식 1029x258, 300KB, PNG-24 로컬 파일 경로 입력 |
X multipart/form-data 방식일 경우 사용 가능 |
landingInfo | LandingInfo |
랜딩 정보 랜딩 URL 3가지 유형과 동시에 요청 불가능 |
X |
pcLandingUrl | String |
PC 랜딩 URL PC용 URL로 http:// 또는 https:// 유효한 형식 입력 카카오 비즈보드 유형의 캠페인에는 설정할 수 없으며 landingInfo와 동시에 요청 불가 |
X |
mobileLandingUrl | String |
모바일 랜딩 URL 모바일용 URL로 http:// 또는 https:// 유효한 형식 입력 landingInfo와 동시에 요청 불가 |
X |
rspvLandingUrl | String |
반응형 랜딩 URL 반응형 URL로 http:// 또는 https:// 유효한 형식 입력 카카오 비즈보드 유형의 캠페인에는 설정할 수 없으며 landingInfo와 동시에 요청 불가 |
X |
altText | String |
소재 설명 최대 30자 장애인에게 음성 안내되는 내용으로 특수문자는 사용 불가능 |
O |
name | String |
소재 이름 최대 40자 요청 시 포함되지 않으면 생성 시의 이름으로 대체 |
X |
opinion | String |
의견(최대: 1,000자) | X |
opinionProofFileUrlList | String[] |
증빙application/json 방식 요청 시 사용 가능http:// 또는 https:// 형식의 증빙 파일 정보JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
opinionProofFileList | Multipart File[] |
증빙multipart/form-data 방식 요청 시 사용 가능JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
O |
adGroupId | Long |
광고그룹 번호 | O |
format | String |
소재 유형 IMAGE_NATIVE (고정값) |
O |
profileImageFileUrl | String |
프로필이미지 사이즈, 용량, 파일형식 300x300 이상 (1:1), 500KB, JPG/JPEG/PNG http:// 또는 https:// 형식의 URL형태로 요청 |
X application/json 방식일 경우 사용 가능 |
profileImageFile | Multipart File |
프로필이미지 사이즈, 용량, 파일형식 300x300 이상 (1:1), 500KB, JPG/JPEG/PNG 로컬 파일 경로 입력 |
X multipart/form-data 방식일 경우 사용 가능 |
imageFileUrl | String |
홍보이미지 사이즈, 용량, 파일형식 500x500 이상 (1:1), 500KB, JPG/JPEG/PNG 1200x600 이상 (2:1), 500KB, JPG/JPEG/PNG http:// 또는 https:// 형식의 URL형태로 요청 |
X application/json 방식일 경우 사용 가능 |
imageFile | Multipart File |
홍보이미지 사이즈, 용량, 파일형식 500x500 이상 (1:1), 500KB, JPG/JPEG/PNG 1200x600 이상 (2:1), 500KB, JPG/JPEG/PNG 로컬 파일 경로 입력 |
X multipart/form-data 방식일 경우 사용 가능 |
title | String |
타이틀 최대 25자 |
O |
profileName | String |
프로필 이름 최대 20자 |
O |
description | String |
홍보문구 최대 45자 |
O |
actionButton | ActionButton |
행동유도버튼 | O |
pcLandingUrl | String |
PC 랜딩 URL PC용 URL로 http:// 또는 https:// 유효한 형식 입력 |
X |
mobileLandingUrl | String |
모바일 랜딩 URL 모바일용 URL로 http:// 또는 https:// 유효한 형식 입력 |
X |
rspvLandingUrl | String |
반응형 랜딩 URL 반응형 URL로 http:// 또는 https:// 유효한 형식 입력 |
X |
altText | String |
소재 설명 최대 30자 장애인에게 음성 안내되는 내용으로 특수문자는 사용 불가능 |
O |
name | String |
소재 이름 최대 40자 요청 시 포함되지 않으면 생성 시의 이름으로 대체 |
X |
opinion | String |
의견(최대: 1,000자) | X |
opinionProofFileUrlList | String[] |
증빙application/json 방식 요청 시 사용 가능http:// 또는 https:// 형식의 증빙 파일 정보JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
opinionProofFileList | Multipart File[] |
증빙multipart/form-data 방식 요청 시 사용 가능JPG/JPEG/PNG/PDF 형식 지원 최대 10개, 전체 파일 합계 용량 10MB 이하 |
X |
랜딩 URL은 총 3종류가 있습니다. PC용 URL(pcLandingUrl), 모바일용 URL(mobileLandingUrl), 반응형 URL(rspvLandingUrl)입니다. 랜딩 URL은 개별적으로는 필수(Required)가 아니지만 최소 1개 이상의 랜딩 URL을 필수로 설정해야 합니다. 디스플레이 광고 소재 중 비디오 네이티브와 이미지 박스는 종류별 랜딩 URL을 제공하지 않습니다.
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 IMAGE_BANNER |
image | Image |
업로드 된 홍보 이미지 |
landingInfo | LandingInfo |
랜딩 정보 |
pcLandingUrl | String |
랜딩 URL (PC용 URL) |
mobileLandingUrl | String |
랜딩 URL (모바일용 URL) |
rspvLandingUrl | String |
랜딩 URL (반응형 URL) |
altText | String |
소재 설명 |
frequencyCapType | String |
게재빈도 자동 설정 종류 |
frequencyCap | Integer |
게재빈도 |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
name | String |
소재 이름 |
reviewStatus | String |
심사 상태 APPROVED(승인), WAITING(심사중), REJECTED(심사보류), MONITORING_REJECTED(관리자정지) 중 하나 |
statusDescription | String |
소재의 게재와 관련된 현재 상태 |
opinionProof | OpinionFile[] |
심사 처리를 위한 의견, 증빙자료 파일 목록 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
rejectedReason | Array |
소재 심사 사유 (비어있는 배열) |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 IMAGE_NATIVE |
profileImage | Image |
업로드 된 프로필 이미지 |
image | Image |
업로드 된 홍보 이미지 |
title | String |
타이틀 |
profileName | String |
프로필 이름 |
description | String |
홍보문구 |
actionButton | String |
행동유도버튼 |
pcLandingUrl | String |
랜딩 URL (PC용 URL) |
mobileLandingUrl | String |
랜딩 URL (모바일용 URL) |
rspvLandingUrl | String |
랜딩 URL (반응형 URL) |
altText | String |
소재 설명 |
frequencyCapType | String |
게재빈도 자동 설정 종류 |
frequencyCap | Integer |
게재빈도 |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
name | String |
소재 이름 |
reviewStatus | String |
심사 상태 APPROVED(승인), WAITING(심사중), REJECTED(심사보류), MONITORING_REJECTED(관리자정지) 중 하나 |
statusDescription | String |
소재의 게재와 관련된 현재 상태 |
opinionProof | OpinionFile[] |
심사 처리를 위한 의견, 증빙자료 파일 목록 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
rejectedReason | Array |
소재 심사 사유 (비어있는 배열) |
curl -X PUT "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: application/json" \
-d '{
"id":1234,
"adGroupId":5678,
"format":"IMAGE_BANNER",
"imageFileUrl":"http://www.company.com/images/sample_image_banner.jpg",
"altText":"소재설명_수정",
"mobileLandingUrl":"http://www.daum.net",
"name":"이미지_수정"
}'
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: application/json" \
-d '{
"id":1234,
"adGroupId":5678,
"format":"IMAGE_NATIVE",
"profileImageFileUrl":"http://www.company.com/images/sample_image_native.jpg",
"imageFileUrl":"http://www.company.com/images/sample_image_banner.jpg",
"altText":"소재설명_수정",
"title":"타이틀_수정",
"profileName":"프로필이름_수정",
"description":"홍보문구_수정",
"actionButton":"JOIN",
"mobileLandingUrl":"http://www.daum.net",
"name":"네이티브_소재_수정"
}'
curl -X PUT "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: multipart/form-data" \
-F "id=1234" \
-F "adGroupId=5678" \
-F "format=IMAGE_BANNER" \
-F "imageFile=@로컬_640X200_이미지_경로" \
-F "altText=소재설명_수정" \
-F "mobileLandingUrl=http://www.daum.net"
curl -X PUT "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: multipart/form-data" \
-F "id=1234" \
-F "adGroupId=5678" \
-F "format=IMAGE_NATIVE" \
-F "profileImageFile=@로컬_300X300_이미지_경로" \
-F "imageFile=@로컬_640X480_이미지_경로" \
-F "altText=소재설명_수정" \
-F "title=타이틀_수정" \
-F "profileName=프로필이름_수정" \
-F "description=홍보문구_수정" \
-F "actionButton=JOIN" \
-F "mobileLandingUrl=http://www.daum.net"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 1234,
"creativeId": 1235,
"adGroupId": 5678,
"format": "IMAGE_BANNER",
"name": "이미지_수정",
"landingInfo": {
"landingType": "AD_VIEW",
"communicatorAdViewId": 1
}
"pcLandingUrl": null,
"mobileLandingUrl": null,
"rspvLandingUrl": null,
"frequencyCap": null,
"frequencyCapType": "AUTO",
"config": "ON",
"systemConfig": "ON",
"reviewStatus": "WAITING",
"image": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_xxx.jpg",
"fileName": "sample_image_banner.jpg",
"width": 640,
"height": 100,
"size": 50000
},
"altText": "소재설명_수정",
"statusDescription": "심사중",
"createdDate": "2020-01-01T00:00:00.00000",
"lastModifiedDate": "2020-01-01T00:00:00.000000",
"rejectedReason": []
}
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 1234,
"creativeId": 1235,
"adGroupId": 5678,
"format": "IMAGE_NATIVE",
"name": "네이티브_소재_수정",
"pcLandingUrl": null,
"mobileLandingUrl": "http://www.daum.net",
"rspvLandingUrl": null,
"frequencyCap": null,
"frequencyCapType": "AUTO",
"config": "ON",
"systemConfig": "ON",
"reviewStatus": "WAITING",
"image": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_xxx.jpg",
"fileName": "sample_image_banner.jpg",
"width": 640,
"height": 480,
"size": 100000
},
"altText": "소재설명_수정",
"title": "타이틀",
"description": "홍보문구_수정",
"actionButton": "JOIN",
"profileName": "프로필이름_수정",
"profileImage": {
"url": "http://xxx.kakao.co.kr/sample_image_banner_xxx.jpg",
"fileName": "sample_image_native.jpg",
"width": 300,
"height": 300,
"size": 50000
},
"statusDescription": "심사중",
"createdDate": "2020-01-01T00:00:00.000000",
"lastModifiedDate": "2020-01-01T00:00:00.000000",
"rejectedReason": []
}
GET /openapi/v4/creatives/${id}/opinionProof HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
소재의 의견증빙 정보를 조회합니다. 헤더에 액세스 토큰(Access token)을 담아 GET
으로 요청합니다. 요청이 성공하면 응답 본문에 JSON
객체로 소재의 의견증빙 정보를 받습니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
O |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
의견증빙 번호 |
opinion | String |
의견 |
opinionProofFileList | OpinionFile[] |
파일 목록 |
curl -X GET "https://apis.moment.kakao.com/openapi/v4/creatives/${id}/opinionProof" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 1,
"opinion": "의견증빙",
"opinionProofFileList": [
{
"id": 11,
"originalFileName": "sample_1.jpg",
"downloadUrl": "https://xxx.kakao.com/sample_1.jpg"
}
]
}
{
"code": -813,
"msg": "KakaoMomentException",
"extras": {
"detailCode": 75637,
"detailMsg": "의견증빙 정보가 존재하지 않습니다."
}
}
POST /openapi/v4/creatives HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
카카오톡 채널 X 도달 캠페인 하위의 소재를 생성합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 POST
로 요청하며, 요청이 성공하면 응답 본문에 JSON
객체로 생성된 소재의 상세 정보를 목록으로 포함합니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이 API는 사용자 계정, 광고계정마다 1초에 한 번씩 요청 가능하도록 제한되어 있습니다.
시작일이 지난 발송 그룹에 소재를 생성하는 경우 광고그룹 상태에 따라 소재 저장 시 즉시 메시지가 발송될 수 있습니다. 소재 생성시 상위 광고그룹의 시작기간과 상태를 확인하시기 바랍니다.
유형 | 발송시작 5분전 | 발송시작 5분전~발송시점 | 집행기간 내 | 집행 종료 후 |
---|---|---|---|---|
일반 메시지 | 등록 가능 | 등록가능 | 등록가능 | 등록 불가 |
소재 최적화 | 등록 가능/ 추가 가능 | 등록가능/ 광고그룹 OFF일때 추가 가능 | 등록가능/ 광고그룹 OFF일때 추가 가능 | 등록 불가/ 소재 추가 불가 |
캐러셀 커머스형(CAROUSEL_COMMERCE_MESSAGE), 캐러셀 피드형(CAROUSEL_FEED_MESSAGE), 프리미엄동영상(PREMIUM_VIDEO_MESSAGE) 유형 및 쿠폰북 에셋 그룹(CouponBookAssetGroup)이 포함된 소재는 오픈API로 생성이 불가합니다.
메시지 집행 가이드와 맞지 않는 이미지와 문구는 사용할 수 없습니다.
요소 | 필수 | 랜딩: URL | 랜딩: 포스트 | 랜딩: 쿠폰 | 랜딩: 애드뷰 | 랜딩: 비즈니스폼 |
---|---|---|---|---|---|---|
홍보이미지 | X | X | X | X | X | X |
홍보동영상 | X | 카카오 TV 랜딩 | 카카오 TV 랜딩 | 카카오 TV 랜딩 | 카카오 TV 랜딩 | 카카오 TV 랜딩 |
홍보문구 | O | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
버튼 1 | X | O | O | O | X | X |
버튼 2 | X | O | O | O | O | O |
공유하기 | X | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
요소 | 필수 | 랜딩: URL | 랜딩: 포스트 | 랜딩: 쿠폰 | 랜딩: 애드뷰 | 랜딩: 비즈니스폼 |
---|---|---|---|---|---|---|
홍보이미지 | O 홍보이미지, 홍보동영상 중 하나 필수 |
O | O | O | X | X |
홍보동영상 | O 홍보이미지, 홍보동영상 중 하나 필수 |
카카오 TV 랜딩 | 카카오 TV 랜딩 | 카카오 TV 랜딩 | 카카오 TV 랜딩 | 카카오 TV 랜딩 |
홍보문구 | O | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
버튼 | X | O | O | O | O | O |
공유하기 | X | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
요소 | 필수 | 랜딩: URL | 랜딩: 포스트 | 랜딩: 쿠폰 | 랜딩: 애드뷰 | 랜딩: 비즈니스폼 |
---|---|---|---|---|---|---|
리스트1 타이틀 | 필수 아님 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
리스트2~3 타이틀 | O | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
리스트1~3 홍보이미지 | O 홍보이미지, 홍보동영상 중 하나 필수 |
O | O | O | X | X |
리스트1~3 홍보동영상 | O 홍보이미지, 홍보동영상 중 하나 필수 |
카카오TV로만 랜딩 | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 |
리스트1~3 홍보문구 | O | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 |
리스트4 홍보이미지 | X | O | O | O | X | X |
리스트4 홍보동영상 | X | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 | 카카오TV로만 랜딩 |
리스트4 홍보문구 | X | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 | 각 항목에 설정된 홍보이미지, 홍보동영상과 동일 |
버튼 | X | O | O | O | O | O |
공유하기 | X | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 | 랜딩 없음 |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long |
광고그룹 번호 | O |
format | String |
소재 유형 BASIC_TEXT_MESSAGE (기본텍스트), WIDE_MESSAGE (와이드이미지), WIDE_LIST_MESSAGE (와이드리스트) |
O |
name | String |
소재 이름 최대 40자 설정하지 않은 경우 {캠페인 유형}_{캠페인 목표}_{현재시간} 으로 생성 |
X |
messageElement | MessageElement |
생성할 메시지 내용 MULTIPART/FORM-DATA 로 mesasgeElement.{} 형식으로 요청 |
O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
creativeFormat | String |
메시지 소재 유형 BASIC_TEXT_MESSAGE (기본 텍스트), WIDE_MESSAGE (와이드 이미지), WIDE_LIST_MESSAGE (와이드 리스트) 중 하나 format 과 동일해야 함 |
O |
profileId | String |
카카오톡 채널 프로필 ID | O |
title | String |
홍보문구 기본 텍스트 (BASIC_TEXT_MESSAGE), 와이드 이미지 (WIDE_MESSAGE) 일 경우에만 필수로 요청 기본 텍스트 (BASIC_TEXT_MESSAGE) 는 최대 400자, 와이드 이미지 (WIDE_MESSAGE) 는 최대 76자 |
O* |
buttonAssetGroups | ButtonAssetGroup[] |
버튼 항목들 기본 텍스트 (BASIC_TEXT_MESSAGE) 유형의 경우 최대 2개의 버튼 에셋 그룹을 요청할 수 있으며 그 외 유형은 최대 1개의 버튼 에셋 그룹을 요청할 수 있음 버튼을 모두 미설정으로 요청할 경우 모든 메시지 유형에서 미설정 가능 기본 텍스트 (BASIC_TEXT_MESSAGE) 이면서 버튼1일 경우 랜딩은 미설정, URL, 포스트, 쿠폰만 설정 가능하며 버튼2의 경우 애드뷰, 비즈니스폼까지 설정 가능 와이드 이미지 (WIDE_MESSAGE), 와이드 리스트 (WIDE_LIST_MESSAGE) 유형의 경우 모든 랜딩 유형 설정 가능 |
X |
itemAssetGroups | ItemAssetGroup[] |
리스트 항목 | O |
shareFlag | Boolean |
공유하기true (설정), false (미설정) 중 하나상위 광고그룹의 연령인증 메시지( ageVerification: true )로 설정된 경우 false 만 요청 가능 |
O |
adFlag | Boolean |
정보성 메시지 설정 (true), 미설정 (false) 중 하나 |
O |
imageFile | Multipart file |
업로드할 이미지 파일 메시지 유형이 기본 텍스트 (BASIC_TEXT_MESSAGE) 일 경우에만 요청 가능 그 외 유형은 itemAssetGroup 객체를 통해 요청 가능 |
X |
videoMeta | VideoMeta |
연동할 카카오TV 정보 메시지 유형이 기본 텍스트 (BASIC_TEXT_MESSAGE) 일 경우에만 요청 가능 그 외 유형은 itemAssetGroup 객체를 통해 요청 가능 |
X |
csInfo | String |
고객센터 전화번호 | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
ordering | Integer |
버튼 순서 기본 텍스트 유형 (BASIC_TEXT_MESSAGE) 은 0, 1을 그 외 유형은 0만 전달 가능 |
O |
pcLandingUrl | String |
PC 랜딩 URL 랜딩 유형이 LANDING_URL 인 경우 요청 가능하며 PC 랜딩 URL은 PC 카카오톡에서 버튼 클릭 시 별도의 URL로 랜딩 시키려는 경우 사용 http:// 또는 https:// 형식의 정상적인 랜딩 URL을 입력 |
X |
mobileLandingUrl | String |
모바일 랜딩 URL http:// 또는 https:// 형식의 정상적인 랜딩 URL을 입력 |
O* |
title | String |
버튼명 최대 8자까지 요청 가능 비즈니스폼의 경우 아래에 정의된 버튼명으로만 요청 가능 "톡에서 설문하기", "톡에서 시승신청", "톡에서 예약하기", "톡에서 응모하기", "톡에서 참여하기" 중 하나 |
O |
landingType | String |
랜딩 유형 URL 랜딩 (LANDING_URL), 쿠폰 랜딩 (CHANNEL_COUPON), 포스트 랜딩 (CHANNEL_POST), 비즈니스폼 랜딩 (BIZ_FORM), 애드뷰 랜딩 (AD_VIEW) 중 하나 |
O |
channelCouponId | Long |
쿠폰 ID 랜딩 유형이 쿠폰 랜딩 (CHANNEL_COUPON) 인 경우 요청 가능 쿠폰 목록 조회 API 로 조회되는 쿠폰 ID |
O* |
channelPostId | Long |
포스트 ID 랜딩 유형이 포스트 랜딩 (CHANNEL_POST) 인 경우 요청 가능 채널 포스트 목록 조회 API로 조회되는 포스트 ID |
O* |
bizFormId | Long |
비즈니스폼 ID 랜딩 유형이 비즈니스폼 랜딩 (BIZ_FORM) 인 경우 요청 가능 비즈니스폼 목록 조회 API로 조회되는 비즈니스폼 ID |
O* |
adViewId | Long |
애드뷰 ID 랜딩 유형이 애드뷰 랜딩 (AD_VIEW) 인 경우 요청 가능 애드뷰 목록 조회 API로 조회되는 애드뷰 ID |
O* |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
landingType | String |
랜딩 유형 URL 랜딩 (LANDING_URL), 쿠폰 랜딩(CHANNEL_COUPON), 포스트 랜딩(CHANNEL_POST) 중 하나를 전달 |
O |
title | String |
홍보문구 와이드 리스트(WIDE_LIST_MESSAGE) 유형 중 리스트의 첫 번째 항목( messageElement.itemAssetGroups[0] )이 아닌 경우 필수 |
O* |
mobileLandingUrl | String |
모바일 랜딩URL http:// 또는 https:// 형식의 정상적인 랜딩 URL을 입력 |
X |
pcLandingUrl | String |
PC 랜딩 URL 랜딩 유형이 LANDING_URL 인 경우 요청 가능하며 PC 랜딩 URL은 PC 카카오톡에서 버튼 클릭 시 별도의 URL로 랜딩 시키려는 경우 사용 http:// 또는 https:// 형식의 정상적인 랜딩 URL을 입력 |
X |
channelPostId | Long |
포스트 ID 랜딩 유형이 포스트 랜딩(CHANNEL_POST)인 경우 요청 가능 채널 포스트 목록 조회 API로 조회되는 포스트 ID |
X |
channelCouponId | Long |
쿠폰 ID 랜딩 유형이 쿠폰 랜딩(CHANNEL_COUPON)인 경우 요청 가능 쿠폰 목록 조회 API 로 조회되는 쿠폰 ID |
X |
imageFile | Multipart File |
업로드할 이미지 파일 메시지 유형이 와이드 이미지(WIDE_MESSAGE) 혹은 와이드 리스트(WIDE_LIST_MESSAGE) 유형인 경우에만 사용 가능 랜딩 유형이 URL인 경우 사용 불가능 |
O* |
videoMeta | VideoMeta |
동영상(카카오TV) 메타 정보 기본 텍스트(BASIC_TEXT_MESSAGE) 일 경우 요청 |
O* |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
연동할 카카오TV 클립링크 ID 카카오TV 채널 영상 상세 보기 API를 통해 얻은 clipLinkId |
O |
thumbnail | String |
썸네일 URL 카카오TV 채널 영상 상세 보기 API를 이용하여 응답받는 썸네일 URL |
O |
isLoad | Boolean |
카카오TV 영상 로드 여부 고정값(true)로 전달해야 함 |
O |
isLive | Boolean |
카카오TV 라이브 영상 여부 고정값(false)로 전달해야 함 |
O |
isLink | Boolean |
카카오TV 영상 링크 여부 고정값(true)로 전달해야 함 |
O |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 BASIC_TEXT_MESSAGE (기본텍스트), WIDE_MESSAGE (와이드이미지), WIDE_LIST_MESSAGE (와이드리스트) |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID 중 하나 |
statusDescription | String |
메시지 광고그룹의 현재 상태 발송 대기, 발송중, 발송중지, 발송종료 중 하나 |
creativeStatus | String |
소재의 운영 상태 OPERATING(운영가능), UNAPPROVED(심사미승인), INVALID_DATE(기간오류), MONITORING_REJECTED(관리자정지), OFF(사용자OFF), DELETED(삭제), ADGROUP_UNAVAILABLE(광고그룹 운영불가) 중 하나 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
messageElement | MessageElement |
메시지 상세 설명 |
ageVerification | Boolean |
연령인증 메시지 여부true : 연령인증 메시지false : 일반 메시지 |
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
-F "messageElement.creativeFormat=BASIC_TEXT_MESSAGE" \
-F "messageElement.profileId=_Xxo" \
-F "messageElement.title=홍보문구" \
-F "messageElement.buttonAssetGroups[0].ordering=0" \
-F "messageElement.buttonAssetGroups[0].landingType=LANDING_URL" \
-F "messageElement.buttonAssetGroups[0].title=버튼1" \
-F "messageElement.buttonAssetGroups[0].pcLandingUrl=http://www.daum.net" \
-F "messageElement.buttonAssetGroups[0].mobileLandingUrl=http://www.kakaocorp.com" \
-F "messageElement.buttonAssetGroups[1].ordering=1" \
-F "messageElement.buttonAssetGroups[1].landingType=BIZ_FORM" \
-F "messageElement.buttonAssetGroups[1].bizFormId=1" \
-F "messageElement.buttonAssetGroups[1].title=톡에서 시승신청" \
-F "messageElement.name=기본텍스트" \
-F "messageElement.shareFlag=true" \
-F "messageElement.adFlag=true" \
-F "messageElement.csInfo=02-1234-5678" \
-F "messageElement.imageFile=@/directory/banner.png" \
-F "adGroupId=39688" \
-F "format=BASIC_TEXT_MESSAGE"
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
-F "messageElement.creativeFormat:WIDE_LIST_MESSAGE" \
-F "Format:WIDE_LIST_MESSAGE" \
-F "messageElement.profileId:_Xxju" \
-F "messageElement.title:와이드리스트홍보문" \
-F "messageElement.buttonAssetGroups[0].ordering:0" \
-F "messageElement.buttonAssetGroups[0].title:버튼1" \
-F "messageElement.buttonAssetGroups[0].landingType:LANDING_URL" \
-F "messageElement.buttonAssetGroups[0].pcLandingUrl:http://daum.net" \
-F "messageElement.buttonAssetGroups[0].mobileLandingUrl:http://daum.net" \
-F "messageElement.shareFlag:true" \
-F "messageElement.adFlag:true" \
-F "messageElement.csInfo:014-1122-1251" \
-F "adGroupId:41157" \
-F "name:베일리와이드리스" \
-F "messageElement.itemAssetGroups[0].ordering:0" \
-F "messageElement.itemAssetGroups[0].title:타이틀1" \
-F "messageElement.itemAssetGroups[0].landingType:LANDING_URL" \
-F "messageElement.itemAssetGroups[0].mobileLandingUrl:https://www.kakaocorp.com" \
-F "messageElement.itemAssetGroups[1].ordering:1" \
-F "messageElement.itemAssetGroups[1].title:타이틀2" \
-F "messageElement.itemAssetGroups[1].landingType:LANDING_URL" \
-F "messageElement.itemAssetGroups[1].mobileLandingUrl:https://www.kakaocorp.com" \
-F "messageElement.itemAssetGroups[2].ordering:2" \
-F "messageElement.itemAssetGroups[2].title:타이틀3" \
-F "messageElement.itemAssetGroups[2].landingType:LANDING_URL" \
-F "messageElement.itemAssetGroups[2].mobileLandingUrl:https://www.kakaocorp.com" \
-F "messageElement.itemAssetGroups[3].ordering:3" \
-F "messageElement.itemAssetGroups[3].title:타이틀4" \
-F "messageElement.itemAssetGroups[3].landingType:LANDING_URL" \
-F "messageElement.itemAssetGroups[3].mobileLandingUrl:https://www.kakaocorp.com" \
-F "messageElement.itemAssetGroups[0]=@/directory/banner.png" \
-F "messageElement.itemAssetGroups[1]=@/directory/banner.png" \
-F "messageElement.itemAssetGroups[2]=@/directory/banner.png" \
-F "messageElement.itemAssetGroups[3]=@/directory/banner.png"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 12345,
"creativeId": 12345,
"name": "카카오톡 채널_도달_20210625",
"adGroupId": 11223,
"format": "BASIC_TEXT_MESSAGE",
"config": "ON",
"systemConfig": "ON",
"statusDescription": "발송 대기",
"creativeStatus": "OPERATING",
"createdDate": "2021-06-25T17:04:02.883575",
"lastModifiedDate": "2021-06-25T17:04:06.291245",
"messageElement": {
"id": 12345,
"adAccountId": 123,
"profileId": "_xbHxd",
"name": "카카오톡 채널_도달_20210625",
"creativeFormat": "BASIC_TEXT_MESSAGE",
"title": "홍보문구입니다.",
"image": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"shareFlag": true,
"adFlag": true,
"thumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"buttonAssetGroups": [
{
"ordering": 0,
"title": "버튼1",
"pcLandingUrl": "http://www.daum.net",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
}
],
"thumbnailUrl": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"messageThumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"createdDate": "2021-06-25T17:04:02.883575",
"lastModifiedDate": "2021-06-25T17:04:06.291245"
}
}
POST /openapi/v4/creatives/copy HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
카카오톡 채널 X 도달 캠페인 하위의 소재를 복사합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 POST
로 광고그룹 ID와 복사할 소재 번호 목록을 지정하여 요청합니다. 성공 시 복사된 소재 정보의 배열을 받습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이 API는 사용자 계정, 광고계정마다 5초에 한 번씩 요청이 가능하도록 제한되어 있습니다.
캐러셀 커머스형(CAROUSEL_COMMERCE_MESSAGE), 캐러셀 피드형(CAROUSEL_FEED_MESSAGE), 프리미엄동영상(PREMIUM_VIDEO_MESSAGE) 유형 및 쿠폰북 에셋 그룹(CouponBookAssetGroup)이 포함된 소재는 오픈API로 복사가 불가합니다.
케이스 | 처리 |
---|---|
카카오톡 채널이 다른 캠페인 하위 메시지 | 소재 복사 팝업에서 캠페인 선택 리스트에는 채널의 프로필ID가 일치하는 것만 노출됨 |
카카오톡 채널이 같은 캠페인 하위 메시지 | 소재 복사 팝업에서 ageVerification: true 인 기존 광고그룹의 하위 소재는 ageVerification: false 인 신규 광고그룹으로 복사 불가 |
에디터 배포 전에 광고그룹 하위에 저장한 채널 관리자센터 메시지 | 복사 대상으로 선택한 소재 중에 포함된 경우 얼럿 노출 |
쿠폰의 상태가 즉시종료, 응모기간완료 상태인 쿠폰을 랜딩으로 하는 메시지 | 복사 가능 소재 개수에 카운트 하지 않고, 리스트에는 '복사불가' 표시 |
비즈니스폼의 상태가 종료, 긴급종료 상태인 비즈니스폼을 랜딩으로 하는 메시지 | 복사 가능 소재 개수에 카운트 하지 않고, 리스트에는 '복사불가' 표시 |
포스트의 상태가 삭제 상태인 포스트를 랜딩으로 하는 메시지 | 복사 가능 소재 개수에 카운트 하지 않고, 리스트에는 '복사불가' 표시 |
애드뷰의 상태가 삭제 상태인 애드뷰를 랜딩으로 하는 메시지 | 복사 가능 소재 개수에 카운트 하지 않고, 리스트에는 '복사불가' 표시 |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long | 소재들이 복사될 광고그룹 번호 | O |
creativeIds | Long[] | 복사할 소재 번호 목록 | O |
이름 | 타입 | 설명 |
---|---|---|
- | MessageCreative[] |
소재 정보 목록 |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 BASIC_TEXT_MESSAGE (기본텍스트), WIDE_MESSAGE (와이드이미지), WIDE_LIST_MESSAGE (와이드리스트) |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID 중 하나 |
statusDescription | String |
메시지 광고그룹의 현재 상태 발송 대기, 발송중, 발송중지, 발송종료 중 하나 |
creativeStatus | String |
소재의 운영 상태 OPERATING(운영가능), UNAPPROVED(심사미승인), INVALID_DATE(기간오류), MONITORING_REJECTED(관리자정지), OFF(사용자OFF), DELETED(삭제), ADGROUP_UNAVAILABLE(광고그룹 운영불가) 중 하나 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
messageElement | MessageElement |
메시지 상세 설명 |
ageVerification | Boolean |
연령인증 메시지 여부true : 연령인증 메시지false : 일반 메시지 |
curl -X POST "https://apis.moment.kakao.com/openapi/v4/creatives/copy" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-d '{
"adGroupId": 11223,
"creativeIds": [12345]
}'
HTTP/1.1 200 OK
Content-Length: 0
Content-type: application/json;charset=UTF-8
[
{
"id": 12346,
"creativeId": 12346,
"name": "카카오톡 채널_도달_20210625",
"adGroupId": 11223,
"format": "BASIC_TEXT_MESSAGE",
"config": "ON",
"systemConfig": "ON",
"statusDescription": "발송 대기",
"creativeStatus": "OPERATING",
"createdDate": "2021-06-25T17:04:03",
"lastModifiedDate": "2021-06-25T17:04:06",
"messageElement": {
"id": 78428,
"adAccountId": 759,
"profileId": "_xbHxd",
"name": "카카오톡 채널_도달_20210625",
"creativeFormat": "BASIC_TEXT_MESSAGE",
"title": "홍보문구입니다.",
"image": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"shareFlag": true,
"adFlag": true,
"thumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"buttonAssetGroups": [
{
"ordering": 0,
"title": "버튼1",
"pcLandingUrl": "http://www.daum.net",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
}
],
"thumbnailUrl": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"messageThumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"createdDate": "2021-06-25T17:04:03",
"lastModifiedDate": "2021-06-25T17:04:06"
}
}
]
PUT /openapi/v4/creatives HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
카카오톡 채널 X 도달 캠페인 하위의 소재를 수정합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 PUT
으로 요청하며, 요청이 성공하면 응답 본문에 JSON
객체로 소재 상세 정보를 목록으로 포함합니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이 API는 사용자 계정, 광고계정마다 1초에 한 번씩 요청 가능하도록 제한되어 있습니다.
수정은 기존의 메시지와 동일한 포맷이어야 합니다. 집행 5분전 이후부터는 소재의 이름만 수정가능합니다. 이름을 제외한 다른 파라미터는 무시됩니다.
메시지 집행 가이드와 맞지 않는 이미지와 문구는 사용할 수 없습니다.
유형 | 발송시작 5분전 | 발송시작 5분전~발송시점 | 집행기간 내 | 집행 종료 후 |
---|---|---|---|---|
일반 메시지 | 가능 | 불가 | 불가 | 불가 |
소재 최적화 | 가능 | 불가 | 불가 | 불가 |
캐러셀 커머스형(CAROUSEL_COMMERCE_MESSAGE), 캐러셀 피드형(CAROUSEL_FEED_MESSAGE), 프리미엄동영상(PREMIUM_VIDEO_MESSAGE) 유형 및 쿠폰북 에셋 그룹(CouponBookAssetGroup)이 포함된 소재는 오픈API로 수정이 불가합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
adGroupId | Long |
광고그룹 번호 | O |
format | String |
소재 유형 BASIC_TEXT_MESSAGE (기본텍스트), WIDE_MESSAGE (와이드이미지), WIDE_LIST_MESSAGE (와이드리스트) |
O |
name | String |
소재 이름 최대 40자 설정하지 않은 경우 {캠페인 유형}{캠페인 목표}{현재시간} 으로 설정됩니다. |
X |
messageElement | MessageElement |
생성할 메시지 내용 MULTIPART/FORM-DATA 로 mesasgeElement.{} 형식으로 요청 |
O |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
소재 대표 번호 최초 생성 시 부여된 식별용 번호 |
creativeId | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
name | String |
소재명 |
adGroupId | Long |
광고그룹 번호 |
format | String |
소재 유형 BASIC_TEXT_MESSAGE (기본텍스트), WIDE_MESSAGE (와이드이미지), WIDE_LIST_MESSAGE (와이드리스트) |
config | String |
소재 상태 ON, OFF, DEL(삭제) 중 하나 |
systemConfig | String |
소재 시스템 상태 ON, VOID 중 하나 |
statusDescription | String |
메시지 광고그룹의 현재 상태 발송 대기, 발송중, 발송중지, 발송종료 중 하나 |
creativeStatus | String |
소재의 운영 상태 OPERATING(운영가능), UNAPPROVED(심사미승인), INVALID_DATE(기간오류), MONITORING_REJECTED(관리자정지), OFF(사용자OFF), DELETED(삭제), ADGROUP_UNAVAILABLE(광고그룹 운영불가) 중 하나 |
createdDate | String |
소재 생성일시 |
lastModifiedDate | String |
소재 마지막 수정일시 |
messageElement | MessageElement |
메시지 상세 설명 |
ageVerification | Boolean |
연령인증 메시지 여부true : 연령인증 메시지false : 일반 메시지 |
curl -X PUT "https://apis.moment.kakao.com/openapi/v4/creatives" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
-F "messageElement.creativeFormat=BASIC_TEXT_MESSAGE" \
-F "messageElement.profileId=_Xxo" \
-F "messageElement.title=홍보문구" \
-F "messageElement.buttonAssetGroups[0].ordering=0" \
-F "messageElement.buttonAssetGroups[0].landingType=LANDING_URL" \
-F "messageElement.buttonAssetGroups[0].title=버튼1" \
-F "messageElement.buttonAssetGroups[0].pcLandingUrl=http://www.daum.net" \
-F "messageElement.buttonAssetGroups[0].mobileLandingUrl=http://www.kakaocorp.com" \
-F "messageElement.buttonAssetGroups[1].ordering=1" \
-F "messageElement.buttonAssetGroups[1].landingType=BIZ_FORM" \
-F "messageElement.buttonAssetGroups[1].bizFormId=1" \
-F "messageElement.buttonAssetGroups[1].title=톡에서 시승신청" \
-F "messageElement.name=기본텍스트" \
-F "messageElement.shareFlag=true" \
-F "messageElement.adFlag=true" \
-F "messageElement.csInfo=02-1234-5678" \
-F "messageElement.imageFile=@/directory/banner.png" \
-F "adGroupId=39688" \
-F "format=BASIC_TEXT_MESSAGE"
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"id": 12345,
"creativeId": 12345,
"name": "카카오톡 채널_도달_20210625",
"adGroupId": 11223,
"format": "BASIC_TEXT_MESSAGE",
"config": "ON",
"systemConfig": "ON",
"statusDescription": "발송 대기",
"creativeStatus": "OPERATING",
"createdDate": "2021-06-25T17:04:02.883575",
"lastModifiedDate": "2021-06-25T17:04:06.291245",
"messageElement": {
"id": 12345,
"adAccountId": 123,
"profileId": "_xbHxd",
"name": "카카오톡 채널_도달_20210625",
"creativeFormat": "BASIC_TEXT_MESSAGE",
"title": "홍보문구입니다.",
"image": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"shareFlag": true,
"adFlag": true,
"thumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"buttonAssetGroups": [
{
"ordering": 0,
"title": "버튼1",
"pcLandingUrl": "http://www.daum.net",
"mobileLandingUrl": "https://www.kakaocorp.com",
"landingType": "LANDING_URL"
}
],
"thumbnailUrl": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"messageThumbnail": {
"fileSize": 168816,
"url": "//beta.daumcdn.net/b2/creative/759/d7961bd0662a240f43f047d3116a25f3.jpg",
"fileName": "풀뷰 1280x720.jpg",
"imageWidth": 1280,
"imageHeight": 720,
"mimeType": "image/jpeg",
"imageHash": "35156f0c1393434ced4be21423d08a6a"
},
"createdDate": "2021-06-25T17:04:02.883575",
"lastModifiedDate": "2021-06-25T17:04:06.291245"
}
}
PUT /openapi/v4/creatives/onOff HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
소재 상태를 변경합니다. 디스플레이 광고 소재인 경우에만 변경 가능합니다. 카카오톡 채널 유형의 캠페인 하위 소재는 상태 변경이 불가능합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 PUT
으로 요청하고, 성공 시 HTTP 상태 코드 200에 응답 본문은 없습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이 API는 사용자 계정, 광고계정마다 1초에 한 번씩 요청 가능하도록 제한되어 있습니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
O |
config | String |
ON, OFF 중 하나 | O |
curl -X PUT "https://apis.moment.kakao.com/openapi/v4/creatives/onOff" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: application/json" \
-d '{
"id": 1234,
"config": "ON"
}'
HTTP/1.1 200 OK
Content-Length: 0
Content-type: application/json;charset=UTF-8
HTTP/1.1 200 OK
Content-Type: application/json;charset=UTF-8
{
"code": -813,
"msg": "KakaoMomentException",
"extras": {
"detailCode": 33003,
"detailMsg": "소재가 존재하지 않습니다."
}
}
DELETE /openapi/v4/creatives/${id} HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
소재를 삭제합니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId
)를 헤더에 담아 DELETE
로 요청하고, 성공 시 HTTP 상태 코드 200에 응답 본문은 없습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
소재 삭제는 데이터 삭제를 의미하는 것이 아닌, 소재에 대한 운영을 포기한다는 의미입니다. 스폰서드 보드, 카카오 비즈보드 X 도달, 다음쇼핑, 동영상 유형 캠페인 하위 광고 소재는 삭제가 불가능합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
O |
curl -X DELETE "https://apis.moment.kakao.com/openapi/v4/creatives/${id}" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}" \
-H "Content-Type: application/json"
HTTP/1.1 200 OK
Content-Length: 0
Content-type: application/json;charset=UTF-8
{
"code": -813,
"msg": "KakaoMomentException",
"extras": {
"detailCode": 75008,
"detailMsg": "카카오톡 채널_도달 소재는 삭제할 수 없습니다.",
"path": "/v2/moment/creatives",
"timestamp": "2020-04-01T10:16:14.294+0000"
}
}
GET /openapi/v4/creatives/${id}/systemConfigHistory HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
지정한 한 소재의 시스템 정지 사유를 조회합니다. 시스템 정지 사유가 여러건 있는 경우 가장 최근의 관리자 정지 사유를 조회합니다. 소재의 systemConfig
가 ADMIN_STOP
또는 VOID
일 경우에만 응답이 있습니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId)를 헤더에 담아 GET
으로 요청합니다. 성공 시 응답 본문에 JSON
객체로 시스템 정지 사유 상세정보를 받습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
O |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
시스템 정지 번호 |
systemConfig | String |
시스템 정지 상태ON : 정상ADMIN_STOP : 관리자정지VOID : 콘텐츠 오류 |
reason | String |
시스템 정지 사유 |
createdDate | String |
시스템 정지 사유 생성일시 ( yyyy-MM-dd'T'HH:mm:ss 형식) |
lastModifiedDate | String |
시스템 정지 사유 마지막 수정일시 ( yyyy-MM-dd'T'HH:mm:ss 형식 |
curl -X GET "https://apis.moment.kakao.com/openapi/v4/creatives/${id}/systemConfigHistory" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
{
"id": 1234,
"systemConfig": "ADMIN_STOP",
"reason": "해당 소재 랜딩 지원 종료로 관리자 정지되었습니다.",
"createdDate":"2021-01-01T00:00:00",
"lastModifiedDate": "2021-01-01T00:00:00"
}
{
"code": -813,
"msg": "KakaoMomentException",
"extras": {
"detailCode": 33003,
"detailMsg": "소재가 존재하지 않습니다."
}
}
GET /openapi/v4/creatives/${id}/systemConfigHistories HTTP/1.1
Host: apis.moment.kakao.com
Authorization: Bearer ${ACCESS_TOKEN}
지정한 한 소재의 최근 2년 동안의 시스템 정지 사유를 조회합니다. 소재의 systemConfig
가 ADMIN_STOP
또는 VOID
일 경우에만 응답이 있습니다.
액세스 토큰(Access token)과 광고계정 ID(adAccountId)를 헤더에 담아 GET
으로 요청합니다. 성공 시 응답 본문에 JSON
객체로 시스템 정지 사유 상세정보 리스트를 받습니다. 실패 시 에러 코드 및 상세 에러 코드로 사유를 확인합니다.
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
Authorization | String |
액세스 토큰 Bearer ${ACCESS_TOKEN} 형식으로 전달 |
O |
adAccountId | Long |
광고계정 ID | O |
이름 | 타입 | 설명 | 필수 |
---|---|---|---|
id | Long |
소재 번호 실제 집행 시 활용되는, 소재 수정 발생 시 부여되는 소재 번호 |
O |
이름 | 타입 | 설명 |
---|---|---|
- | SystemStopReason[] |
소재 정보 목록 |
이름 | 타입 | 설명 |
---|---|---|
id | Long |
시스템 정지 번호 |
systemConfig | String |
시스템 정지 상태ON : 정상ADMIN_STOP : 관리자정지VOID : 콘텐츠 오류 |
reason | String |
시스템 정지 사유 |
createdDate | String |
시스템 정지 사유 생성일시 ( yyyy-MM-dd'T'HH:mm:ss 형식) |
lastModifiedDate | String |
시스템 정지 사유 마지막 수정일시 ( yyyy-MM-dd'T'HH:mm:ss 형식 |
curl -X GET "https://apis.moment.kakao.com/openapi/v4/creatives/${id}/systemConfigHistories" \
-H "Authorization: Bearer ${ACCESS_TOKEN}" \
-H "adAccountId: ${adAccountId}"
[
{
"id": 1235,
"systemConfig": "ADMIN_STOP",
"reason": "해당 소재 랜딩 지원 종료로 관리자 정지되었습니다.",
"createdDate": "2021-01-01T00:00:00",
"lastModifiedDate": "2021-01-01T00:00:00"
},
{
"id": 1234,
"systemConfig": "ADMIN_STOP",
"reason": "해당 소재 랜딩 지원 종료로 관리자 정지되었습니다.",
"createdDate": "2021-01-01T00:00:00",
"lastModifiedDate": "2021-01-01T00:00:00"
}
]
{
"code": -813,
"msg": "KakaoMomentException",
"extras": {
"detailCode": 33003,
"detailMsg": "소재가 존재하지 않습니다."
}
}