7. 퍼블리셔 오퍼월 S2S API

Index

 


1. 광고 목록 조회

퍼블리셔가 받아볼 수 있는 광고 목록을 조회합니다.

항목

내용

항목

내용

1

요청 방향

매체사 → BuzzAd

2

HTTP Request method

GET

3

HTTP Request URL

https://ad.buzzvil.com/api/v1/list

4

HTTP Request parameters

Field 설명

  • unit_id (Integer) : 매체사 식별을 위한 아이디

5

Response

  • JSON 형식으로 반환

  • Field 설명은 아래 ‘5) Response Fields' 표 참고

5) Response Fields

Field

Type

Description

Field

Type

Description

ads

list

광고 목록

  • 자세한 아이템은 아래 'ads 세부 항목' 표 참고

code

String

처리 결과 코드

  • 200인 경우에만 정상

msg

String

처리 결과 메세지

ads 세부 항목 (Response Fields - ads)

Field

Type

Description

Field

Type

Description

id

Integer

광고 아이디 (식별값)

title

String

광고 제목

description

String

광고 설명

action_description

String

광고 적립방법 설명

icon

String

아이콘 이미지 주소

revenue

String

매체사 단가

revenue_type

String

광고 타입. 추후 새로운 타입이 추가될 수 있으므로 연동시 이를 고려해야 합니다.

  • cpi: 앱 설치형

  • cpe: 앱 실행형 또는 앱 실행후 액션형

  • cpa: 액션형

  • cpl: 페이스북 좋아요

  • cpinsta: 인스타그램 팔로우

  • cps: 쇼핑 적립형 광고

  • cpyoutube: 유튜브 광고

  • cpq: 퀴즈형

  • cpk: 카카오톡 채널 참여하기

  • cpylike: 유튜브 구독 + 영상 좋아요 광고

package_name

String

안드로이드 package_name

url_scheme

String

아이폰 url scheme

platform

String

광고가 지원되는 플랫폼

  • A: 안드로이드

  • I: 아이폰

  • W: 안드로이드/아이폰 둘 다 지원

해당 파라미터는 광고운영단에서 세팅되는 값이며 W로 내려가는 값을 매체사 측에서 다시 필터링 하여 내리는 경우 올바른 유닛에 광고가 내려가지 않을 수 있음

age_from

Integer

나이 하한 타게팅. 타게팅이 없는 경우 null

age_to

Integer

나이 상한 타게팅. 타게팅이 없는 경우 null

age_ranges

JSON

다 구간 나이 타게팅. age_ranges를 사용하는 경우 age_from, age_to 값은 무시해도 된다.

  • 타게팅이 없는 경우

[]

  • 타게팅이 있는 경우

[{"from":10, "to":20}, {"from":30, "to":40}]

sex

String

성별 타게팅. 타게팅이 없는 경우 null

  • M: 남자

  • F: 여자

relationship

String

결혼 유무 타게팅. 타게팅이 없는 경우 null

  • S: 미혼

  • M: 기혼

carrier

String

통신사 타게팅. 타게팅이 없는 경우 null

  • kt: KT 통신사

  • skt: SKT 통신사

  • lgt: LGT 통신사

udid_required

Bool

  • true: 광고 참여/참여완료 요청시 udid 파라미터 필수

  • false: 광고 참여/참여완료 요청시 udid 파라미터 필수 아님

device_name

String

디바이스 모델 타게팅

  • 콤마(,)로 구분된 디바이스 모델명

  • OR 조건

  • ex) SHV-E250S,SHV-E275K,SM-G928LSHV-E250S 또는 SHV-E275K 또는 SM-G928L 인 유저에게 타게팅

target_app

String

앱 타게팅 (안드로이드만 지원)

  • 콤마(,)로 구분된 패키지 네임으로, 해당 앱이 설치된 유저에게 타게팅

  • 패키지 네임 앞에 ‘-’ 기호가 있는 경우 설치되지 않은 유저에게 타게팅

  • OR 조건

  • ex1) Pl.idreams.skyforcehd,com.imangi.templerun2Pl.idreams.skyforcehd 또는 com.imangi.templerun2 가 설치된 유저에게 타게팅

  • ex2) com.thinkreals.couponmoa,-com.supercell.clashofclanscom.thinkreals.couponmoa가 설치되어 있거나 com.supercell.clashofclans가 설치되어 있지 않은 유저에게 타게팅

