• API Reference

Revenue Report

The Revenue Report allows you to view the revenue generated by users who installed the app or opened a deep link during the analysis period. Various revenue metrics and filters are available to create a customized report.

Additionally, there are no rate limits, allowing you to generate reports as needed.


Request Report

POST

https://api.airbridge.io/reports/api/v3/apps/{app_name}/revenue/query

Request a Revenue Report.

rate limit: There is no specific limit for normal usage. However, if excessive requests that may threaten service stability are detected, a temporary 429 Too Many Requests response may be returned.

Request

Headers

Accept-Language
string

You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

Content-Type
string

Represents the media type of the resource. Defaults to application/json.

Authorization
string

The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

Path Params

app_name
Requiredstring

Airbridge App Name. (Unique ID)

Body Params

from
Requiredstring

The start date of the report data to request.

  • The date must be in the format 'YYYY-MM-DD'

  • This date must correspond with the timezone set in the Airbridge app. 

  • Future dates are not permitted.

to
Requiredstring

The end date of the report data to request.

  • The date must be in the format 'YYYY-MM-DD'

  • This date must correspond with the timezone set in the Airbridge app.

  • The system only accepts dates up the current date. The time period available for querying is up to 92 days.

cohorts
object[]

Only one cohort can be set up.

You can see an example of cohort code here.

groupBy
Requiredobject

Allows you to set a group by to divide the numbers for the metric you want to see.

granularity
Requiredenum

The analytics interval period.

ENUM VALUES
day

Analyze the data by day.

week

Analyze the data by week. Calculated in 7 day intervals from the start date.

month

Analyze the data by month. Calculated the same month from the start date until the corresponding date in the subsequent month. For example, given a start date of March 10, the same month would be pretended until April 10.

intervalsPeriod
integer

The maximum number of intervals, or time ranges, by granularity.

  • If the granularity is day, week, or month, the default value is 30, 11, or 5, respectively.

  • If the granularity is day, week, or month, the maximum value is 120, 52, or 36, respectively. The minimum values are all 0.

  • The result includes a “0th” interval.

startEvents
Requiredenum[]

The event that initiates a User Journey in the time period set.

Users who do not trigger the set event are not analyzed in the report.

ENUM VALUES
app_install

Install (App). Install events that occurred within the selected time period.

app_deeplink_open

Deeplink Open (App). Deeplink Open events that occurred within the selected time period.

app_deeplink_pageview

Deeplink Pageview (App). Deeplink Pageview events that occurred within the selected time period.

app_sign_up

Sign-up (App). Sign-up events that occurred within the selected time period.

app_sign_in

Sign-in (App). Sign-in events that occurred within the selected time period.

returnEvents
Requiredenum[]

An in-app event performed by the user after performing a Start Event.

It is possible to set up multiple return events.

ENUM VALUES
app_order_complete

Order Complete (App). Order Complete event performed within the selected time period.

app_first_order_complete

First Order Complete (App). First Order Complete event performed within the selected time period.

app_ad_impression

Ad Impression (App). Ad Impression event performed within the selected time period.

app_ad_click

Ad Click (App). Ad Click event performed within the selected time period.

app_subscribe

Subscribe (App). Subscribe event performed within the selected time period.

metric
Requiredenum

Report "Metrics".

ENUM VALUES
app_revenue

Revenue(App). The revenue generated by the users who performed the Start Event and the Return Event. (In local currency) Support cumulative, on-day aggregation type.

app_user_count

User Count (App). The total number of unique users who performed revenue events. Support cumulative, on-day aggregation type.

app_event_count

Event Count (App). The total number of revenue events. Support cumulative, on-day aggregation type.

app_roas

ROAS (App). The return on ad spend of the users who performed the Start Event and the Retrun Event. (In local currency) Support cumulative aggregation type.

app_arpu

ARPU (App). The average revenue per user who performed the Start Event. (In local currency) Support cumulative aggregation type.

app_arppu

ARPPU (App). The average revenue per paying user who performed the Start Event. (In local currency) Support cumulative aggregation type.

aggregationType
Requiredenum

View types for the report. [Reference]

ENUM VALUES
cumulative

Cumulative aggregation. Accumulate numbers from the first day of the analysis period (Day 0) to the last day (Day N).

on-day

On Day (N-Day). View the isolated data of each day.

filters
Requiredobject[]

The filter for providing 'group by' items.

sorts
Requiredobject[]

Sort report data by 'Group By' or 'Metric'.

resultSpec
object

The format of the result.

