Reporting API

Current stable version: 1.0.0

Authentication

All requests require a token field in the request body. Contact your Bidease manager to obtain your seller token or get it from Bidease UI.

Endpoint

POST https://monetize-api.bidease.com/api/v1/s2s/seller/stats?format={format}
Query paramRequiredValuesDescription
formatYesjson, csvResponse format

Request body

{
  "token": "your_seller_token",
  "filter": {
    "fromDate": "2026-02-01T00:00:00Z",
    "toDate": "2026-02-28T23:59:59Z",
    "bundleList": [],
    "operationSystemList": [],
    "groupByList": ["date"]
  }
}

Filters

FieldTypeRequiredDefaultDescription
fromDatestringYesStart date (inclusive)
toDatestringYesEnd date (inclusive)
bundleListstring[]No[]Filter by bundle names. Empty = all
operationSystemListstring[]No[]Filter by OS. Empty = all
groupByListstring[]Yes["date"]Dimensions to group results by

OS values

ios, android, windows, web

GroupBy dimensions

ValueDescription
dateDate
countryCountry
inventoryTypeInventory Type
adPlacementAd placement name
bundleBundle identifier
operationSystemOperating system
appNameApp name
storeIDStore ID

Inventory Type values

interstitial, rewarded, banner, native, mrec


Response

Metrics (always present)

FieldTypeDescription
impressionsnumberImpression count
revenuenumberRevenue in USD
ecpmnumbereCPM in USD
clicksnumberClick count

Dimension fields are included only when requested via groupByList.


Examples

Basic — daily stats

curl -X POST "https://monetize-api.bidease.com/api/v1/s2s/seller/stats?format=json" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "your_token",
    "filter": {
      "fromDate": "2026-02-01T00:00:00Z",
      "toDate": "2026-02-28T23:59:59Z",
      "groupByList": ["date"]
    }
  }'
{
  "bundleStats": [
    { "date": "2026-02-01T00:00:00", "impressions": 15000, "revenue": 45.50, "ecpm": 3.03, "clicks": 120 },
    { "date": "2026-02-02T00:00:00", "impressions": 14500, "revenue": 43.50, "ecpm": 3.00, "clicks": 110 }
  ]
}

Multiple dimensions

curl -X POST "https://monetize-api.bidease.com/api/v1/s2s/seller/stats?format=json" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "your_token",
    "filter": {
      "fromDate": "2026-02-01T00:00:00Z",
      "toDate": "2026-02-28T23:59:59Z",
      "groupByList": ["date", "inventoryType", "bundle"]
    }
  }'
{
  "bundleStats": [
    { "date": "2026-02-01T00:00:00", "inventoryType": "interstitial", "bundle": "com.example.app", "impressions": 15000, "revenue": 45.50, "ecpm": 3.03, "clicks": 120 },
    { "date": "2026-02-01T00:00:00", "inventoryType": "rewarded", "bundle": "com.example.app", "impressions": 8000, "revenue": 32.00, "ecpm": 4.00, "clicks": 65 }
  ]
}

With filters

curl -X POST "https://monetize-api.bidease.com/api/v1/s2s/seller/stats?format=json" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "your_token",
    "filter": {
      "fromDate": "2026-02-01T00:00:00Z",
      "toDate": "2026-02-28T23:59:59Z",
      "bundleList": ["com.example.app"],
      "operationSystemList": ["android"],
      "groupByList": ["date", "adPlacement"]
    }
  }'
{
  "bundleStats": [
    { "date": "2026-02-01T00:00:00", "adPlacementName": "Main Banner", "impressions": 10000, "revenue": 30.00, "ecpm": 3.00, "clicks": 80 },
    { "date": "2026-02-01T00:00:00", "adPlacementName": "Rewarded Video", "impressions": 5000, "revenue": 20.00, "ecpm": 4.00, "clicks": 40 }
  ]
}

CSV export

curl -X POST "https://monetize-api.bidease.com/api/v1/s2s/seller/stats?format=csv" \
  -H "Content-Type: application/json" \
  -d '{
    "token": "your_token",
    "filter": {
      "fromDate": "2026-02-01T00:00:00Z",
      "toDate": "2026-02-28T23:59:59Z",
      "groupByList": ["date", "bundle"]
    }
  }' -o stats.csv

The CSV file is named bidease-{sellerName}-stats.csv.

date,bundle,impressions,revenue,ecpm,clicks
2026-02-01T00:00:00.0000000,com.example.app,15000,45.50,3.03,120
2026-02-01T00:00:00.0000000,com.another.app,3200,12.80,4.00,28
2026-02-02T00:00:00.0000000,com.example.app,14500,43.50,3.00,110


Common Response Fields

Every API response includes the following metadata fields

FieldTypeRequiredDescription
apiVersionstringYesAPI version. Use to track breaking changes and ensure client compatibility.
requestIDstringYesUnique identifier for the request. Use for debugging and support inquiries.
responseStatusintYesStatus code: 0 = success, non-zero = error.
responseStatusTextstringYesHuman-readable status (e.g., "success", "authError").
messagestringNoAdditional error details when responseStatus is non-zero.
errorListErrorEntityNoList of specific validation or processing errors, if any.

ErrorEntity

FieldTypeDescription
fieldstringThe property path that caused the error (e.g., filter.fromDate).
messagestringHuman-readable error description.
codestringValidation rule identifier (e.g., "notEmpty", "greaterThan").
{                                                                                    
    "apiVersion": "1.0.0",
    "requestID": "4c4d176c-23e6-4a63-931d-da9121651a87",
    "responseStatus": 10,
    "responseStatusText": "validationError",                                        
    "errorList": [
      {
        "field": "filter.fromDate",
        "message": "'From Date' must not be empty.",                                   
        "code": "notEmpty"
      }
    ]
  }