region

String

지역 타게팅

  • 콤마로 구분된 지역: 도/시 단위로 타게팅 가능

  • OR 조건

  • ex) 서울특별시 강남구,경상남도 → 서울특별시 강남구 또는 경상남도에 거주중인 유저에게 타게팅

creative

list

creative 목록

  • 자세한 아이템은 아래 'creative 세부 항목' 표 참고

creative 세부 항목 (Response Fields - ads - creative)

Field

Type

Description

Field

Type

Description

ID

Integer

creative ID

short_action_description

String

짧은 참여방법/주의사항 기재

height

integer

native creative 가 세팅 되어 있는 경우 627 (고정값), 없는 경우 0

width

integer

native creative 가 세팅 되어 있는 경우 1200 (고정값), 없는 경우 0

action_description

String

참여방법 및 주의사항이 기재
22자 권장, 최대 40자

call_to_action

String

ex) 팔로워 누르러 가기

image_url

String

Native creative가 세팅되어 있을 경우에만 native 타입의 이미지 파일 url이 담김

icon

String

오퍼월 리스트내에 볼수 있는 아이콘 이미지

 

2. 광고 참여 요청

광고에 참여하기 위해서는 참여 요청 API를 호출하여 참여 가능 여부를 확인해야 합니다.

항목

내용

항목

내용

1

요청 방향

매체사 → BuzzAd

2

HTTP Request method

POST

3

HTTP Request URL

https://ad.buzzvil.com/api/v1/participate

4

HTTP Request parameters

  • Field 설명은 아래 ‘4) HTTP Request parameters’ 표 참고

권장 파라미터를 주지 않는 경우 어뷰징 체크를 더 엄격하게 하므로 가능하다면 전달해주는 것이 좋습니다.

5

Response

  • JSON 형식으로 반환

  • Field 설명은 아래 ‘5) Response’ 표 참고

4) HTTP Request parameters

Field

Type

Description

Field

Type

Description

unit_id

Integer

매체 아이디

campaign_id

Integer

광고 아이디

ifa

String

  • 안드로이드 광고 아이디(GAID)

  • 또는 iOS Identifier for Advertiser(IDFA)

custom

String

매체사에서 정의한 파라미터

  • postback으로 다시 전달됨

  • 최대 길이는 255

client_ip

String

광고 참여한 유저의 ip ex) 123.123.123.123

udid 권장

String

안드로이드 IMEI

udid는 안드로이드 Q 버전부터 수집 불가 항목입니다.

android_id 권장

String

android id

udid_sha1 권장

String

sha1 적용한 안드로이드 IMEI

udid는 안드로이드 Q 버전부터 수집 불가 항목입니다.

android_id_sha1 권장

String

sha1 적용한 android id

user_id

String

매체사 유저 아이디

sub_publisher_id 선택

String

매체사의 하위 매체사 아이디

sub_publisher_user_id 선택

String

매체사의 하위 매체사의 유저 아이디

device_name 권장

String

디바이스 모델 이름

carrier 권장

String

통신사 ex) SKT, UPlus

google_account_sha1 권장

String

안드로이드 기기에 등록된 google account sha1 적용 값

  • 복수 개인 경우 가장 첫 번째 account만 전달합니다.

  • getAccountsByType(”com.google”) 함수를 이용해 가져올 수 있습니다.

    • 부록 3) “Google account 가져오기 예제” 참고

5) Response

Field

Type

Description

Field

Type

Description

code

Integer

처리결과 코드

  • 200인 경우에만 참여 가능: 자세한 내용은 부록 참고

msg

String

처리결과 메세지

landing_url

String

광고주 페이지 랜딩 URL

 

3. 광고 참여 완료

본 항목은 CPI 광고만 해당됩니다.

CPI 광고는 매체사 측에서 사용자가 앱을 설치했는지 여부를 판단하고 BuzzAd으로 API를 통해서 설치 완료 요청을 해야합니다. 성공시 BuzzAd에서 매체사로 리워드 적립 postback가 호출됩니다.

항목

내용

항목

내용

1

요청 방향

매체사 → BuzzAd

2

HTTP Request method

POST

3

HTTP Request URL

https://ad.buzzvil.com/api/v1/complete

4