Request
curl -X POST 'https://api.airbridge.io/reports/api/v3/apps/{app_name}/revenue/query' \ -H 'Accept-Language: ko' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \ -d '{"from":"2022-11-04","to":"2022-11-11","groupBy":{"fields":["channel"]},"granularity":"day","intervalsPeriod":30,"startEvents":["app_install"],"returnEvents":["app_order_complete"],"metric":"app_revenue","aggregationType":"cumulative","filters":[{"field":"campaign","filterType":"IN","values":["App"]}],"sorts":[{"fieldName":"totalRevenue","isAscending":true}],"resultSpec":{"csv":{"includesTotal":true}}}'
Payload
{ "from": "2022-11-04", "to": "2022-11-11", "groupBy": { "fields": [ "channel" ] }, "granularity": "day", "intervalsPeriod": 30, "startEvents": [ "app_install" ], "returnEvents": [ "app_order_complete" ], "metric": "app_revenue", "aggregationType": "cumulative", "filters": [ { "field": "campaign", "filterType": "IN", "values": [ "App" ] } ], "sorts": [ { "fieldName": "totalRevenue", "isAscending": true } ], "resultSpec": { "csv": { "includesTotal": true } }}

Response

200SUCCESS

400ERROR

Response
{ "data": { "taskId": "5e286bd4-b4b1-4c04-8f6a-asdf1234zxcv" }}
Response
{}

Get Report

GET

https://api.airbridge.io/reports/api/v3/apps/{app_name}/revenue/query/{task_id}

The status of an asynchronous request can be checked with task.status in the API request result.

Response Notification

If certain was was removed, refer to the reason in notification[0].code.

Request

Headers

Accept-Language
string

You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

Content-Type
string

Represents the media type of the resource. Defaults to application/json.

Authorization
string

The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

Path Params

app_name
Requiredstring

Airbridge App Name. (Unique ID)

task_id
Requiredstring

The task_id returned by the result of the 'Request Report' API.

Query Params

skip
number

The number of rows to be skipped.

Get results except the first N number of rows.

The default is 0.

size
number

A limit on the number of rows to be returned.

Get results of the next N rows after those skipped by the skip option.

The default is 50.

e.g.) ?skip=200&size=100

In this case, it returns the rows 201 to 300. (skips first 200 rows, gets next 100 rows)

Request
curl -X GET 'https://api.airbridge.io/reports/api/v3/apps/{app_name}/revenue/query/{task_id}?skip=0&size=50' \ -H 'Accept-Language: ko' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

Response

200SUCCESS

404ERROR

Response
{ "data": { "stats": { "rows": [ { "rows": [ { "date": "2021-11-01", "total": { "totalCost": { "value": 0 }, "totalRevenue": { "value": 10 }, "totalUniqueUsers": { "value": 1, "isMasked": true } }, "values": [ { "value": 1, "isMasked": false }, { "value": 2, "isMasked": false }, { "value": 3, "isMasked": false }, { "value": 4, "isMasked": false } ] } ], "total": { "rows": [ { "value": 1, "isMasked": false }, { "value": 2, "isMasked": false }, { "value": 3, "isMasked": false }, { "value": 4, "isMasked": false } ], "totalCost": { "value": 0 }, "totalRevenue": { "value": 10.45 }, "totalUniqueUsers": { "value": 1, "isMasked": false } }, "metadata": [ "<groupBy>" ] } ] }, "status": "SUCCESS", "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d", "endedAt": "2022-01-17T19:10:00.286939+09:00", "hasNext": false, "metadata": { "totalCount": 48 } }, "notification": [ { "code": "AGG_DATA_MASKING_BY_FACEBOOK", "type": "info", "message": "some data is masked by facebook privacy policy." } ]}

Get Metadata (Metric)

GET

https://api.airbridge.io/dataspec/v1/apps/{app_name}/revenue-report/metrics

Query the available report metrics. [Note]

Request

Headers

Accept-Language
string

You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

Content-Type
string

Represents the media type of the resource. Defaults to application/json.

Authorization
string

The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

Path Params

app_name
Requiredstring

Airbridge App Name. (Unique ID)

Request
curl -X GET 'https://api.airbridge.io/dataspec/v1/apps/{app_name}/revenue-report/metrics' \ -H 'Accept-Language: ko' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

Response

200SUCCESS

404ERROR

There is an error in the field you entered, or there is no such resource.

