수익화 | Reporting API

인모비 게시자 보고 API 3.0을 사용하면 앱의 성능 데이터 다운로드를 자동화할 수 있습니다. 본 설명서에는 주요 API 기능과 사용 사례가 설명되어 있습니다.

게시자 보고 API는 REST 사양을 준수하고 JSON 형식을 지원합니다. 보고 API에 대해 문의하려면 secretKey의 API 키를 전송해야 합니다.

API 엔드포인트:

JSON 응답: 헤드가 "Content-Type:application/json" 및 "Accept:application/json"인 https://api.inmobi.com/v3.0/reporting/publisher

주요 기능은 아래와 같습니다.

API 키 생성

API key is a credential generated by InMobi.

API 키를 생성하려면 인모비 대시보드의 계정 설정 섹션을 사용하십시오.

Please make sure that you copy and save this API key with you for any further use as it will only be visible till you are active on the screen shown above. During future logins, API key will be hidden.

Note: In case your API key is compromised, it can be generated again. However, once you generate a new API key, the previous key will be invalidated immediately.

API 키 유효성 검사

In case you have multiple API keys with you and are not sure which one of them is active, you can validate them as shown below. Follow the steps detailed in the previous section to land on API key screen.

유효한 세션 요청

API 요청을 인증하려면 유효한 세션이 필요합니다. 세션은 발행 시간으로부터 24시간 동안 유효합니다. 24시간 동안 하나의 API 키로 최대 15번의 유효한 세션을 생성할 수 있습니다.

샘플 요청 1

curl -v https://api.inmobi.com/v1.0/generatesession/generate  
-H "userName:#######" 
-H "secretKey:########"
		

샘플 요청 2

curl -v https://api.inmobi.com/v1.0/generatesession/generate  
-H "userName:#######" 
-H "password:#########" 
-H "secretKey:########"
		

적어두다: 유효한 세션을 생성하기 위해 암호는 필수 항목이 아닙니다. 요청에 사용했다면 영향을받지 않습니다.

샘플 응답

JSON
{
"respList": [{
"sessionId": "b8************************d31942",
"accountId": "4028cb************************14",
"subAccounts": null
}],
"error": false,
"errorList": []
}
		

API 호출

모든 데이터가 GMT 시간대로 반환됩니다. 예를 들어, 이것은 노출 횟수를 가져오는 API 호출입니다.

샘플 요청

curl -v -X POST  
-H "Content-Type:application/json" 
-H "Accept:application/json" 
-H "accountId:14a************************9e"
-H "secretKey: ####" 
-H "sessionId: ###" 
-d  '{"reportRequest":{"metrics":["adImpressions"],"timeFrame":"2017-07-20:2017-07-30","groupBy":["date"], "filterBy":[{ "filterName":"adImpressions", "filterValue": "300" , "comparator":">"}]}}'
https://api.inmobi.com/v3.0/reporting/publisher
		

샘플 응답

{
"error": false,
"respList": [{
"adImpressions": 1786296,
"date": "2017-07-24 00:00:00"
}, {
"adImpressions": 1951438,
"date": "2017-07-25 00:00:00"
}, {
"adImpressions": 8062637,
"date": "2017-07-29 00:00:00"
}, {
"adImpressions": 11151057,
"date": "2017-07-30 00:00:00"
}, {
"adImpressions": 4190525,
"date": "2017-07-21 00:00:00"
}, {
"adImpressions": 10044183,
"date": "2017-07-27 00:00:00"
}, {
"adImpressions": 3881191,
"date": "2017-07-22 00:00:00"
}, {
"adImpressions": 9841295,
"date": "2017-07-20 00:00:00"
}, {
"adImpressions": 4605890,
"date": "2017-07-26 00:00:00"
}, {
"adImpressions": 6175605,
"date": "2017-07-28 00:00:00"
}, {
"adImpressions": 2247567,
"date": "2017-07-23 00:00:00"
}]
}
		

보고 세부 내용

다음은 지원되는 지표, 그룹화, 필터링 매개 변수입니다.

지표

매개 변수 설명
adRequests 모든 광고 요청 집계
adImpressions 렌더링된 모든 노출 집계
clicks 기록된 모든 클릭 집계
earnings 평균 수익
servedImpressions 모든 서비스된 노출 집계
costPerMille eCPM 값 (천 번 노출당 비용)
fillRate The fill rate value

그룹화

