Overview
The Cross-Events Export API is a powerful tool for querying and comparing large pools of data across multiple sources.
Packaging
Access to the Cross-Events Export API requires our Advanced Data Feeds add-on.
The Advanced Data Feeds add-on also includes access to:
The Scheduled Log Exports API.
Data integrations for exports.
Webhook functionality.
Learn more on our packaging page.
Benefits
With the Cross-Events Export API, your queries can:
Access extensive aggregate-level data.
Return an unlimited number of rows.
Include as many dimensions as you want.
Group results by several metrics.
Pull from Log Click Warehouse, Log Impression Warehouse, and Aggregate SAN CCI Warehouse data.
Limitations
Limitation | Details |
---|---|
Max Number of Rows Returned | No limit. |
Export Window | Rolling 2 year window. |
Max Number of Dimensions | No limit. |
Max Number of Days Queried | 90 days. |
Rate Limits | 2 requests per second. |
Data Readiness | Data generally takes ~1.5 hours to be ready. |
Getting Started
Prerequisites
In order to use the Cross-Events Export API, you first need to:
Create a Branch Dashboard.
Enable Universal Ads and start running ad campaigns from your Branch account.
Implement the appropriate Branch SDK into your mobile app (iOS | Android).
Make sure you have the appropriate permissions set on your user account. See the Access section for more.
Access
Access to the Cross-Events Export API requires our Advanced Data Feeds add-on. Learn more on our pricing page.
General Access
A user must have the Aggregate Data Access Level enabled on their account to use the Cross-Events Export API.
Agency Access
If you work with an agency that runs your advertising campaigns and want to give them access to export Cross-Events Export API data, you can assign their account(s) the Aggregate Data Access Level as well.
To provide an agency team member with access to the Cross-Events Export API:
In the left-hand navigation, under Setup & Testing, click on Account Settings.
On the Account Settings page, click on the Agencies tab.
Expand the agency in question, find the agency team member you want to give access to, hover on the button in the Actions column and click Edit.
In the Edit Agency Team Member modal:
Under Access Level, check the Export box.
Under Permissions, check the Aggregate Data box.
Add data filters (optional):
Under Data Filters, toggle any necessary data filters on/blue. Exported data will be filtered accordingly.
Click Save.
Agency-Tagged Data
If you do not enable the "Only Show Agency-Tagged Data" filter, the agency team member will be able to export aggregate data associated with all of your campaigns, regardless of whether they are associated with them or not.
Authentication
Calls to the Cross-Events Export API require an api_key
query string parameter to be passed with each request. API keys are generated on a per-user basis and are permanent.
Learn how to retrieve your API key (also known as access_token
).
NOTE: In order to retrieve or reset your API key/access token, you must have Organizational Level access to the Branch account. This functionality is not present at the App Level.
Usage
Request Data Export
Request Info
Export Request
Request Headers
Header | Description | Required |
---|---|---|
| Key that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication. | Yes |
Request Query Parameters
Parameter | Description | Required |
---|---|---|
| Unique identifier for the app or organization requesting data. | Yes |
Request Body Parameters
Parameter | Description | Required |
---|---|---|
| The start of the interval time range represented as an ISO-8601 complete date. | Yes |
| The end of the interval time range represented as an ISO-8601 complete date. | Yes |
| An array representing dimension(s) to group by. See dimensions section for more. | No |
| A JSON object representing one or more filters. This is a global filter and will be applied to all aggregations. | No |
| Granularity levels: | No; defaults to all |
| Special object. See | No |
| An array where each element is an aggregation. See | No |
| - snappy | No; defaults to snappy |
| - parquet | No; defaults to parquet |
Schema for limit_sort_spec
Parameter | Description | Required |
---|---|---|
| An array where each element is a | No |
| Limit the number of rows returned. Leave blank for no limit. | No; defaults to no limit |
Schema for sort_column
Parameter | Description | Required |
---|---|---|
| Whether to return the rows in ascending order. Value can be | No; defaults to true |
| Order types: | No; defaults to natural |
| Can be any dimension or | Yes, if |
Schema for aggregation
Parameter | Description | Required |
---|---|---|
| Metric requested. | Yes |
| The name you would like to set for the metric, which will be provided in the result. | Yes |
| The data source of the data. Learn more about the specifics of what gets included in particular data sources here. | Yes |
| Relevant for apps with late arriving data. This value can be set as high as 7 (to accept data arriving 7 days late). | No; defaults to 0 |
| This parameter is the same as global | No |
| Override the global | No; default is global start_date |
| Override the global | No; default is global end_date |
Response Info
Response Body Parameters
Parameter | Description |
---|---|
| The response code. |
| The unique ID of the request. Obtained from the export request. |
| The URL of the export request. |
Example Request & Response
View additional use-cases with examples here.
Retrieve Export Download Status
Request Info
Status Request
Request Headers
Header | Description | Required |
---|---|---|
| Key that encapsulates the user's permission with regards to an organization. Obtained from the Branch Dashboard. Needed for authentication. | Yes |
Request Path Parameters
Parameter | Description | Required |
---|---|---|
| The unique ID of the request. Obtained from the export request. | Yes |
Request Query Parameters
Parameter | Description | Required |
---|---|---|
| Unique identifier for the app or organization requesting data. | Yes |
Response Info
Response Body Parameters
Parameter | Description |
---|---|
| The response code. |
| The status of the original request by |
| The URL of your request for download. |
Example Request & Response
Appendix
Filters
Some filters, like the in
and selector
filters below, are just a single filter applied to the query.
Other filters, like and
and or
, combine multiple filters in a single JSON object, and apply that to the query. This is done using the object's fields
key.
In
Selector
And
Or
Bound
Not
Like
Dimensions
Link
Analytics/Metrics
Data Source + Field Name
|
|
---|---|
- | - |
- | - |
- | - |
- | - |
- | - |
| - |
Notes on Data Sources
| Note |
---|---|
| Combines impressions from |
| Combines clicks from |
| Combines cost from SAN with cost on clicks data from |
| Gets cost only from SAN data. |
| Combines cost from SAN and |
| Combines cost from SAN and |
| Combines cost from SAN and |
Notes on Links
Only single aggregation, including link
data_source
will be allowed.Additional analytics, like clicks and installs, can be attributed to any link type.
Start and end dates for link
data_source
correspond to link creation date in the app's timezone.When filtering in a links request, the filter should be put at the aggregation level.
Additional Examples
Query All Standard Events
Pull all Branch Standard Events (Commerce, Content, Lifecycle, and Custom):
Split Revenue Field by Ad Partner
Take the revenue
field associated with the eo_commerce_event
data source and split it by ad partner name:
Split Various Events by Ad Partner
Look at six different data sources and split their unique counts by ad partner name:
Pull All Links for an App
Get the total_count
for several link-related dimensions:
Add a Filter
Query link data, where the deep link path starts with the word blog
: