Skip to main content

Insights API

Insights reports are one of IQM's analytics tools that help Advertisers quickly identify trends and apply precise adjustments to deliver better results for campaigns. With pre-defined metrics and dimensions, Insights reports can be generated for Power Segment Insights and Voter Level Data (VLD) Insights.

Power Segment Insights (PSI) reports offer audience Insights for pre-defined political personality segments, such as office-holders, candidates, and other public figures.

Voter Level Data (VLD) Insights reports offer information about targeting in current or prior political campaigns. These reports include ad exposure, engagement data, demographic data, and voting-history details by voter.

NOTE

Some Insights reports will need to be enabled by an administrator to access. By default VLD Insights reports are not accessible to Advertiser users.

You can check an Advertiser's access to Insights reports with the Get Customer config details endpoint.

More resources​

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

Power Segment Insights​

info

Power Segment Insights (PSI) is available to Political vertical Advertisers only.

Generate PSI report​

POST

Initiates report generation for a Power Segment identified by its taxonomyId. The request is forwarded to the data team after validating the segment's current report status.

Only segments with a status of NotRequested or Failed can be triggered.

See Get Power Segment Insights list.

Request schema
taxonomyId
string
Taxonomy ID of the Power Segment.
Response properties
message
string
Success message.
Request sample
{
"taxonomyId": "IQMADV0002606"
}
Response 200
{
"success": true,
"data": {
"message": "Report generation initiated successfully."
}
}
Response 422 (report already in progress or ready)
{
"success": false,
"errorObjects": [
{
"error": "Report generation cannot be initiated. Current report status is: Processing"
}
]
}

Get Power Segment Insights list​

GET

Get a list of Power Segments and their available reports, based on search, sorting, and pagination criteria.

Query parameters
searchField
string
Search Power Segments by name.
sortBy
string
Sorts by ascending (+) or descending (-), allowed values: id, name, category.
pageNo
integer
Page number of retrieved data.
noOfEntries
integer
Number of entries returned per page, default: 20.
categories
array of strings
Filter Power Segments by category name, e.g. CABINET_MEMBERS.
visibilityScope
array of strings
Filter by visibility scope, allowed values: public, private. Default: public.
Response properties
totalRecords
integer
Total number of Power Segments.
filteredRecords
integer
Number of Power Segments matching the search/filter criteria.
powerSegmentsReports
array of objects
Power Segments matching the search/filter criteria.
object properties
id
integer
Power Segment ID.
name
string
Power Segment name.
category
string
Power Segment category.
reports
array of objects
Reports available for this Power Segment.
object properties
type
string
Report type.
status
string
Report status: NotRequested, Processing, Ready, or Failed.
generationTime
number
Estimated report generation time, in minutes.
sizeInBytes
integer
Report file size, in bytes.
taxonomyId
string
Taxonomy ID used to generate, download, or email this report.
Response 200
{
"success": true,
"data": {
"totalRecords": 2,
"filteredRecords": 2,
"powerSegmentsReports": [
{
"id": 1,
"name": "Donald Trump",
"category": "Neptune",
"reports": [
{
"type": "SPHERE",
"status": "NotRequested",
"generationTime": 3.0,
"sizeInBytes": null,
"taxonomyId": "283230NNJW"
},
{
"type": "ORBIT",
"status": "NotRequested",
"generationTime": 3.0,
"sizeInBytes": null,
"taxonomyId": "56329JJSH67"
}
]
},
{
"id": 2,
"name": "Hillary Clinton",
"category": null,
"reports": [
{
"type": "SPHERE",
"status": "NotRequested",
"generationTime": 3.0,
"sizeInBytes": null,
"taxonomyId": "HHKNW972JL"
}
]
}
]
}
}

Download PSI report​

GET

Get a presigned S3 URL for downloading the PSI report PDF for the given taxonomyId. The report must be in Ready status. If the segment's personality is private, only the owning organization can download it.

Query parameters
taxonomyId
string required
Taxonomy ID of the Power Segment.
Response properties
reportURL
string
Presigned URL for downloading the PSI report PDF.
Response 200
{
"success": true,
"data": {
"reportURL": "https://s3.amazonaws.com/..."
}
}
Response 422 (report not ready)
{
"success": false,
"errorObjects": [
{
"error": "Report is not ready for download."
}
]
}