매개 변수 설명
country 지역별로 보고서 그룹화
requestSlot 배치 크기별로 보고서 그룹화(예: 480x320)
platform 운영 체제별로 보고서 그룹화
date 보고서가 집계된 날짜
account 계정별로 보고서 그룹화(게시자 계정 내 하위 계정)
inmobiAppId 앱 ID별로 보고서 그룹화(앱을 위한 모든 배치)
placement 배치

필터링

매개 변수 값 유형 설명 비교자
country 문자열 대상 국가로 필터. 예: "대한 민국" =
inmobiAppId Long 앱의 고유 식별자. 예: 14999472554## 앱 ID로 필터 =, IN
inmobiAppName 이름 앱 이름으로 필터. 예: "Horoscoper" =
placementId Long 앱 아래 배치를 위한 고유 식별자. 예: 1478496451110. 배치 ID로 필터. =
placementName 문자열 배치 이름으로 필터. 예: "기본 전면 배치" =
플랫폼 문자열 운영 체제로 필터. 예: IOS, ANDROID =, IN
earnings Long 총 수익으로 필터. 예: 100 >, <, =, >=, <=
adImpressions Long 렌더링된 노출로 필터. 예: 100 >, <, =, >=, <=

페이지 매김

페이지 매김은 요청의 결과 데이터시트가 잠재적으로 5000열 이상의 데이터가 될 경우 필요합니다. 당사는 모든 보고 API 호출에서 데이터 열을 5000개로 제한했습니다. 페이지 매김은 다음 매개 변수로 요청에서 수행할 수 있습니다.

  1. 오프셋(‘0’으로 시작)
  2. 길이(가져올 열의 개수, 5000개 미만이어야 함)

전체 데이터 세트를 가져오려면 이후 호출의 오프셋 값이 이전 호출에서 (오프셋 + 길이)의 합이어야 합니다. 이러한 마지막 호출은 "길이"보다 적거나 동일한 열을 가져와야 합니다.

예: 3개의 레코드 가져오기

요청

curl -v -X POST 
-H "Content-Type:application/json" 
-H "Accept:application/json" 
-H "accountId:4028cb************************14" 
-H "secretKey: ####" 
-H "sessionId: ####”
-d  '{"reportRequest":{"metrics":["clicks"],"timeFrame":"2017-07-20:2017-07-30","groupBy":["country"],"offset": 0, "length": 3}}'   
https://api.inmobi.com/v3.0/reporting/publisher
		

응답

{
"error":false,
"respList":[
{"clicks":8,"country":"Finland","countryId":105},
{"clicks":0,"country":"Suriname","countryId":290},
{"clicks":0,"country":"Belarus","countryId":142}
]
}
		

참고:

상기 예에서, 13000개의 레코드를 가져오려면 오프셋과 길이 값이 다음과 같은 3개의 보고 호출이 필요합니다.

1st call : offset = 0, length = 5000
2nd call : offset = 5000, length = 5000
3rd call : offset = 10000, length = 3000
		

예제

샘플 1: 계정의 클릭 수와 수익

요청

curl -v -X POST  
-H "Content-Type:application/json" 
-H "Accept:application/json" 
-H "accountId:14a************************9e"	
-H "secretKey: ####" 
-H "sessionId: ####”
-d  '{"reportRequest":{"metrics":["earnings","clicks"],"timeFrame":"2017-07-20:2017-07-30"}}'
https://api.inmobi.com/v3.0/reporting/publisher
		

응답

{
"error": false,
"respList": [{
"clicks": 3901721,
"earnings": 2076.485
}]
}
		

샘플 2: 날짜별 계정 그룹의 클릭 수와 수익

요청

 curl -v -X POST 
 -H "Content-Type:application/json" 
-H "Accept:application/json"
 -H "accountId:4028cb************************14
-H "secretKey: ####" 
-H "sessionId: ####”
-d  '{"reportRequest":{"metrics":["earnings","clicks"],"groupBy":["date"],"timeFrame":"2017-07-20:2017-07-30"}}'  
https://api.inmobi.com/v3.0/reporting/publisher
		

응답

