Skip to main content

Reports API

The reports API allows you to create and schedule custom reports to generate insights and inform current and future campaign optimization.

Metrics and dimensions can be selected to customize reports. Metrics are quantitative values (number, percentage, dollar amount) measuring some campaign's attribute. Dimensions are those attributes: the chosen element (e.g. demographics, creatives, technologies) to be subjected to a metric.

Reports can be scheduled to a specified delivery frequency, and further fine-tuned to aggregated or disaggregated (daily) data.

info

There must be at least one active campaign before a report can be created/executed.

See the following quickstart guides:

NOTE

The date range for a report cannot exceed one year.

Learn more about reports with our Help Center articles.

Authentication​

Use the following header parameters for all requests:

Headers
Authentication
string required
Authentication bearer token.
See Sign up and authenticate.
X-IAA-OW-ID
integer required
Organization Workspace ID header.

Get reports details​

This section covers the various methods and endpoints for getting lists and details of reports.

Get a list of reports​

GET
POST

Get a list of reports.

A report id can be used in the Get report by ID endpoint and to perform various actions in Reports management endpoints.

GET Query parameters
customerIds
string
Filters by comma separated Customer IDs.
Passing all gets all eligible Customer's report, default: all.
sortBy
string
Sorts by ascending (+) or descending (-).
Supported values: id, name, startDate, modifyDate.
Default: -modifyDate.
searchField
string
Filter results by search field.
limit
integer
Number of entries returned per page, default: 20.
pageNo
integer
Page number of retrieved data, default: 1.

POST Request schema
customerIds
string
Filters by comma separated Customer IDs.
Passing all gets all eligible Customer's report, default: all.
sortBy
string
Sorts by ascending (+) or descending (-).
Supported values: id, name, startDate, modifyDate.
Default: -modifyDate.
searchField
string
Filters by search field.
noOfEntries
integer
Number of entries returned per page, default: 20.
pageNo
integer
Page number of retrieved data, default: 1.

Response properties
id
integer
Report ID.
reportName
string
Report name.
startDate
integer
Unix epoch timestamp, milliseconds.
endDate
integer
Unix epoch timestamp, milliseconds.
dimensions
string
Represents dimension details as a serialized JSON string.
customerIds
array of integers
Customer IDs.
customerDetails
object
Customer details.
customerDetails object properties
owID
integer
Organization Workspace ID.
organizationName
string
Organization name.
organizationLogo
string
Organization logo.
statusId
integer
Status ID.
status
string
Status.
supportEmail
string
Support email.
timezone
integer
Timezone ID.
organizationType
string
Organization type.
timezone
integer
Timezone ID.
reportSchedulingEventDetails
string
Contains parameters for updating scheduling details.
reportSchedulingEventDetails object properties
eventId
integer
ID for schedule event.
deliveryFrequency
integer
Delivery frequency type ID.
Supported values
1One time now
2Daily until
3Weekly until
4Monthly until
fileType
integer
Report file type ID.
Supported values
1CSV
2XLS
subscriberEmails
array of strings
List of emails to which the report will be sent.
eventEndDate
integer
Unix epoch timestamp of report schedule event end date, in milliseconds.
deliveryDay
string
[Required, if deliveryFrequency is not "once"] Delivery day to specify the day-time when the report should be sent.
Weekly delivery day: [sunday, monday, ...].
Monthly delivery day: [first, last, 2,3, ... 29].
Request sample
{
"customerIds": "123,234,345",
"pageNo": 1,
"noOfEntries": 30,
"sortBy": "+id",
"searchField": "search field"
}
Response 200
{
"success": true,
"data": {
"data": [
{
"id": 1,
"reportName": "Campaign by Gender by Device type",
"startDate": 1650177200,
"endDate": 1666938296,
"dimensions": "[{\"filter\":\"campaign\",\"value\":[123,234,345,456]},{\"filter\":\"gender\",\"value\":[10200002]},{\"filter\":\"device_type\",\"value\":[20300001,20300003]}]",
"customerIds": null,
"customerDetails": null,
"timezoneId": 11,
"reportSchedulingEventDetails": {
"eventId": 29,
"deliveryFrequency": 3,
"fileType": 2,
"subscriberEmails": [
"demoUser1@gmail.com",
"demoUser2@iqm.com"
],
"eventEndDate": 1671148799999,
"deliveryDay": "Friday"
}
},
{
"id": 2,
"reportName": "Campaigns by Zip Codes with filters",
"startDate": 1660521600,
"endDate": 1668470399,
"dimensions": "[{\"filter\": \"campaign\"}, {\"value\": [123, 234, 345, 456], \"filter\": \"zip5\"}]",
"customerIds": null,
"customerDetails": null,
"timezoneId": 12,
"reportSchedulingEventDetails": {}
},
{
"id": 3,
"reportName": "Creatives by Income Ranges and Operating System with filters",
"startDate": 1660521600,
"endDate": 1668470399,
"timezoneId": 11,
"dimensions": "[{\"filter\": \"creative\"}, {\"value\": [10300002, 10300003], \"filter\": \"income_group\"}, {\"value\": [20200001, 20200002, 20200003], \"filter\": \"os\"}]",
"customerIds": [
200,
201
],
"customerDetails": [
{
"owId": 200,
"organizationName": "Test Organization",
"organizationLogo": "https://iqm-web-assets-c92d6b6cbde1-stage.s3.amazonaws.com/organization-profile/200/1637314301025.png",
"statusId": 1,
"status": "Active",
"supportEmail": "demoSupport@gmail.com",
"timezone": 29
}
],
"reportSchedulingEventDetails": {}
}
],
"totalRecords": 3,
"filteredRecords": 3
}
}

