Reporting API: get started
Overview
This article covers Equativ’s reporting API, allowing you to request, generate and retrieve reports.
Authentication
For information about how to authenticate, refer to API authentication.
Base URL and endpoints
The base URL for reporting API requests is:
https://supply-api.eqtv.io/
| Method | Endpoint | Description | 
|---|---|---|
| DELETE | /report-async/{id} | 
Deletes a report – either a one-time or a scheduled report | 
| GET | /report-async | 
Returns all reports available for the authenticated user. | 
| GET | /report-async/{id} | 
Returns a specific report by id. | 
| POST | /report-async | 
Generates an asynchronous report, based on the specified configuration. | 
Available dimensions and metrics
Learn more about the available dimensions and metrics in these articles:
Do not use commas ( , ) or semicolons ( ; ) in field names to avoid errors in the csv report files. The default field separator of the API is semicolon; thus, field names with semicolons might be treated as two columns. To avoid such problems, the report API puts fields in quotation marks automatically to ensure proper processing. However, the usage of semicolons is still not recommended.
Creating a basic report
Step 1 - Configure report parameters
Before you create the report, you must configure its parameters. The sample below shows a configuration for a simple report with these characteristics:
- report name: 
doc_sample_1_simple_report - includes data for the time frame Nov. 09, 2023 to Nov. 10, 2023*
 - dimensions: by 
Day - metrics: 
ImpressionsandClicks - e-mail address 
example@example.comwill be notified once the report is ready - useCaseId: 
Adserving- the report contains data related to direct campaigns/insertions only; i. e. RTB (programmatic) data is not included 
{  
"reportName": "doc_sample_1_simple_report",
    "startDate": "2023-11-09T00:00:00",
    "endDate": "2023-11-10T00:00:00",
      "dimensions":[
        "Day"
       ],
       "metrics":[
         "Impressions",
         "Clicks"
       ],
       "useCaseId": "Adserving",
       "onFinishEmails": ["example@example.com"]
}Step 2 - Generate report
To generate the report configured in Step 1, make a POST request to the /report-async endpoint, specifying the report configuration in the request body:
POST https://supply-api.eqtv.io/report-asyncYou should receive a Status 200 (Success) response with the report Id.
Sample
ca327b57-335a-4068-bb22-c4c31c70cbefStep 3 - Request report
To request the report, make a GET request to the /report-async/{id} endpoint, attaching the report Id received in Step 2.
Sample
GET https://supply-api.eqtv.io/report-async/ca327b57-335a-4068-bb22-c4c31c70cbefStep 4 - Retrieve report
The response to the requested report contains the download link (URL) to the final report in csv format.
Sample
{
    "id": "ca327b57-335a-4068-bb22-c4c31c70cbef",
    "name": "doc_sample_1_simple_report",
    "creationDate": "2023-11-22T12:34:43.27672Z",
    "killed": false,
    "configuration": "{\"StartDate\":\"2023-11-09T00:00:00\",\"EndDate\":\"2023-11-10T00:00:00\",\"Fields\":[{\"Field\":\"Day\",\"OrderBy\":null,\"OutputName\":\"Day\",\"DateFormat\":null},{\"Field\":\"Impressions\",\"OrderBy\":null,\"OutputName\":\"Impressions\",\"DateFormat\":null},{\"Field\":\"Clicks\",\"OrderBy\":null,\"OutputName\":\"Clicks\",\"DateFormat\":null}],\"Filters\":[[{\"Field\":\"IsRtb\",\"Operator\":\"IN\",\"Values\":[0]}]],\"FileFormat\":\"CSV\",\"IanaTimezone\":\"Europe/Paris\",\"UseCase\":\"AdServing\",\"Parameters\":{\"ClientId\":\"54585\"}}",
    "status": 1,
    "taskId": "c4761849-d02d-4e4c-b9d6-6a9db4c86b5e",
    "instanceId": "https://storage.googleapis.com/bkt-dwh-read-reporting-prod-eu-reporting_output/2023/11/22/result_147020cc-6113-4060-a8e9-c4cadc74293c.csv.gz?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=webapi%40fs-async-reporting-prod.iam.gserviceaccount.com%2F20231122%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20231122T123457Z&X-Goog-Expires=172800&X-Goog-SignedHeaders=host&X-Goog-Signature=0184317f034f03608485b0588ec89b0ab3d5a9723e05d27bd0ebd96bbce0de6ab6dbf0161cc9c2bcc0a83982a94b3d3c4511978d0a1fc425d1772c6c876d058bd4e9986142f2a9e7e2da2d6188f9b231d71178972dd11179b8957164f0223fe71297e52e1acdb852525df0b11928e91f453b5b1e6278b8cae2b8e49e9ab977f16193e1feca82628cf9f785743c77195c4028889f3cf9ca7dade2bd0a1b18db0adf093325096900f4cb479e3ee59ec9909b259f0b83d5bf5d8f09609286f8f3be944a6f433e2aea7d8f987a42e6736fb22cfe1514057a8a4ab00977fe057c9e609f00420c62be7467ca07d9ee28a324bb89e44e10ef5a255507d0bf9369738d56",
    "networkId": 73,
    "userId": 54585,
    "isScheduled": false,
    "schedulingStartDate": "2023-11-22T12:34:24.674345Z",
    "schedulingEndDate": "2023-11-22T12:34:24.674353Z",
    "datasource": "GCP"
}Likewise, an email is sent from report@smartadserver.com to the e-mail address specified in the onFinishEmails field, containing the download link. The link is freely accessible without credentials, but valid for two days only.
Data transfer to AWS S3 bucket
If you are using Amazon Web Services (AWS), you can also have your report data stored in your own S3 bucket. Send your S3 credentials to your service contact at Equativ and follow the instructions in section “Data transfer to AWS S3 bucket” in Reporting API: advanced options.
Report status
The table below lists the statuses returned in the the status field in the response to a requested report.
| Report status Id | Report status description | 
|---|---|
| 0 | IN_PROGRESS | 
| 1 | SUCCESS | 
| 4 | CSV_AVAILABLE_REPORT_TOO_BIG_FOR_XLSX (Not considered as failed) | 
| 9 | JOB_FAILED | 
| 17 | DELETED | 
| 18 | SCHEDULED | 
Use cases
The reporting API differentiates metrics and dimensions through the useCaseId field, which can take one of the following values:
- 
adserving- returns data related to direct (non-programmatic) campaigns/insertions - 
rtb- returns programmatic data - 
holistic- returns both direct campaign/insertion data and programmatic data - 
segment- returns data related to audience segments or semantic segments 
Some dimensions and metrics can be used in both use cases, while others are specific to either the Adserving use case or RTB use case.
Sample Adserving use case
{  
"reportName": "doc_sample_2_adserving",
    "startDate": "2023-11-09T00:00:00",
    "endDate": "2023-11-10T00:00:00",
      "dimensions":[
        "Day"
       ],
       "metrics":[
         "Impressions",
         "Clicks"
       ],
       "useCaseId": "Adserving",
       "onFinishEmails": ["example@example.com"]
}
Sample RTB use case
{  
"reportName": "doc_sample_3_rtb",
    "startDate": "2023-11-09T00:00:00",
    "endDate": "2023-11-10T00:00:00",
      "dimensions":[
        "Day"
       ],
       "metrics":[
         "Impressions",
         "Clicks"
       ],
       "useCaseId": "RTB",
       "onFinishEmails": ["example@example.com"]
}