{
"error": false,
"respList": [{
"clicks": 131833,
"date": "2017-07-24 00:00:00",
"earnings": 228.166
}, {
"clicks": 145627,
"date": "2017-07-25 00:00:00",
"earnings": 231.309
}, {
"clicks": 351536,
"date": "2017-07-29 00:00:00",
"earnings": 85.275
}, {
"clicks": 563490,
"date": "2017-07-30 00:00:00",
"earnings": 148.264
}, {
"clicks": 318369,
"date": "2017-07-21 00:00:00",
"earnings": 313.458
}, {
"clicks": 773215,
"date": "2017-07-27 00:00:00",
"earnings": 76.041
}, {
"clicks": 295016,
"date": "2017-07-22 00:00:00",
"earnings": 276.296
}, {
"clicks": 471678,
"date": "2017-07-20 00:00:00",
"earnings": 314.018
}, {
"clicks": 350179,
"date": "2017-07-26 00:00:00",
"earnings": 116.173
}, {
"clicks": 332405,
"date": "2017-07-28 00:00:00",
"earnings": 69.499
}, {
"clicks": 168373,
"date": "2017-07-23 00:00:00",
"earnings": 217.987
}]
}
		

샘플 3: 특정 앱 ID의 광고 요청 수

요청

curl -v -X POST  
-H "Content-Type:application/json" 
-H "Accept:application/json" 
-H "accountId:4028cb************************14
-H "secretKey: ####" 
-H "sessionId: ####”
-d  '{"reportRequest":{"metrics":["adRequests"],"timeFrame":"2017-07-20:2017-07-30","filterBy":[{ "filterName":"inmobiAppId", "filterValue": "1489455016170" , "comparator":"="}]}}' 
https://api.inmobi.com/v3.0/reporting/publisher
		

응답

{
"error": false,
"respList": [{
"adRequests": 179623
}]
}
		

샘플 4: 특정 앱 이름의 수익

요청

curl -v -X POST  
-H "Content-Type:application/json" 
-H "Accept:application/json"
 -H "accountId:4028cb************************14
-H "secretKey: ####" 
-H "sessionId: ####”
-d  '{"reportRequest":{"metrics":["earnings"],"timeFrame":"2017-07-20:2017-07-30", "filterBy":[{ "filterName":"inmobiAppName", "filterValue": "pujia" , "comparator":"="}]}}'   
https://api.inmobi.com/v3.0/reporting/publisher
		

응답

{
"error": false,
"respList": [{
"earnings": 5.282
}]
}
		

샘플 5: 국내 수익

요청

curl -v -X POST 
-H "Content-Type:application/json" 
-H "Accept:application/json" 
-H "accountId:4028cb************************14
-H "secretKey: ####" 
-H "sessionId: ####”
-d  '{"reportRequest":{"metrics":["earnings"],"timeFrame":"2017-07-20:2017-07-30","groupBy":["country"]}}'   
https://api.inmobi.com/v3.0/reporting/publisher
		

응답