Get report by ID​

GET

Get report data by report ID.

Path parameters
reportId
integer
Report ID.
Response properties
id
integer
Gets data for this report ID.
reportName
string
Report name.
startDate
integer
Unix epoch timestamp, milliseconds.
endDate
integer
Unix epoch timestamp, milliseconds.
dimensions
string
Represents dimension details as a serialized JSON string.
columns
array of strings
Metrics for showing serving result.
timezoneId
integer
Timezone ID.
requestType
integer
Report request type ID.
Supported values
1Daily
2Aggregated
3Weekly
4Monthly
reportSchedulingEventDetails
string
Contains parameters for updating scheduling details.
reportSchedulingEventDetails object properties
eventId
integer
ID for schedule event.
deliveryFrequency
integer
Delivery frequency type ID.
Supported values
1One time now
2Daily until
3Weekly until
4Monthly until
fileType
integer
Report file type ID.
Supported values
1CSV
2XLS
subscriberEmails
array of strings
List of emails to which the report will be sent.
eventEndDate
integer
Unix epoch timestamp of report schedule event end date, in milliseconds.
deliveryDay
string
[Required, if deliveryFrequency is not "once"] Delivery day to specify the day-time when the report should be sent.
Weekly delivery day: [sunday, monday, ...].
Monthly delivery day: [first, last, 2,3, ... 29].
Response 200
{
"success": true,
"data": {
"id": 123,
"reportName": "Campaign by Gender by Device type",
"startDate": 1650177000,
"endDate": 1666938000,
"dimensions": "[{\"filter\":\"campaign\"},{\"filter\":\"gender\",\"value\":[10200002]},{\"filter\":\"device_type\",\"value\":[20300001,20300003]}]",
"columns": [
"gender",
"deviceType",
"campaignId",
"campaignName",
"startTime",
"endTime",
"maxBid",
"budgetDay",
"budgetTotal",
"impressions",
"clicks"
],
"timezoneId": 29,
"requestType": 1,
"reportSchedulingEventDetails": {
"eventId": 18,
"deliveryFrequency": 3,
"fileType": 2,
"subscriberEmails": [
"demoUser1@gmail.com",
"demoUser2@iqm.com"
],
"eventEndDate": 1671148799,
"deliveryDay": "Friday",
"runningTotalEnabled": 0,
"earliestCampaignStartDate": 0
}
}
}

Reports management​

This section covers the various methods and endpoints for managing reports.

See the quickstart guide on Creating a report.

Resource properties​

Resource properties
id
integer
Gets data for this report ID.
dimensions
string
Represents dimension details as a serialized JSON string.
columns
array of strings
Metrics for showing serving result.
customerIds
array of integers
Gets data for these Customer IDs.
filters
object
Supports campaignIds, creativeTypeIds, and campaignStatuses arrays. campaignStatuses only applies when the report includes a campaign dimension.
searchField
string
Filter results by search field.
requestType
integer
Report request type ID.
Supported values
1Daily
2Aggregated
3Weekly
4Monthly
fileType
integer
Report file type ID.
Supported values
1CSV
2XLS
reportAggregated
string
Identifies whether the report is aggregated or disaggregated.
Supported values
0Disaggregated (daily)
1Aggregated
startDate
integer
Start date of report as Unix epoch timestamp, milliseconds.
endDate
integer
End date of report as Unix epoch timestamp, milliseconds.
timezoneId
integer
Timezone ID.
timezoneName
string
Timezone name.
sortBy
string
Sorts by ascending (+) or descending (-), default: -impressions.
pageNo
integer
Page number of retrieved data, default: 1.
noOfEntries
integer
Number of entries returned per page, default: 50.

Create report​

POST

Save a new report definition. This doesn't run the report; use the returned report ID with Execute a report or Get URL for report download.

To schedule email delivery, create the report, then use Schedule a report.

NOTE

The date range for a report cannot exceed one year.

Response properties
success
boolean
Indicates report was successfully created: true.
data
integer
Report ID.
{
"reportName": "Campaign by Gender by Device type ",
"startDate": 1650177200000,
"endDate": 1666938296000,
"dimensions": "[{\"filter\":\"campaign\",\"value\":[287846,287610,278417,270798]},{\"filter\":\"gender\",\"value\":[10200002]},{\"filter\":\"deviceType\",\"value\":[20300001,20300003]}]",
"columns": [
"gender",
"deviceType",
"campaignId",
"campaignName",
"startTime",
"endTime",
"maxBid",
"budgetDay",
"budgetTotal",
"impressions",
"clicks"
],
"requestType": 1,
"reportAggregated": "0",
"timezoneId": 29,
"timezoneName": "US/Eastern"
}