HTTP Request parameters

  • Field 설명은 아래 ‘4) HTTP Request parameters’ 표 참고

5

Response

JSON 형식으로 반환

  • Field 설명은 아래 ‘5) Response’ 표 참고

4) HTTP Request parameters

Field

Type

Description

Field

Type

Description

unit_id

Integer

매체 아이디

campaign_id

Integer

광고 아이디

ifa

String

  • 안드로이드 광고 아이디(GAID)

  • 또는 iOS Identifier for Advertiser(IDFA)

client_ip

String

광고 참여한 유저의 아이피 ex) 123.123.123.123

udid 선택

String

안드로이드 IMEI

udid는 안드로이드 Q 버전부터 수집 불가 항목입니다.

5) Response

Field

Type

Description

Field

Type

Description

code

Integer

처리결과 코드

  • 200인 경우에만 정상 처리: 부록 참고

msg

String

처리결과 메세지

 

4. 포인트 적립 포스트백 API 연동

BuzzAd에서 유저가 목표한 액션을 수행 시 매체사로 보내주는 리퀘스트입니다.

  • 버즈애드에서 포인트 적립이 발생했을 때 버즈애드에서 직접 매체사 유저들에게 포인트를 지급하는 것이 아닙니다. 버즈애드 서버에서 매체사 서버로 포인트 적립 요청을 보낼 뿐이고, 실제 지급은 매체사 서버에서 처리합니다.

https://buzzvil.atlassian.net/wiki/spaces/BDG/pages/1756004654 문서를 참고하여 API 연동 후, endpoint url을 버즈빌 매니저에게 전달해주세요.

부록

1) 처리 결과 코드

아래 표에 명시되지 않은 Code가 추가될 수 있으므로 주의해야 합니다.

Code

Description

Code

Description

200

정상

1000

시스템 에러

9001

존재하지 않는 unit_id

9003

파라미터 에러

9004

유효하지 않은 파라미터 (어드민에서 유닛의 광고 그룹 설정 확인)

9008

존재하지 않는 campaign_id

9013

종료된 광고 (disabled)

9014

종료된 광고 (라이브 중인 시간이 아님)

9015

postback url 이 등록되어 있지 않음

9020

이미 참여한 광고

9021

이미 소진된 광고

9022

ifa 파라미터 없음

GAID 또는 IDFA 트래킹을 허용 받지 못한 유저의 경우에 9022 에러코드가 리턴됩니다.

9025

클릭 로그 찾을 수 없음

9031

내부 API 에러

2) 앱 설치 트래킹

iOS/안드로이드에서 앱 설치여부를 트래킹 하는 방법에 대한 간략한 예제입니다. OS에 맞는 항목을 선택하여 자세한 내용을 확인해주세요.

안드로이드

iOS는 별도로 앱 설치 시 발생하는 시그널이 없으므로 유저가 앱을 실행하는 타이밍에 설치여부를 체크하는 것을 추천합니다.

따라서 아래의 AppDelegate 함수에서 체크를 수행하는 방법이 있습니다.

1 - (void)applicationDidBecomeActive:(UIApplication *)application

설치여부 체크는 아래의 함수를 이용합니다.

1 [[UIApplication sharedApplication] canOpenURL:[NSURL URLWithString:urlScheme]]

3) Google account 가져오기 예제

