Introduction
Paging option is available as of this version (1.10).
This document describes the reporting API syntax and includes various examples.
- The API is done via HTTP GET method. The response parameters are returned in a JSON format in the HTTP body.
- Report request parameters MUST be URL encoded.
- Access to Start.io’s Server is restricted, partnerId and password (token) shall be provided upon integration request.
- Data history:
- The API cannot retrieve data older than three months.
- To prevent a query from retrieving too much data you may receive error #SA117 (status code 400).
- By default, the report can retrieve a limited number of rows. To retrieve full report (without a record limitation) use the paging option.
- Our Reporting API is limited to 100 requests per minute per user. Exceeding this limit will result in an error with the HTTP status code 429 - Too Many Requests.
Resource details
URL: https://api.start.io/adv/report/1.0
Method: GET
Response Format: JSON
Request
The request is a valid HTTP GET URL that includes the report query parameters.
Request parameters:
- Mandatory: authentication parameters, time frame
- Optional: optional dimensions, filter operators
- Request headers:
- Field Name: Accept-Encoding
- Value: gzip
- Mandatory: No
- Description: Compress response data in gzip format.
‘Content-Encoding: gzip’ header will be added to the response headers.
- Request structure:
https://api.start.io/adv/report/1.0?partner=987654321&token=12hgt78564&startDate=yyyymmdd&endDate= yyyymmdd&dimension=dimension1&dimension=dimension2&dimension=dimension3
Mandatory Request Parameters
Field Name |
Type |
Description |
Example |
partner |
String |
Partner Id provided by Start.io |
987654321 |
token |
String |
Security token provided by Start.io |
12hgt78564 |
startDate |
Time (yyyymmdd) |
The first day of the report time frame *The API data is available for the last 3 months |
20180315 |
endDate |
Time (yyyymmdd) |
The last day of the report time frame |
20180316 |
Optional Request Parameters
The optional parameters include optional dimensions and filter operators.
Optional Dimensions
The following dimensions are optional and can be added to the report if mentioned as parameters in the request.
See the full list of dimensions in the response chapter.
Field Name | Type | Description | Example |
date | Time (yyyymmdd) | Specific day in the time frame | 20180315 |
country | String | A two-character ISO 3166-1 country code for the country | US |
creative | String | Creative Id | 4000012345 |
publisher | String | Publisher Id | 156896546 |
application | String | App Id | 236511111 |
Request example:
https://api.start.io/adv/report/1.0?partner=123456789&token=**token**&startDate=20181022&endDate=20181027&dimension=date&dimension=country
Filter Operator
- The filter operator enables you to retrieve only a subset of the query result.
- The filter operator must be URL encoded in order to be included in URL query.
Operator | Description | Example | Example (URL Encoded Form) |
Filter | Exact match (Filter) | country=US,GB | country=US%2cGB |
Note: Filtering is not applicable for the dimension "campaignName". In order to filter specific campaigns, use filtering on campaignId.
Request Example with filtering:
In the following request, we filter data which is relevant to campaignId 30023655.
https://api.start.io/adv/report/1.0?partner= 123456789&token=**token**&startDate=20181001& endDate=20181028&dimension=date&dimension=country&campaignId=30023655
PAGINATION INFORMATION
By default, the API will return a single page of data.
To retrieve all pages of data you need to include in the request the following parameter.
Field name | Value | URL structure |
pagingEnabled | true | https://api.start.io/adv/report/1.0?partner= 123456789&token=**token**&startDate=20181001& endDate=20181028&dimension=date&dimension=country&campaignId =30223655&pagingEnabled=true |
In the response, you will receive the data and a field called "next":
"next": "nextToken=123456abcde&offset=1"
To get the next page you need to include this parameter in the request.
Request structure: https://api.start.io/adv/report/1.0?partner=1234&token=**token**& startDate=yyyymmdd&endDate=yyyymmdd&dimension=dimension1,dimension2,dimension3&nextToken=123456abcde&offset=1
In each request you will receive the data and the next field. the last page will include only the data without the next field.
Response
- The response data structure includes dimensions and metrics.
- The list of dimensions include the default dimensions and the optional dimensions.
- The list of metrics is constant and will appear in every response
Response structure:
{
"logs": [
"This sections contains errors and warnings regarding the transaction"
],
"data": [
"This sections contains the report data"
]
}
Dimensions
Field Name | Type | Appears in response? | Description | Example |
campaignId | String | always | An internal ID for the campaign | 300012356 |
campaignName | String | always | The name that was given to the campaign by the advertiser | "iOS Dating campaign" |
date | Time (yyyymmdd) | if specified in request | Specific day in the time frame | 20180315 |
country | String | if specified in the request | A two-character ISO 3166-1 country code for the country | US |
creativeName | String | if creative specified in the request | The name that was given to the creative by the advertiser | "Banner EN" |
creativeId | String | if creative specified in the request | An internal ID for the creative | 400235625 |
publisher | String | if specified in request | The Publisher ID of the publishing app | 123623232 |
application | String | if specified in request | The App ID of the publishing app | 203568988 |
Metrics
Field Name | Type | Description | Example |
impressions | Int | The number of times that the ad has been presented | 845,464 |
clicks | Int | The total number of clicks | 35,546 |
ctr | Double | ctr=clicks/impressions | 0.453 |
installs | Int | The total number of installs | 3,154 |
cr | Double | cr=installs/clicks | 0.136 |
spent | Double | The amount of USD spent on the relevant conversions | 32.124 |
Logs
The 'logs' section in the response describes errors and warnings regarding the transaction.
Code | Severity | Message |
SA101 | error | Server error |
SA102 | error | Unauthenticated |
SA103 | error | Unauthorized |
SA104 | error | Incorrect API version |
SA105 | error | Incorrect start date parameter |
SA106 | error | Incorrect end date parameter |
SA107 | error | No data available at this date |
SA108 | error | Future end date is not allowed |
SA109 | error | Invalid dimension |
SA117 | error | Query size is too big - please be more specific |
SA120 | error | Invalid next token or offset parameter (when paging is enabled) |
SA121 | error | pagingEnabled cannot be sent with nextToken or offset |
Examples
Example #1
The following example describes a scenario, where the partner id and/or the token are missing or not verified.
Request:
https://api.start.io/adv/report/1.0?partner=???&token=**token**&startDate=20181001& endDate=20181010
Response:
{
"logs": [
{
"severity": "error",
"messageCode": "SA102",
"message": "Unauthenticated"
}
],
"data": []
}
Example #2
The following example describes a request for a specific time frame with the dimensions: 'date' and 'country'.
By default, the reports also include the dimensions 'campaignId' and 'campaignName.'
Request:
https://api.start.io/adv/report/1.0?partner=105840068& token=**token**&startDate=20181006&endDate=20181007& dimension=date&dimension=country
Response:
{
"logs": [],
"data": [
{
"campaignName": "AAA_Android_US_Phone_Display_CID1234",
"impressions": 142546,
"clicks": 2763,
"installs": 20,
"spent": 20,
"ctr": 0.01938,
"cr": 0.00723,
"date": 20181006,
"country": "US",
"campaignId": "300032556"
},
{
"campaignName": " AAA_Android_US_Phone_Display_CID1234",
"impressions": 1,
"clicks": 0,
"installs": 0,
"spent": 0,
"ctr": 0,
"cr": 0,
"date": 20181007,
"country": "JP",
"campaignId": "SAP_23662"
},
{
"campaignName": " AAA_Android_US_Phone_Display_CID1234",
"impressions": 134698,
"clicks": 2936,
"installs": 24,
"spent": 24,
"ctr": 0.02179,
"cr": 0.00817,
"date": 20181007,
"country": "US",
"campaignId": "300023662"
}
]
}
Example #3
The following example describes a request with paging enables.
Request:
https://api.start.io/adv/report/1.0?partner=123456789&token=**token**&startDate=20181006&endDate=20181007& dimension=date&dimension=country&&pagingEnabled=true
Response:
{
"logs": [],
"data": {
"data": [
{
"campaignName": "AAA_Android_US_Phone_Display_CID1234",
"impressions": 142546,
"clicks": 2763,
"installs": 20,
"spent": 20,
"ctr": 0.01938,
"cr": 0.00723,
"date": 20181006,
"country": "US",
"campaignId": "300032556"
},
{
"campaignName": " AAA_Android_US_Phone_Display_CID1234",
"impressions": 1,
"clicks": 0,
"installs": 0,
"spent": 0,
"ctr": 0,
"cr": 0,
"date": 20181007,
"country": "JP",
"campaignId": "SAP_23662"
},
{
"campaignName": " AAA_Android_US_Phone_Display_CID1234",
"impressions": 134698,
"clicks": 2936,
"installs": 24,
"spent": 24,
"ctr": 0.02179,
"cr": 0.00817,
"date": 20181007,
"country": "US",
"campaignId": "300023662"
}
],
"next": "nextToken=123456abcde&offset=1"
}
}