Response 200

{
"success": true,
"data": 1001
}

Execute a report​

POST

Execute a report by ID or with new report data. Returns report rows in the response; to get a file instead, use Get URL for report download.

NOTE

The date range for a report cannot exceed one year.

Request schema
id
integer
Executes report by report ID.
dimensions
string
Dimensions to filter by in serialized JSON format.
columns
array of strings
List of metrics for the report obtained from dimensions and metrics details API.
customerIds
array of integers
Customer IDs to report.
filters
object
Supports campaignIds, creativeTypeIds, and campaignStatuses arrays. campaignStatuses only applies when the report includes a campaign dimension.
searchField
string
Filter rows by dimension value name or ID (partial match), e.g. campaign name.
requestType
integer
Report request type ID.
Supported values
1Daily
2Aggregated
3Weekly
4Monthly
reportAggregated
string
Identifies whether the report is aggregated or disaggregated.
Supported values
0Disaggregated (daily)
1Aggregated
startDate
integer
Unix epoch timestamp of start date for report, in milliseconds.
endDate
integer
Unix epoch timestamp of end date for report, in milliseconds.
timezoneId
integer
Timezone ID.
timezoneName
string
Timezone name, e.g. US/Eastern. Required unless id is provided.
sortBy
string
Sorts by ascending (+) or descending (-), default: -impressions.
pageNo
integer
Page number of retrieved data, default: 1.
noOfEntries
integer
Number of entries returned per page, default: 50.
Response properties
CTR
integer
Click-through rate.
date
integer
Date.
deviceTypeId
integer
Device type ID.
Supported values
20300001Mobile
20300002Desktop
20300003Connected TV
20300004Tablet
20399999Unknown
VCR
integer
Video completion rate.
budgetDay
integer
Daily budget.
gender
integer
Gender ID.
budgetPacing
boolean
Budget is spent equally every hour: true.
dataCost
integer
Data cost applied on campaigns of given Customer.
totalRecords
integer
Number of records.
campaignTimezone
integer
Timezone ID of campaign.
eCPM
integer
Effective cost per mille.
bidImpressions
integer
Bid on impressions count.
startTime
integer
Unix epoch timestamp of start date for report.
mediaSpent
integer
Actual amount spent by an Advertiser (does not include dataCost or prebidCost).
eCPC
integer
Effective cost per click.
deviceType
integer
Device type ID.
Supported values
20300001Mobile
20300002Desktop
20300003Connected TV
20300004Tablet
20399999Unknown
startCount
integer
Ad viewing metric, video start.
campaignType
integer
Campaign type ID.
Supported values
1Advanced campaign
2PG campaign
campaignId
integer
Campaign ID.
spent
integer
Campaign spent.
impressions
integer
Impressions.
eCPCV
integer
Effective cost per completed view.
completeCount
integer
Ad viewing metric, video completed.
budgetTotal
integer
Total budget for campaign.
Note: can be null if fixed daily budget, start time, and end time are provided.
maxBid
integer
Max bid of budget for serving.
clicks
integer
The number of times a user clicked on an ad.
endTime
integer
Unix epoch timestamp of end date for report.
campaignName
string
Campaign name.
status
string
Campaign status.
{
"id": 1001
}
{
"startDate": 1670410001000,
"endDate": 1675766802000,
"dimensions": "[{\"filter\":\"campaign\"},{\"filter\":\"gender\",\"value\":[10200002]},{\"filter\":\"deviceType\",\"value\":[20300001,20300003]}]",
"columns": [
"campaignId",
"campaignName",
"deviceType",
"completeCount",
"gender",
"startTime",
"endTime",
"maxBid",
"budgetDay",
"VCR",
"eCPC",
"totalECPC",
"budgetTotal",
"impressions",
"clicks",
"winRate",
"reach"
],
"customerIds": [
201353,
201352
],
"filters": {
"campaignIds": [
123,
234,
345
],
"creativeTypeIds": [
11
],
"campaignStatuses": [
"expired",
"running"
]
},
"searchField": "123",
"requestType": 1,
"reportAggregated": "0",
"timezoneId": 11,
"timezoneName": "UTC",
"order": "desc",
"sortBy": "impressions",
"noOfEntries": 50,
"pageNo": 1
}
{
"customerIds": [],
"startDate": 1749614400000,
"endDate": 1757649599000,
"dimensions": "[{\"filter\":\"campaign\"}]",
"columns": [
"impressions",
"clicks",
"CTR",
"VCR",
"spent",
"dataCost",
"mediaSpent",
"eCPM"
],
"requestType": 3,
"reportAggregated": "0",
"timezoneName": "US/Eastern",
"timezoneId": 29,
"counter": 1,
"pageNo": 1,
"noOfEntries": 20,
"sortBy": "-impressions"
}
{
"success": true,
"data": {
"total": {
"CTR": 0.26809,
"date": null,
"deviceTypeId": null,
"VCR": 51.452171,
"budgetDay": null,
"gender": null,
"budgetPacing": null,
"dataCost": 0,
"totalRecords": 135,
"campaignTimezone": null,
"eCPM": 4.503114298538752,
"bidImpressions": 4678583,
"startTime": null,
"mediaSpent": 8485.86672119556,
"eCPC": 1.6797044182889074,
"deviceType": null,
"startCount": 351095,
"campaignType": null,
"campaignId": null,
"spent": 8485.86672119556,
"impressions": 1884444,
"eCPCV": 0.021560143713093907,
"completeCount": 180646,
"budgetTotal": null,
"maxBid": null,
"clicks": 5052,
"endTime": null,
"campaignName": null,
"status": null
},
"data": [
{
"CTR": 0.2796,
"date": "2022-01-30",
"deviceTypeId": 20300001,
"VCR": 0,
"budgetDay": 0.07,
"gender": "Unknown",
"budgetPacing": true,
"dataCost": 0,
"totalRecords": null,
"campaignTimezone": "America/Costa_Rica",
"eCPM": 2.9999999999999996,
"bidImpressions": 628344,
"startTime": 1643428296,
"mediaSpent": 457.09799999999996,
"eCPC": 1.073,
"deviceType": "Mobile",
"startCount": 0,
"campaignType": "cpm",
"campaignId": 15474,
"spent": 457.09799999999996,
"impressions": 152366,
"eCPCV": 0,
"completeCount": 0,
"budgetTotal": 1549,
"maxBid": 3,
"clicks": 426,
"endTime": 1644192000,
"campaignName": "Costa Rica MEMES COMPILADOS Profile: All Gender: All Ages: 18 to 45 Geo: Heredia, Alajuela, Cartago and San Jose",
"status": "expired"
},
{
"CTR": 0.2122,
"date": "2022-01-30",
"deviceTypeId": 20300001,
"VCR": 0,
"budgetDay": 0.21,
"gender": "Unknown",
"budgetPacing": true,
"dataCost": 0,
"totalRecords": null,
"campaignTimezone": "America/Costa_Rica",
"eCPM": 2.9999999999999996,
"bidImpressions": 271620,
"startTime": 1643423160,
"mediaSpent": 418.48799999999994,
"eCPC": 1.4138108108108107,
"deviceType": "Mobile",
"startCount": 0,
"campaignType": "cpm",
"campaignId": 15472,
"spent": 418.48799999999994,
"impressions": 139496,
"eCPCV": 0,
"completeCount": 0,
"budgetTotal": 1548,
"maxBid": 3,
"clicks": 296,
"endTime": 1644192000,
"campaignName": "Costa Rica Universidad Latina Profile: All Gender: All Ages: 18 to 75 Geo: All Costa Rica",
"status": "expired"
},
{
"CTR": 0.1065,
"date": "2022-01-30",
"deviceTypeId": 20300001,
"VCR": 0,
"budgetDay": 0.43,
"gender": "Unknown",
"budgetPacing": true,
"dataCost": 0,
"totalRecords": null,
"campaignTimezone": "America/Costa_Rica",
"eCPM": 3.000024952590078,
"bidImpressions": 239865,
"startTime": 1643431623,
"mediaSpent": 360.68699999999995,
"eCPC": 2.8178671874999996,
"deviceType": "Mobile",
"startCount": 0,
"campaignType": "cpm",
"campaignId": 15477,
"spent": 360.68699999999995,
"impressions": 120228,
"eCPCV": 0,
"completeCount": 0,
"budgetTotal": 1551,
"maxBid": 3,
"clicks": 128,
"endTime": 1644192000,
"campaignName": "Costa Rica TICOS AL DIA 24-25 ENE Profile: All Gender: All Ages: 18 to 25 and 60+ and over Geo: Heredia, Alajuela, Cartago and San Jose",
"status": "expired"
},
{
"CTR": 0.3118,
"date": "2022-01-31",
"deviceTypeId": 20300001,
"VCR": 0,
"budgetDay": 0.07,
"gender": "Unknown",
"budgetPacing": true,
"dataCost": 0,
"totalRecords": null,
"campaignTimezone": "America/Costa_Rica",
"eCPM": 2.9999999999999996,
"bidImpressions": 280562,
"startTime": 1643428296,
"mediaSpent": 219.36299999999997,
"eCPC": 0.9621184210526315,
"deviceType": "Mobile",
"startCount": 0,
"campaignType": "cpm",
"campaignId": 15474,
"spent": 219.36299999999997,
"impressions": 73121,
"eCPCV": 0,
"completeCount": 0,
"budgetTotal": 1549,
"maxBid": 3,
"clicks": 228,
"endTime": 1644192000,
"campaignName": "Costa Rica MEMES COMPILADOS Profile: All Gender: All Ages: 18 to 45 Geo: Heredia, Alajuela, Cartago and San Jose",
"status": "expired"
},
{
"CTR": 0.3154,
"date": "2022-01-30",
"deviceTypeId": 20300001,
"VCR": 0,
"budgetDay": 1,
"gender": "Unknown",
"budgetPacing": true,
"dataCost": 0,
"totalRecords": null,
"campaignTimezone": "America/Costa_Rica",
"eCPM": 3,
"bidImpressions": 233754,
"startTime": 1643131598,
"mediaSpent": 211.161,
"eCPC": 0.9511756756756757,
"deviceType": "Mobile",
"startCount": 0,
"campaignType": "cpm",
"campaignId": 15455,
"spent": 211.161,
"impressions": 70387,
"eCPCV": 0,
"completeCount": 0,
"budgetTotal": 1749,
"maxBid": 3,
"clicks": 222,
"endTime": 1644192000,
"campaignName": "Costa Rica MEMES COMPILADOS Profile: Undecided Gender: All Ages: 18 to 35 Geo: Heredia, Alajuela, Cartago, San Jose",
"status": "expired"
}
],
"totalRecords": 135
}
}
{
"success": true,
"data": {
"total": {
"CTR": 0.042882,
"baseBid": null,
"totalRecords": 4,
"VCR": 0,
"budgetTypeId": 1,
"totalBudget": 8200,
"dateRange": null,
"dataCost": 0,
"budgetMappingDataCost": null,
"totalECPM": 2.4288164665523158,
"campaignTimezone": null,
"eCPM": 2.4288164665523158,
"bidImpressions": 2352,
"preBidCost": 0,
"mediaSpent": 5.664,
"startCount": 0,
"campaignId": null,
"spent": 5.664,
"impressions": 2332,
"completeCount": 0,
"budgetMappingSpent": null,
"dailyBudget": 30.25,
"maxBid": null,
"clicks": 1,
"campaign": null,
"budgetCompletion": 0.08358536585365853,
"status": null,
"reach": 2332,
"frequency": 1
},
"totalRecords": 4,
"data": [
{
"CTR": 0,
"baseBid": null,
"totalRecords": null,
"VCR": 0,
"budgetTypeId": 1,
"totalBudget": 5000,
"dateRange": "08/31/2025 - 09/06/2025",
"dataCost": 0,
"budgetMappingDataCost": 0,
"totalECPM": 2,
"campaignTimezone": "US/Eastern",
"eCPM": 2,
"bidImpressions": 2214,
"preBidCost": 0,
"mediaSpent": 4.394,
"startCount": 0,
"campaignId": 562558,
"spent": 4.394,
"impressions": 2197,
"completeCount": 0,
"budgetMappingSpent": 4.394,
"dailyBudget": 18.03,
"maxBid": 2,
"clicks": 0,
"campaign": "test campaign for aud vert 2",
"budgetCompletion": 0.08788,
"status": "running"
},
{
"CTR": 0,
"baseBid": null,
"totalRecords": null,
"VCR": 0,
"budgetTypeId": 1,
"totalBudget": 1000,
"dateRange": "08/31/2025 - 09/06/2025",
"dataCost": 0,
"budgetMappingDataCost": 0,
"totalECPM": 10,
"campaignTimezone": "US/Eastern",
"eCPM": 10,
"bidImpressions": 119,
"preBidCost": 0,
"mediaSpent": 1.18,
"startCount": 0,
"campaignId": 562797,
"spent": 1.18,
"impressions": 118,
"completeCount": 0,
"budgetMappingSpent": 1.19,
"dailyBudget": 3.81,
"maxBid": 10,
"clicks": 0,
"campaign": "test campaign for aud vert 6",
"budgetCompletion": 0.11899999999999998,
"status": "running"
},
{
"CTR": 6.25,
"baseBid": null,
"totalRecords": null,
"VCR": 0,
"budgetTypeId": 1,
"totalBudget": 1200,
"dateRange": "06/08/2025 - 06/14/2025",
"dataCost": 0,
"budgetMappingDataCost": 0,
"totalECPM": 5,
"campaignTimezone": "US/Eastern",
"eCPM": 5,
"bidImpressions": 16,
"preBidCost": 0,
"mediaSpent": 0.08,
"startCount": 0,
"campaignId": 562466,
"spent": 0.08,
"impressions": 16,
"completeCount": 0,
"budgetMappingSpent": 0.08,
"dailyBudget": 4.6,
"maxBid": 5,
"clicks": 1,
"campaign": "test campaign for aud vert 1",
"budgetCompletion": 0.006666666666666667,
"status": "running"
},
{
"CTR": 0,
"baseBid": null,
"totalRecords": null,
"VCR": 0,
"budgetTypeId": 1,
"totalBudget": 1000,
"dateRange": "09/07/2025 - 09/13/2025",
"dataCost": 0,
"budgetMappingDataCost": 0,
"totalECPM": 10,
"campaignTimezone": "US/Eastern",
"eCPM": 10,
"bidImpressions": 3,
"preBidCost": 0,
"mediaSpent": 0.01,
"startCount": 0,
"campaignId": 562797,
"spent": 0.01,
"impressions": 1,
"completeCount": 0,
"budgetMappingSpent": 1.19,
"dailyBudget": 3.81,
"maxBid": 10,
"clicks": 0,
"campaign": "test campaign for aud vert 6",
"budgetCompletion": 0.11899999999999998,
"status": "running"
}
],
"filteredRecords": 4
}
}