{
"error": false,
"respList": [{
"country": "Republic Of Moldova",
"countryId": 269,
"earnings": 0
}, {
"country": "Macau",
"countryId": 232,
"earnings": 0.002
}, {
"country": "Burma (Myanmar)",
"countryId": 155,
"earnings": 0.005
}, {
"country": "Argentina",
"countryId": 135,
"earnings": 0
}, {
"country": "Philippines",
"countryId": 67,
"earnings": 0
}, {
"country": "Aruba",
"countryId": 137,
"earnings": 0
}, {
"country": "India",
"countryId": 11,
"earnings": 0.003
}, {
"country": "Vietnam",
"countryId": 109,
"earnings": 0
}, {
"country": "China",
"countryId": 164,
"earnings": 2075.454
}, {
"country": "Mozambique",
"countryId": 250,
"earnings": 0
}, {
"country": "Cameroon",
"countryId": 158,
"earnings": 0
}, {
"country": "Canada",
"countryId": 101,
"earnings": 0.004
}, {
"country": "United Kingdom",
"countryId": 46,
"earnings": 0.043
}, {
"country": "East Timor",
"countryId": 177,
"earnings": 0
}, {
"country": "Egypt",
"countryId": 50,
"earnings": 0
}, {
"country": "Mongolia",
"countryId": 246,
"earnings": 0
}, {
"country": "Peru",
"countryId": 265,
"earnings": 0
}, {
"country": "New Zealand",
"countryId": 119,
"earnings": 0
}, {
"country": "Mauritius",
"countryId": 242,
"earnings": 0
}, {
"country": "Hong Kong",
"countryId": 207,
"earnings": 0.007
}, {
"country": "Belarus",
"countryId": 142,
"earnings": 0
}, {
"country": "Antigua And Barbuda",
"countryId": 134,
"earnings": 0
}, {
"country": "Hungary",
"countryId": 120,
"earnings": 0
}, {
"country": "Kazakhstan",
"countryId": 217,
"earnings": 0
}, {
"country": "Greece",
"countryId": 113,
"earnings": 0
}, {
"country": "Iran, Islamic Republic Of",
"countryId": 209,
"earnings": 0
}, {
"country": "Austria",
"countryId": 110,
"earnings": 0
}, {
"country": "Singapore",
"countryId": 74,
"earnings": 0.002
}, {
"country": "Colombia",
"countryId": 165,
"earnings": 0
},
		

오류 코드

아래 표에 오류 코드와 해당 설명이 정리되어 있습니다.

오류 코드 설명
1000 게시자 보고서에 예상하지 않은 오류가 있습니다.
1001 요청 객체가 유효하지 않습니다.
1002 요청에 유효하지 않은 오프셋이 포함되어 있습니다.
1003 요청에 유효하지 않은 길이가 포함되어 있습니다.
1004 유효하지 않은 클라이언트 요청입니다. 클라이언트 요청의 형식이 올바른지 확인하십시오.
2000 요청에서 계정 ID가 누락되고 없습니다. 요청에 계정 ID를 전달하십시오.
2001 필터에 의해 전달된 계정 아이디 중 하나 이상이 유효하지 않거나 데이터에 액세스할 수 있는 권한이 없습니다. [유효하지 않은 계정 ID 목록].
2021 요청에 유효하지 않은 지표가 포함되어 있습니다. [유효하지 않은 지표 목록].
2022 요청에 유효하지 않은 그룹 기준이 포함되어 있습니다. [유효하지 않은 groupBy 목록].
2023 요청에 유효하지 않은 필터 기준이 포함되어 있습니다. [유효하지 않은 필터 목록].
2024 [유효하지 않은 필터 목록]에 유효하지 않은 비교자가 포함되어 있습니다. 비교자에 값 중 하나가 있어야 합니다. [유효한 필터 목록].
2025 요청에 국가 기준 필터 값으로 유효하지 않은 필터가 포함되어 있습니다. [유효하지 않은 국가 목록].
2027 시작 날짜가 종료 날짜 이후일 수 없습니다.
2028 요청 시작 날짜 및/또는 종료 날짜에 전달된 날짜의 형식이 올바르지 않습니다.
2029 요청에 유효하지 않은 정렬 기준이 포함되어 있습니다. [유효하지 않은 orderBy 목록]. 지표 또는 그룹 기준에 전달된 필드에만 결과를 정렬할 수 있습니다.
2030 요청에 지정된 정렬 유형이 올바르지 않습니다. 올바른 값은 'asc'와 'desc'입니다.
2031 다음 필터가 필터 값이 지정되지 않은 채 요청에 포함되어 있습니다. [유효하지 않은 필터 목록]. 필터 값을 지정하십시오.
2032 요청에 전달된 시간 프레임 형식이 올바르지 않습니다. 올바른 형식은 시작 날짜:종료 날짜(yyyy-MM-dd:yyyy-MM-dd)입니다.
2033 요청에 제조업체 기준 필터 값으로 유효하지 않은 필터가 포함되어 있습니다. [유효하지 않은 제조업체 목록].
2034 요청에 플랫폼 기준 필터 값으로 유효하지 않은 필터가 포함되어 있습니다. [유효하지 않은 플랫폼 목록].
2036 시작 날짜 또는 종료 날짜가 오늘 이후일 수 없습니다.

FAQ

1. 수익의 통화 단위는 무엇입니까?

수익은 미국 달러로 보고됩니다.

2. 세션당 허용되는 최대 요청 수는 얼마입니까?

세션당 허용되는 최대 요청 수에는 제한이 없습니다.

3. 하루에 세션당 허용되는 최대 요청 수는 얼마입니까?

하루에 최대 15번의 세션을 가져올 수 있습니다.

4. 문제가 발생하거나 실행이 중지된 경우, 복구된 데이터에 액세스하는 ETA는 어느 정도입니까?

일반적인 ETA는 문제 감지 후 24~48시간입니다.

5. 데이터 지연 시간은 얼마입니까?

일반적인 데이터 지연은 4~5시간입니다. 또한, 인모비는 GMT를 사용합니다.

보고 API 1.1에서 마이그레이션

인모비 게시자 보고 API 1.1에서 마이그레이션할 경우 다음 필드는 사용하지 않는 것이 좋습니다.

지표 costPerClick, CTR, servedImpressions
GroupBy site, refTag, manufacturer, carrier
필터 accountId, siteId, siteName, carrier, manufacturer, refTag, requestedSlotId, platformId, clicks, CostPerClick, CTR

참고:

여기서 인모비 게시자 보고 API 1.1에 액세스하십시오.