인모비 게시자 보고 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 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.
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": []
}
모든 데이터가 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개로 제한했습니다. 페이지 매김은 다음 매개 변수로 요청에서 수행할 수 있습니다.
전체 데이터 세트를 가져오려면 이후 호출의 오프셋 값이 이전 호출에서 (오프셋 + 길이)의 합이어야 합니다. 이러한 마지막 호출은 "길이"보다 적거나 동일한 열을 가져와야 합니다.
예: 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 | 시작 날짜 또는 종료 날짜가 오늘 이후일 수 없습니다. |
1. 수익의 통화 단위는 무엇입니까?
수익은 미국 달러로 보고됩니다.
2. 세션당 허용되는 최대 요청 수는 얼마입니까?
세션당 허용되는 최대 요청 수에는 제한이 없습니다.
3. 하루에 세션당 허용되는 최대 요청 수는 얼마입니까?
하루에 최대 15번의 세션을 가져올 수 있습니다.
4. 문제가 발생하거나 실행이 중지된 경우, 복구된 데이터에 액세스하는 ETA는 어느 정도입니까?
일반적인 ETA는 문제 감지 후 24~48시간입니다.
5. 데이터 지연 시간은 얼마입니까?
일반적인 데이터 지연은 4~5시간입니다. 또한, 인모비는 GMT를 사용합니다.
인모비 게시자 보고 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에 액세스하십시오.