Delete a report​

DELETE

Delete a report and its scheduling data by ID.

Path parameters
reportId
integer
Report ID.
Response properties
success
boolean
Indicates report was successfully created: true.
data
string
Success message.
Response 200
{
"success": true,
"data": "Report with id 123 deleted successfully"
}

Edit a report​

PATCH

Update fields of a saved report. Only the fields you send are changed.

Path parameter
reportId
integer
Report ID.
Request schema
customerIds
array of integers
Customer IDs to add to report. Parameter only available to update by Workspace users or users with Customers.
startDate
integer
Unix epoch timestamp of start date for report.
endDate
integer
Unix epoch timestamp of end date for report.
reportName
string
Updated report name.
timezoneId
integer
Timezone ID.
timezoneName
string
Timezone name.
dimensions
string
Dimensions to filter by in serialized JSON format.
columns
array of strings
List of metrics for the report obtained from dimensions and metrics details API.
requestType
integer
Report request type ID.
Supported values
1Daily
2Aggregated
3Weekly
4Monthly
reportAggregated
string
Identifies whether the report is aggregated or disaggregated.
Supported values
0Disaggregated (daily)
1Aggregated

Response properties
success
boolean
Indicates report was successfully created: true.
data
string
Success message.
Request sample
{
"startDate":1727798981000,
"endDate":1730304581000,
"reportName": "new Report",
"dimensions":"[{\"filter\":\"ioName\"},{\"filter\":\"campaign\"}]",
"columns":[
"impressions",
"clicks",
"CTR",
"VCR",
"spent",
"dataCost",
"mediaSpent",
"eCPM"
],
"requestType":2,
"reportAggregated":"0",
"timezoneName":"US/Eastern",
"timezoneId":29
}
Response 200
{
"success": true,
"data": "Report with id 123 updated successfully"
}
Response 422
{
"success": false,
"errorObjects": [
{
"error": "User does not have access for Report's customers"
}
]
}