1 2 3 4 5 6 7 8 9 String getGoogleAccount(Context context) { // need permission : android.permission.GET_ACCOUNTS AccountManager accountManager = AccountManager.get(context); Account[] accounts = accountManager.getAccountsByType("com.google"); if (accounts.length > 0) { return accounts[0].name; } return ""; }

 

FAQ

  • 우선 request method 를 POST 로 설정하셨는지 확인 부탁드리며,

  • Content-type 을 application/x-www-form-urlencoded 로 설정해주시기 바랍니다.

타게팅 값이 있는 광고를 받는 절차

  1. 버즈빌 BD 매니저에게 아래의 타게팅 항목 중 지원 가능한 항목에 대해 전달합니다.

    • 연령

    • 성별

    • 통신사

    • 설치된 앱 패키지명

    • 지역 (형식 참고문서)

    • 결혼 여부

    • 기종

  2. 버즈빌 서버에 해당 정보 등록 후 BD 매니저를 통해 매체사에 안내합니다.

iOS14 버전에서 IDFA 수집에 대한 정책 변경으로 인해 사용자의 IDFA 값을 얻기 위해서는 먼저 사용자에게 App Tracking Transparency 팝업을 노출하여 권한을 획득해야 합니다. 이로인해 ifa 파라미터 값이 없을 경우 발생하는 9022 에러가 많은 유저에게서 발생할 수 있습니다. 기존에도 유저가 opt-out 할 경우 ifa 파라미터 값이 없어서 동일한 에러코드를 리턴했을텐데 iOS14 이후 버전을 사용하는 유저들의 경우 opt-in을 하지 않으면 모두 이 에러가 발생하며 액션형 광고 참여가 불가능한 상황이라 좀 더 적극적인 opt-in 안내를 할 필요가 있습니다.

아래 문구는 버즈빌 허니스크린에서 해당 에러에 대해 유저에게 안내하고 있는 문구입니다. 아래 안내문구를 참고하여 9022 에러가 리턴되었을때 유저에게 보여줄 안내 메세지 적용 작업이 필요합니다.

광고 참여 확인을 위해 설정 변경이 필요합니다.

  • 설정 > 개인정보 보호 > 추적 > 앱이 추적을 요청하도록 허용 켜기 (iOS 14 미만 버전인 경우 : 설정 > 개인 정보 보호 > 광고 > 광고 추적 제한 해제)

 

가이드 변경 이력

버전

변경일자

변경내용

담당자

버전

변경일자

변경내용

담당자

  1. 0

2014/11/03

 

서주은

  1. 1

2014/11/10

list api, complete api 추가

서주은

  1. 2

2014/11/13

list api 응답에 platform, age_from, age_to, sex, relationship, carrier 필드 추가

서주은

  1. 3

2014/12/29

buzzad.io 로 도메인 변경

서주은

  1. 4

2015/03/17

앱 설치 트래킹 부록 추가

서주은

  1. 5

2015/03/23

custom parameter max-length 명시

서주은

  1. 6

2015/04/06

list api에 udid_required 응답 추가

서주은

  1. 7

2015/04/09

list api에 revenue_type 설명 수정

서주은

  1. 8

2015/06/11

API endpoint http → https로 변경

participate/complete api에 udid 파라미터 추가

서주은

  1. 9

2015/07/09

리워드 적립 postback에 transaction_id 파라미터 추가

서주은

  1. 10

2015/11/30

에러코드 추가

서주은

  1. 11

2016/03/18

list api에 device_name, target_app, region 추가

서주은

  1. 12

2016/11/11

광고 참여 요청 API에 파라미터 추가

  • udid

  • android_id

  • udid_sha256

  • android_id_sha256

  • user_id

  • sub_publisher_id

  • sub_publisher_user_id

서주은

  1. 13

2016/11/30

광고 참여 요청 API 파라미터 변경 및 추가

  • udid_sha256 → udid_sha1

  • android_id_sha256 → android_id_sha1

  • device_name

  • carrier

  • google_account_sha1

서주은

  1. 14

2016/11/30

API 주소 변경

api.buzzad.ioad.buzzvil.com

서주은

  1. 15

2016/12/01

Google account 가져오기 예제 추가

서주은

  1. 16

2017/02/07

cpy 유튜브 시청 → 동영상 시청

서주은

  1. 17

2018/05/16

FAQ #1 추가

윤진

  1. 18

2018/07/11

“3. 부록의 (1) 처리 결과 코드” 에 9004 에러 추가

윤진

  1. 19

2019/01/04

“2-(1) 광고 목록 조회” 하단에 “타게팅 값이 있는 광고를 받는 절차” 설명 추가

윤진

1. 20

2020/05/26

  • 광고목록 조회 - Response Fields - ads - Creative 추가

    • 기존에 가이드 문서에 명시되지 않았던 부분 추가

  • 광고목록 조회 - Response Fields - ads - revenue_type 수정

    • CPY = 동영상 광고 → 삭제
      CPS = 유튜브 광고 → 결제형 광고로 수정
      CPYOUTUBE → 유튜브 광고

공지연

1.21

2020/08/18

CPS = 결제형 광고 → 쇼핑 적립형 광고 로 수정

공지연

1.22

2020/10/13

IDFA 트래킹 허용 받지 못한 경우 가이드 추가

이태규

1.22

2021/11/03

age_ranges targeting 추가

서주은