Email PSI report​

POST

Sends the PSI report PDF for the given taxonomyId to the specified email addresses.

If the file is 10 MB or smaller the PDF is attached directly; otherwise the email includes a download link only. The report must be in Ready status.

Query parameters
taxonomyId
string required
Taxonomy ID of the Power Segment.
Request schema
emailIds
array of strings
Email addresses to send the report to, 1-15 addresses, each 1-320 characters.
Response properties
message
string
Success message.
Request sample
{
"emailIds": ["jane.doe@example.com"]
}
Response 200
{
"success": true,
"data": {
"message": "Report email sent successfully."
}
}
Response 422 (report not ready)
{
"success": false,
"errorObjects": [
{
"error": "Report is not ready for download."
}
]
}

Get Power Segment Insights category types​

GET

Get all Power Segment Insights category types with their names, display names, and display orders.

Use name as the value for the categories filter on Get Power Segment Insights list.

Response 200
{
"success": true,
"data": [
{ "id": 1, "name": "CABINET_MEMBERS", "displayName": "Cabinet Members", "order": 10 },
{ "id": 2, "name": "GOVERNOR", "displayName": "Governor", "order": 20 },
{ "id": 3, "name": "HOUSE_OF_REPRESENTATIVE", "displayName": "House of Representative", "order": 30 },
{ "id": 4, "name": "SENATOR", "displayName": "Senator", "order": 40 },
{ "id": 5, "name": "MAYOR", "displayName": "Mayor", "order": 50 }
]
}

Get Power Segment Insights avatar URL​

GET

Get a presigned S3 URL for the profile avatar image at the given s3Path, scoped to the given taxonomyId. The report must be in Ready status. If the segment's personality is private, only the owning organization can access it.

Query parameters
taxonomyId
string required
Taxonomy ID of the Power Segment.
s3Path
string required
S3 URI of the profile avatar image, scoped under the segment's own taxonomy folder.
Response properties
avatarURL
string
Presigned URL for the profile avatar image.
Response 200
{
"success": true,
"data": {
"avatarURL": "https://s3.amazonaws.com/..."
}
}
Response 422 (avatar not found)
{
"success": false,
"errorObjects": [
{
"error": "Avatar file not found for the provided taxonomyId: IQMADV0002606"
}
]
}

Get Power Segment Insights report data​

GET

Get the PSI report JSON data from S3 for the given taxonomyId, used to render the Power Segment Insights report viewer. The report must be in Ready status. If the segment's personality is private, only the owning organization can access it.

Query parameters
taxonomyId
string required
Taxonomy ID of the Power Segment.
Response properties
insightType
string
Report type: SPHERE or ORBIT.
data
object
Report content used to render the report viewer. Its shape is generated by the backend's page-builder and may change as new block types are introduced.
Response 200
{
"success": true,
"data": {
"insightType": "ORBIT",
"data": {
"id": "IQMADV0002606",
"pageData": [
{
"title": "Profile",
"id": 1,
"blocks": [
{
"type": "profileHeader",
"data": {
"firstName": "John",
"lastName": "Doe",
"subjectTitle": "Senator",
"state": "Texas"
}
}
]
}
]
}
}
}
Response 403 (private report, owner mismatch)
{
"success": false,
"errorObjects": [
{
"error": "This report is private and cannot be accessed"
}
]
}
Response 422 (report not ready)
{
"success": false,
"errorObjects": [
{
"error": "Report is not ready. Current report status is: Processing"
}
]
}

Voter Level Data (VLD) Insights report​

VLD Insights eligibility requirements​

VLD Insights reports are available for campaigns that meet certain requirements.

Read more about these requirements in our Help Center article.