Duplicate a report​

POST

Create a copy of a saved report. Everything except the name is copied; email schedules are not copied.

Request schema
id
integer required
Report ID to duplicate.
reportName
string
Name for the copy. Default: "Copy of original name".
Response properties
success
boolean
Indicates report was successfully created: true.
data
string
Success message.
Request sample
{
"id": 123,
"reportName": "Report name"
}
Response 200
{
"success": true,
"data": "Report duplicated successfully with id 124"
}

Scheduling management​

This section covers the various methods and endpoints for managing scheduled reports.

See the quickstart guide on Scheduling a report.

Schedule a report​

POST

Create and save a report schedule.

Request schema
reportId
integer required
Report ID.
subscriberEmails
array of strings required
List of emails to which the report will be sent.
fileType
integer required
Report file type ID.
Supported values
1CSV
2XLS
deliveryFrequency
integer required
Delivery frequency type ID.
Supported values
1One time now
2Daily until
3Weekly until
4Monthly until
deliveryDay
string
[Required, if deliveryFrequency is not "once"] Delivery day to specify the day-time when the report should be sent.
Weekly delivery day: [sunday, monday, ...].
Monthly delivery day: [first, last, 2,3, ... 29].
eventEndDate
integer
[Required if deliveryFrequency is not "once"] Unix epoch timestamp, time when scheduled report will stop.
runningTotalEnabled
boolean
Flag to indicate if the 'Running Total' is enabled for the report. Only supported with 'campaign' dimension. If true, start date for report will be earliest campaign start date, ending with report end date.
earliestCampaignStartDate
integer
[Required with runningTotalEnabled as true] Unix epoch timestamp, milliseconds. This is the campaign's earliest start date from the selected campaigns, which will be set as the start date of the report-time-period.
Request sample
{
"reportId": 1234,
"subscriberEmails": [
"sample_email1@example.com",
"sample_email2@example.com"
],
"fileType": 2,
"deliveryFrequency": 4,
"eventEndDate": 1670674106000,
"deliveryDay": "4",
"runningTotalEnabled": true,
"earliestCampaignStartDate": 1670674108900
}
Response 200
{
"success": true,
"data": {
"scheduledData": {
"earliestCampaignStartDate": 0,
"reportId": 1234,
"deliveryFrequency": 4,
"fileType": 1,
"subscriberEmails": [
"sample_email@sample.com",
"sample_email2@sample.com"
],
"eventEndDate": 1696270980000,
"deliveryDay": "5",
"runningTotalEnabled": false
},
"message": "Report schedule has been successfully updated."
}
}

