• API Reference

Actuals Report

Actuals Report provides customization features for the metrics and data you intend to analyze.

Using the various data fields provided by Airbridge, you can customize the report in all forms such as subdividing data into specific criteria, adding metrics on granular criteria, or applying filters.


Request Report

POST

https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query

Request Actuals 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
string

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 400 days.

groupBys
Requiredstring[]

Report "Group By".

'Group By' is necessary when seeking a more detailed view in reports. The complete list of GroupBys that can be selected in the Actuals report can be checked through the Get Metadata (GroupBy) API

The maximum threshold is 10.

metrics
Requiredstring[]

Report "Metrics".

Various ad performance data can be examined through metrics. The complete list of metrics that can be selected in the Actuals report can be checked through the Get Metadata (Metric) API.

The maximum threshold is 20.

filters
Requiredobject[]

The filter for providing 'group by' items.

sorts
Requiredobject[]

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

option
object
Request
curl -X POST 'https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query' \ -H 'Accept-Language: ko' \ -H 'Content-Type: application/json' \ -H 'Authorization: Bearer {AIRBRIDGE-API-TOKEN}' \ -d '{"from":"2022-11-04","groupBys":["event_source","event_type","event_category"],"metrics":["app_events"],"filters":[{"dimension":"channel","filterType":"IN","values":["App"]}],"sorts":[{"fieldName":"event_type","isAscending":true}]}'
Payload
{ "from": "2022-11-04", "groupBys": [ "event_source", "event_type", "event_category" ], "metrics": [ "app_events" ], "filters": [ { "dimension": "channel", "filterType": "IN", "values": [ "App" ] } ], "sorts": [ { "fieldName": "event_type", "isAscending": true } ]}

Response

200SUCCESS

task.status

404ERROR

Response
{ "task": { "status": "RUNNING", "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d" }}
Response
{ "type": "about:blank", "title": "Not Found", "status": 404, "traceId": "1-000000-000000000000000"}

Get Report

GET

https://api.airbridge.io/reports/api/v7/apps/{app_name}/actuals/query/{task_id}

Request status

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

Response Notification

If certain data was removed or masked during aggregation (masking), refer to the 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 100.

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

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

keyword
string

The keywords to filter on GroupBy in the results.

viewFormat
booleannullable

Determines whether to include format information used by the dashboard to represent values for the Actuals Report.

If it set true, the format information (such as Meta ads masking) is included in the viewFormat field in the form of "{value}", "{value} +α", "Privacy Block", etc.

The default is false.

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

Response

200SUCCESS

Returns the result when data aggregation is complete. If status is SUCCESS, sends it to actuals with data, metadata, messages, etc.

200SUCCESS

The asynchronous request is being processed.

The API can be polled periodically to see the results, and the status of the request can be checked with task.status.

Response
{ "task": { "status": "SUCCESS", "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d", "endedAt": "2022-10-01T00:00:00+00:00" }, "actuals": { "data": { "rows": [ { "values": { "app_installs": { "value": 100, "isMasked": false, "viewFormat": "{value}" } }, "groupBys": [ "<groupBy>" ] }, { "values": { "app_installs": { "value": 13, "isMasked": true, "viewFormat": "{value} +α" } }, "groupBys": [ "<groupBy>" ] } ] }, "metadata": { "rowCount": 2 } }, "pagination": { "hasNext": true, "totalCount": 200 }, "notifications": []}
Response
{ "task": { "status": "RUNNING", "taskId": "5e286bd4-b4b1-4c04-8f6a-670dc7ce637d" }}

Get Metadata (Metric)

GET

https://api.airbridge.io/dataspec/v2/apps/{app_name}/actual-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/v2/apps/{app_name}/actual-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": [ { "fields": [ { "key": "touchpoints_impression_click", "name": "Touchpoints (Impression+click)", "description": "Impression 수와 Click 수의 합" }, { "key": "impressions", "name": "Impressions", "description": "Impression 수" }, { "key": "clicks", "name": "Clicks", "description": "Click 수" } ], "groupName": "Touchpoint", "parentGroupName": "Touchpoint" }, { "fields": [ { "key": "app_events", "name": "Events (App)", "description": "앱에서 발생한 이벤트 수" }, { "key": "app_event_value", "name": "Event 값 (App)", "description": "앱에서 발생한 이벤트 값의 합" } ], "groupName": "App Event", "parentGroupName": "App" }, { "fields": [ { "key": "app_installs", "name": "Installs (App)", "description": "Install 수" }, { "key": "app_first_installs", "name": "First Installs (App)", "description": "최초로 설치된 Install 수" } ], "groupName": "App Install", "parentGroupName": "App" }, { "fields": [ { "key": "app_sign_up", "name": "회원가입 (App)", "description": "앱에서 발생한 회원가입 이벤트 수" }, { "key": "app_sign_in", "name": "로그인 (App)", "description": "앱에서 로그인 이벤트 수" }, { "key": "app_sign_out", "name": "로그아웃 (App)", "description": "앱에서 로그아웃 이벤트 수" } ], "groupName": "App Standard Event", "parentGroupName": "App" } ]}
Response
{ "type": "about:blank", "title": "Not Found", "status": 404, "traceId": "1-000000-000000000000000"}

Get Metadata (GroupBy)

GET

https://api.airbridge.io/dataspec/v2/apps/{app_name}/actual-report/fields

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/v2/apps/{app_name}/actual-report/fields' \ -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": [ { "fields": [ { "key": "event_date", "name": "Event Date", "example": "2019-05-31", "description": "이벤트 발생 날짜와 시간 (YYYY-MM-DD)", "serveToFilter": true }, { "key": "event_year", "name": "Event Year", "example": "2019", "description": "이벤트 발생 년도", "serveToFilter": true }, { "key": "event_month", "name": "Event Month", "example": "04", "description": "이벤트 발생 월", "serveToFilter": true } ], "groupName": "Event Datetime", "parentGroupName": null }, { "fields": [ { "key": "event_source", "name": "Event Source", "example": "App", "description": "Event가 발생한 소스", "serveToFilter": true }, { "key": "event_type", "name": "Event Type", "example": "Impression", "description": "Event 타입", "serveToFilter": true }, { "key": "event_category", "name": "Event Category", "example": "Move to App Store (Link)", "description": "Event 카테고리", "serveToFilter": true } ], "groupName": "Event Hierarchy", "parentGroupName": null }, { "fields": [ { "key": "channel", "name": "Channel", "example": "moloco", "description": "Touchpoints 와 Conversion이 발생한 Channel\n", "serveToFilter": true }, { "key": "campaign", "name": "Campaign", "example": "2018_summer_campaign", "description": "Touchpoints 와 Conversion이 발생한 Campaign \n(SAN Publisher 대시보드에서 입력한 값 또는 Tracking Link의 캠페인 파라미터 값)", "serveToFilter": true } ], "groupName": "Touchpoint", "parentGroupName": null } ]}
Response
{ "type": "about:blank", "title": "Not Found", "status": 404, "traceId": "1-000000-000000000000000"}