Requirement typeRequirement detailsNotes
Campaign verticalPolitical.Any campaign created under a Political Advertiser account is a “Political” campaign.
Campaign statusRunning, Expired (within the past two years), Paused.
Campaign duration3 or more days.
Campaign creation dateSeptember 16, 2024 or later (or earlier upon request to IQM's support team).
Voter locationAll US states except Oregon.Due to privacy laws in the state of Oregon, we are unable to generate the VLD Insights report on any voters located there. Contact your account representative for more detailed information on the legality of reidentifying voters at the user level.
Audience typeMatched audience created from L2 IDs, Matched audience created from raw data.Your campaign must only include the audience types listed in this requirements table. For example, you cannot generate a VLD Insights report for a campaign if it includes a Matched audience created from L2 IDs and a Retargeted audience consisting of your website’s past visitors.

The VLD Insights report supports audiences you create using First Name, Last Name, Address, and Phone Number. IQM anonymizes the data in the matching process, encrypts the files, and stores them behind a firewall to protect them against information leaks.

VLD Insights resource properties​

Resource properties
vldId
integer
VLD Insights ID.
vldName
string
VLD Insights name.
vldStatus
integer
VLD Insights status type ID.
ioId
integer
Insertion order ID.
ioName
string
Insertion order name.
ioTypeId
integer
Insertion order budget type ID.
Supported values
1Budget
2Impression
isCampaignEligible
boolean
Indicates that campaign is eligible for VLD Insights report: true.
vldCreatedOn
integer
Unix epoch timestamp of creation date, in milliseconds.
vldStartDate / startDate
integer
Unix epoch timestamp of start date, in milliseconds.
vldEndDate / endDate
integer
Unix epoch timestamp of end date, in milliseconds.
campaignId
integer
Campaign ID.
campaignName
string
Campaign name.
campaignStatus
string
Campaign status type.
creativeTypeId
integer
Creative type ID.
Supported values
0All
11Image
13HTML
14Video
15Native
17Audio
timezoneId
integer
Timezone ID.
vldReportCreatable
boolean
Indicates if VLD Insights report can be generated for the given campaign and date range (true).
vldChargeableImps
integer
The number of chargeable impressions for the requested VLD Insights report.
vldChargedImps
integer
The number of impressions for which the VLD Insights report is already generated.
vldChargeableCost
integer
Cost to generate the VLD Insights report.
vldChargedCost
integer
Cost of VLD Insights report that is already generated.
fundsAvailable
boolean
Indicates if sufficient funds are available in the Advertiser's account to generate the VLD Insights report (true).
effectiveVldRate
integer
Margin rate set by the admin and Workspace for generating VLD Insights report.

Get list of VLD Insights reports​

GET

Get a list of VLD Insights reports based on search filters.

A vldId can be used in the Generate VLD Insights report, Download VLD Insights report, and Delete VLD Insights report endpoints.

Query parameters
searchField
string
Filter results by search field.
noOfEntries
integer
Number of entries returned per page, default: 200.
pageNo
integer
Page number of retrieved data.
sortBy
string
Sorts by ascending (+) or descending (-), default: -vldId.
Response 200
{
"success": true,
"data": {
"totalRecords": 10,
"vldReportDataList": [
{
"vldId": 10,
"vldName": "530667_VLD_Insights_7",
"campaignName": "prod-campaign-21145",
"campaignId": 21145,
"vldStatus": 3,
"startDate": 1603152000,
"endDate": 1603411200,
"ioId": 5,
"ioName": "Corporate, Inc.",
"isCampaignEligible": false,
"vldCreatedOn": 1721253632,
"creativeTypeId": 11,
"timezoneId": 29,
"ioTypeId": 1
},
{
"vldId": 9,
"vldName": "530667_VLD_Insights_6",
"campaignName": "Campaign-4949",
"campaignId": 4949,
"vldStatus": 3,
"startDate": 1603152000,
"endDate": 1603411200,
"ioId": 15,
"ioName": "Quinton for Mayor",
"isCampaignEligible": false,
"vldCreatedOn": 1720325578,
"creativeTypeId": 14,
"timezoneId": 29,
"ioTypeId": 1
}
],
"filteredRecords": 10
}
}

Get list of campaigns eligible for VLD Insights reports​

GET

Get a list of campaign IDs by status eligible for VLD Insights report generation.

Response properties
running, paused, expired
array of objects
Object array of campaign IDs mapped to each of these three campaign statuses.
Object properties
campaignId
integer
Campaign ID.
campaignTimezoneId
integer
Campaign timezone ID.
Response 200
{
"success": true,
"data": {
"running": [
{
"campaignId": 451351,
"campaignTimezoneId": 29
}
],
"paused": [
{
"campaignId": 451350,
"campaignTimezoneId": 29
}
],
"expired": [
{
"campaignId": 470839,
"campaignTimezoneId": 29
}
]
}
}

Generate VLD Insights report​

POST

This endpoint calculates the cost for the impressions for the VLD Insights reports based on the impressions and mark up charged on the Organization and then creates the VLD Insights reports.

info

A campaign must meet the following eligibility criteria to generate VLD Insights report:

  • Must be Political campaign
  • "running," "expired" (within last two years), "paused" status
  • Must have duration of 3 or more days
  • Creation date: Sept. 16, 2024 or later
  • Voter location: all US states (except Oregon)
  • Audience type: Matched audience
Request schema
vldStartDate
integer
Unix epoch timestamp of start date, in milliseconds.
vldEndDate
integer
Unix epoch timestamp of end date, in milliseconds.
campaignId
integer
Campaign ID.
vldId
integer
Generate Insights report again for VLD Insights ID.
Request sample
{
"campaignId": 12345,
"vldStartDate": 1722311000,
"vldEndDate": 1722315000
}
Response 200
{
"success": true,
"data": {
"vldReportCreated": true,
"campaignId": 1,
"campaignName": "Campaign Name",
"campaignStatus": "running",
"vldStartDate": 1722311000,
"vldEndDate": 1722315000,
"vldChargeableImps": 1000,
"vldChargedImps": 100,
"vldChargeableCost": 1000,
"vldChargedCost": 100,
"fundsAvailable": true
}
}

Get cost assessment for VLD Insights report​

POST

Calculates the cost for the impressions for the VLD Insights report based on impressions and the mark up charged on the Organization. This returns an estimate only; it doesn't create a report or charge the account.

Request schema
campaignId
integer
Campaign ID.
vldStartDate
integer
Unix epoch timestamp of start date, in milliseconds.
vldEndDate
integer
Unix epoch timestamp of end date, in milliseconds.
Request sample
{
"campaignId": 1,
"vldStartDate": 1722311000,
"vldEndDate": 1722315000
}
Response 200
{
"success": true,
"data": {
"vldReportCreated": true,
"campaignId": 1,
"campaignName": "Campaign Name",
"campaignStatus": "running",
"vldStartDate": 1722311000,
"vldEndDate": 1722315000,
"vldChargeableImps": 1000,
"vldChargedImps": 100,
"vldChargeableCost": 1000,
"vldChargedCost": 100,
"fundsAvailable": true
}
}

Download VLD Insights report​

POST

Get a download link for a VLD Insights report in CSV or XLSX format.

Request schema
fileTypeId
integer
File type ID.
Supported values
1XLSX
2CSV
vldId
integer
VLD Insights ID.
Response properties
vldReportUrl
string
VLD Insights report file URL.
Response 200
{
"success": true,
"data": {
"vldReportUrl": "https://tem.domain.s3.amazonaws.com/vld-campaigns/ds/2024-08-20/503481_Insights_1.xlsx?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Date=20240820T112818Z&X-Amz-"
}
}

Email VLD Insights report​

POST

Send a VLD Insights report as an email attachment to specified recipients.

Request schema
reportId
integer required
VLD Insights report ID to email.
fileTypeId
integer required
File type ID.
Supported values
1XLSX
2CSV
emailIds
array of strings required
Recipient email addresses (1–15).
Response properties
message
string
Success message.
Request sample (XLSX file)
{
"fileTypeId": 1,
"emailIds": ["user1@email.com"],
"reportId": 50
}
Request sample (CSV file)
{
"fileTypeId": 2,
"emailIds": ["user1@email.com"],
"reportId": 50
}
Response 200
{
"success": true,
"data": {
"message": "VLD report e-mail sent successfully."
}
}

Delete VLD Insights report​

DELETE

Deletes VLD Insights reports that are not marked as deleted and have a 'failed' status, requires user authorization and checks if the provided VLD Insights report IDs are valid.

Query parameters
vldId
integer
VLD Insights ID.
Response properties
success
boolean
Indicates report was successfully deleted: true.
message
string
Success message.
Response 200
{
"success": true,
"data": {
"message": "255944_VLD_Insights_2 deleted successfully"
}
}
Have a question?
Was this page helpful?