Response
{ "data": [ { "name": "Metric", "metrics": [ { "key": "app_revenue", "name": "Revenue", "description": "Sum of value generated from revenue events", "valueType": "number", "aggregationType": [ "cumulative", "on-day" ] }, { "key": "app_user_count", "name": "User Count", "description": "The total number of unique users who performed revenue events", "valueType": "integer", "aggregationType": [ "on-day", "unique-cumulative" ] } ] }, { "name": "Sub Metric", "metrics": [ { "key": "customer_acquisition_cost", "name": "CAC", "description": "Customer Acquisition Cost; the average cost to acquire a user who performed Start Event within the set date range<br>Total Cost/Users", "valueType": "number", "aggregationType": null }, { "key": "start_event_users", "name": "Users", "description": "The number of users who performed Start Event to open the app within the set date range", "valueType": "integer", "aggregationType": null } ] } ]}
Response
{ "type": "about:blank", "title": "Not Found", "status": 404, "traceId": "1-000000-000000000000000"}

Get Metadata (GroupBy)

GET

https://api.airbridge.io/dataspec/v1/apps/{app_name}/revenue-report/groupbys

Gets a list of available report groupbys. [Note]

Request

Headers

Accept-Language
string

You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

Content-Type
string

Represents the media type of the resource. Defaults to application/json.

Authorization
string

The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

Path Params

app_name
Requiredstring

Airbridge App Name. (Unique ID)

Request
curl -X GET 'https://api.airbridge.io/dataspec/v1/apps/{app_name}/revenue-report/groupbys' \ -H 'Accept-Language: ko' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

Response

200SUCCESS

404ERROR

There is an error in the field provided, or there is no such resource.

Response
{ "data": [ { "name": "Event Details", "fields": [ { "key": "is_first_event_per_user_id", "name": "Is First Event per User ID", "description": "Boolean type data to show whether the event has happened in the past. (per user id)\n- true: First Event. \n- false: Not the First Event\n\n(Both Web/App Event Available)", "example": "true", "isFilter": true, "type": "boolean", "isCost": false }, { "key": "is_first_event_per_device_id", "name": "Is First Event per Device ID", "description": "Boolean type data to show whether the event has happened in the past. (per airbridge device id)\n- true: First Event. \n- false: Not the First Event\n\n(App Event Available Only)", "example": "true", "isFilter": true, "type": "boolean", "isCost": false } ] }, { "name": "Touchpoint", "fields": [ { "key": "channel", "name": "Channel", "description": "The media source of the touchpoint.", "example": "moloco", "isFilter": true, "type": "string", "isCost": true }, { "key": "campaign", "name": "Campaign", "description": "The campaign that generated the touchpoint. The campaign name entered in SAN or collected by the campaign parameter of the tracking link.", "example": "2018_summer_campaign", "isFilter": true, "type": "string", "isCost": true } ] } ]}
Response
{ "type": "about:blank", "title": "Not Found", "status": 404, "traceId": "1-000000-000000000000000"}

Get Metadata (Event)

GET

https://api.airbridge.io/dataspec/v1/apps/{app_name}/revenue-report/events

Gets a list of available report events.[Note]

Request

Headers

Accept-Language
string

You can specify the language to use for API requests and responses. It follows the ISO-639-1 format.

Content-Type
string

Represents the media type of the resource. Defaults to application/json.

Authorization
string

The key value to use for API requests. Instructions for getting API keys are in "how to generate API Keys".

Path Params

app_name
Requiredstring

Airbridge App Name. (Unique ID)

Request
curl -X GET 'https://api.airbridge.io/dataspec/v1/apps/{app_name}/revenue-report/events' \ -H 'Accept-Language: ko' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}'

Response

200SUCCESS

404ERROR

There is an error in the field provided, or there is no such resource.

Response
{ "data": [ { "name": "Return Event", "events": [ { "subGroup": "App Standard Event", "key": "app_first_order_complete", "name": "First Order Complete (App)", "description": "First Order Complete (App) event performed by users who performed the start event within the set date range" }, { "subGroup": "App Standard Event", "key": "app_order_complete", "name": "Order Complete (App)", "description": "Order Complete (App) event performed by users who performed the start event within the set date range" } ] }, { "name": "Start Event", "events": [ { "subGroup": "", "key": "app_install", "name": "Install (App)", "description": "Install occurred within the set date range" }, { "subGroup": "", "key": "app_deeplink_open", "name": "Deeplink Open (App)", "description": "Deeplink Open occurred within the set date range" } ] } ]}
Response
{ "type": "about:blank", "title": "Not Found", "status": 404, "traceId": "1-000000-000000000000000"}