Update a report schedule​

PATCH

Update a report schedule.

Path parameters
reportId
integer
Report ID.
Request schema
subscriberEmails
array of strings
List of emails to which the report will be sent.
fileType
integer
Report file type ID.
Supported values
1CSV
2XLS
deliveryFrequency
integer
Delivery frequency type ID.
Supported values
1One time now
2Daily until
3Weekly until
4Monthly until
deliveryDay
string
[Required, if deliveryFrequency is not "once"] Delivery day to specify the day-time when the report should be sent.
Weekly delivery day: [sunday, monday, ...].
Monthly delivery day: [first, last, 2,3, ... 29].
eventEndDate
integer
[Required if deliveryFrequency is not "once"] Unix epoch timestamp, time when scheduled report will stop.
runningTotalEnabled
boolean
Flag to indicate if the 'Running Total' is enabled for the report. Only supported with 'campaign' dimension. If true, start date for report will be earliest campaign start date, ending with report end date.
earliestCampaignStartDate
integer
[Required with runningTotalEnabled as true] Unix epoch timestamp, milliseconds. This is the campaign's earliest start date from the selected campaigns, which will be set as the start date of the report-time-period.
Request sample
{
"subscriberEmails": [
"sample_email1@example.com",
"sample_email2@example.com",
"sample_email3@example.com"
]
}
Response 200
{
"success": true,
"data": {
"scheduledData": {
"earliestCampaignStartDate": 0,
"reportId": 1234,
"deliveryFrequency": 4,
"fileType": 1,
"subscriberEmails": [
"sample_email1@example.com",
"sample_email2@example.com",
"sample_email3@example.com"
],
"eventEndDate": 1696270980000,
"deliveryDay": "4",
"runningTotalEnabled": false
},
"message": "Report schedule has been successfully updated."
}
}

Delete report schedule​

DELETE

Remove a report schedule.

Path parameters
reportId
integer
Report ID.
Response properties
success
boolean
Indicates report was successfully created: true.
message
string
Success message.
Response 200
{
"success": true,
"data": {
"message": "Report event is removed."
}
}

Unsubscribe an email from all scheduled reports​

GET

Unsubscribe an email from all scheduled reports or an Organization.

Query parameters
token
string
Generated on the server when populating the email template dispatched to the end user. End user is able to unsubscribe the email address by opening the link in browser.

See TypeScript prerequisites for usage.

import {
getInstance
} from "prerequisites"

const axios = getInstance();

interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"text/html": unknown;
}
};
}

function unsubscribeAllReportEmailSchedule(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/ra/report/email/schedule/unsubscribe-all',
params: {
query?: {
token?: `string`
}
}
};

return axios.request(options).then(({ data }: { data: Responses }) => data);
}

Unsubscribe an email from a report schedule​

GET

Unsubscribe an email from a report schedule.

Query parameters
token
string
Generated on the server when populating the email template dispatched to the end user. End user is able to unsubscribe the email address by opening the link in browser.

See TypeScript prerequisites for usage.

import {
getInstance
} from "prerequisites"

const axios = getInstance();

interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"text/html": unknown;
}
};
}

function unsubscribeReportEmailSchedule(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/ra/report/email/schedule/unsubscribe',
params: {
query?: {
token?: `string`
}
}
};

return axios.request(options).then(({ data }: { data: Responses }) => data);
}

Get more report details​

This section covers more endpoints for getting various details about reports.

Get URL for report download​

POST

Generate a temporary URL, valid for 3 hours, to download a report as a CSV or XLSX file based on report ID or report data. fileType is always required. If using report data, the following parameters are also required:

  • dimensions
  • columns
  • requestType
  • reportAggregated
  • startDate
  • endDate
  • timezoneId
  • timezoneName

Refer to the Resource properties table for request schema supported parameters.

info

If there is no data for the report, this endpoint will not return a URL.

note

Downloads include up to 20,000 rows; pageNo and noOfEntries don't apply.

Response properties
success
boolean
Indicates report was successfully created: true.
url
string
Download URL.
{
"id": 123
}
{
"startDate": 1670410001000,
"endDate": 1675766802000,
"dimensions": "[{\"filter\":\"campaign\"},{\"filter\":\"gender\",\"value\":[10200002]},{\"filter\":\"deviceType\",\"value\":[20300001,20300003]}]",
"columns": [
"campaignId",
"campaignName",
"deviceType",
"completeCount",
"gender",
"startTime",
"endTime",
"maxBid",
"budgetDay",
"VCR",
"eCPC",
"totalECPC",
"budgetTotal",
"impressions",
"clicks",
"winRate"
],
"customerIds": [
201353,
201352
],
"requestType": 1,
"reportAggregated": "0",
"timezoneId": 11,
"timezoneName": "UTC",
"order": "desc",
"sortBy": "impressions",
"noOfEntries": 50,
"pageNo": 1
}
{
"fileType": 1,
"dimensions": "[{\"filter\":\"campaignId\"},{\"filter\":\"campaign\"}]",
"columns": [
"impressions",
"clicks",
"CTR",
"VCR",
"spent",
"dataCost",
"mediaSpent",
"eCPM"
],
"customerIds": [],
"requestType": 3,
"reportAggregated": "0",
"startDate": 1749960000000,
"endDate": 1757995199000,
"timezoneId": 29,
"timezoneName": "US/Eastern",
"sortBy": "-impressions"
}
Response 200
{
"success": true,
"data": {
"url": "https://bucketname.s3.amazonaws.com/csv/123/reportname__1677643612992.csv"
}
}

Get a list of conversion's custom fields​

POST

Get a list of conversion's custom fields by filter parameters.

Request schema
owIds
array of integers
Filters list by Customer IDs, default is all assigned Customers.
searchField
string
Filter results by search field or ID.
sortBy
string
Sorts by ascending (+) or descending (-), default: -id.
pageNo
integer
Page number of retrieved data, default: 1.
noOfEntries
integer
Number of entries returned per page, default: 20.
Response properties
customFieldData
object
Custom field data details.
customFieldData object properties
id
integer
Pixel conversion ID.
pixelName
string
Pixel name.
customFieldName
string
Custom field name.
Request sample
{
"customerIds": [
123,
234,
345
],
"pageNo": 1,
"noOfEntries": 30,
"sortBy": "+id",
"searchField": "Pixel"
}
Response 200
{
"success": true,
"data": {
"totalRecords": 10,
"filterRecords": 3,
"customFieldData": [
{
"id": 3114,
"pixelName": "Pixel Conversion 1",
"customFieldName": "sample_one"
},
{
"id": 3114,
"pixelName": "Pixel Conversion 1",
"customFieldName": "sample_two"
},
{
"id": 3221,
"pixelName": "Pixel Conversion 2",
"customFieldName": "product_sales"
}
]
}
}

Get report request types​

GET

Get a static list of report request types.

Request type IDs
1Disaggregated (daily).
2Aggregated.
3Weekly.
4Monthly.
Response 200
{
"success": true,
"data": [
{
"id": 2,
"name": "total",
"order": 1,
"displayName": "Aggregated"
},
{
"id": 1,
"name": "daily",
"order": 2,
"displayName": "Daily"
},
{
"id": 3,
"name": "weekly",
"order": 3,
"displayName": "Weekly"
},
{
"id": 4,
"name": "monthly",
"order": 4,
"displayName": "Monthly"
}
]
}

Get report file types​

GET

Get a static list of report file types.

Report file type IDs
1CSV.
2XLS.
Response 200
{
"success": true,
"data": [
{
"name": "csv",
"id": 1,
"label": "CSV"
},
{
"name": "xlsx",
"id": 2,
"label": "XLS"
}
]
}

Get report delivery frequency types​

GET

Get a static list of report delivery frequency types.

Delivery frequency type IDs
1One time now.
2Daily until.
3Weekly until.
4Monthly until.
Response 200
{
"success": true,
"data": [
{
"name": "One Time Now",
"id": 1,
"label": "One time now"
},
{
"name": "DAY",
"id": 2,
"label": "Daily until"
},
{
"name": "WEEK",
"id": 3,
"label": "Weekly until"
},
{
"name": "MONTH",
"id": 4,
"label": "Monthly until"
}
]
}

Get dimensions and metrics details​

GET

Read more about report dimensions and metrics.

metrics object properties
id
integer
Metric ID.
label
string
Metric label.
order
integer
Display order.
fieldDataType
string
Field data type.
aggregationType
string
Indicates the aggregation type for metric values: summation or average.
description
string
Description.
defaultEnabled
boolean
Indicates the metric will be applied to a report by default: true.
key
string
Unique backend identifier of a metric/dimension.
dependentDimensions
array of integers
Dependent dimensions.

dimensions object properties
id
integer
Dimension ID.
label
string
Dimension label.
order
integer
Display order.
isFilterSupported
boolean
Indicates that filtering is supported for a dimension: true.
isRowToColumn
boolean
isCustomerDependent
boolean
Indicates the dimension is dependent on the type of Customer: true.
fieldDataType
string
Field data type.
aggregationType
string
Indicates the aggregation type for metric values: summation or average.
description
string
Description.
groupId
integer
Group ID.
key
string
Unique backend identifier of a metric/dimension.
Response 200
{
"success": true,
"data": {
"metrics": [
{
"Budget": [
{
"id": 1,
"label": "Daily Budget",
"order": 1,
"fieldDataType": "currencyUSD",
"aggregationType": "sum",
"description": "Amount up to which you allow platform to spend on average each day",
"defaultEnabled": false,
"key": "dailyBudget",
"dependentDimensions": [
1,
2,
43,
44
]
},
{
"id": 2,
"label": "Total Budget",
"order": 2,
"defaultEnabled": false,
"key": "totalBudget",
"dependentDimensions": [
1,
2,
43,
44
]
}
]
},
{
"Counts": [
{
"id": 5,
"label": "Impressions",
"order": 1,
"defaultEnabled": true,
"key": "impressions",
"dependentDimensions": null
}
]
}
],
"dimensions": [
{
"Campaign Specifics": [
{
"id": 1,
"label": "Campaign",
"order": 1,
"isFilterSupported": true,
"isRowToColumn": false,
"isCustomerDependent": true,
"fieldDataType": "text",
"description": "Campaign Name",
"groupId": 1,
"key": "campaign"
},
{
"id": 2,
"label": "Campaign ID",
"order": 2,
"isFilterSupported": true,
"isRowToColumn": false,
"isCustomerDependent": true,
"fieldDataType": "text",
"description": "Unique system-generated number assigned to each Campaign",
"groupId": 1,
"key": "campaignId"
}
]
},
{
"Locations": [
{
"id": 34,
"label": "Country",
"order": 1,
"isFilterSupported": true,
"isRowToColumn": false,
"isCustomerDependent": false,
"fieldDataType": "country",
"description": "Country the ad ran in",
"groupId": 29,
"key": "country"
},
{
"id": 35,
"label": "State",
"order": 2,
"isFilterSupported": true,
"isRowToColumn": false,
"isCustomerDependent": false,
"fieldDataType": "regionCode",
"description": "State the ad ran in",
"groupId": 30,
"key": "state"
}
]
}
]
}
}
Have a question?
Was this page helpful?