Campaign API
The Campaign API allows you to create and manage campaigns and insertion orders (IOs).
This page covers the common endpoints and methods associated with the Campaign API.
- Campaigns are targeted ad runs that operate for a set period of time under specified optimization strategies.
- Insertion orders are the parent hierarchy to campaigns and they define the contracts between an Advertiser and a media partner, as well as the parameters of an ad campaign.
More resources
- Create a campaign quickstart guide
- Create a PG campaign tutorial
- Media planning and campaign setup Help Center article
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. |
Campaign details
Campaign resource properties
Resource properties
owId integer | Organization Workspace ID. |
parentOrganizationName string | Parent Organization name. |
id integer | Campaign ID. |
uowId integer | User Organization Workspace ID. |
campaignName string | Campaign name. |
advertiserDomain string | Campaign Advertiser domain. |
creativeType integer | Creative type ID. |
campaignType integer | Campaign type ID. |
totalBudgetPacing boolean | Budget is spent equally every hour: true. |
isTvAd boolean | Specifies if campaign is TV ad: true. |
budgetDay integer | Daily budget of campaign. |
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. |
timezone integer | Timezone ID. |
startTime integer | Unix epoch timestamp of campaign start date, in milliseconds. |
endTime integer | Unix epoch timestamp of campaign end date, in milliseconds. |
status string | Status of campaign. |
creativeIds string | Comma separated creative IDs. |
dspMargin integer | Campaign DSP margin. |
platformMargin integer | Campaign platform margin. |
userDealMargin integer | Campaign user deal margin. |
spentScale boolean | Spent scale for campaign. |
conversionType string | Conversion type of campaign. |
spent integer | Campaign spent. |
bidOptimization integer | Optimize bid price based on analysis: true. |
bidPacing boolean | Budget is spent equally every hour: true. |
isBidShading boolean | Indicates whether Bid Shading is turned on (true) or off (false). |
impressionCapping integer | Maximum impressions in one inventory. |
maxDayImpressions integer | Maximum daily impressions. |
maxDayClicks integer | Maximum daily clicks. |
maxDayConversions integer | Maximum daily conversions. |
totalImpressions integer | Total conversions. |
totalClicks integer | Total clicks. |
totalConversions integer | Total conversions. |
deviceType string | Comma separated device type IDs. |
trafficType string | Comma separated traffic type IDs. |
exchanges string | Comma separated exchange IDs. |
isLocationWithOrFilter boolean | Indicates if the location should be applied with or filtered from the results. |
stateIds string | Comma separated state IDs. |
countryId integer | Country ID. |
locationDetails json | Location by uploaded file with targeting type. |
isCampaignFromNewPlatform boolean | Indicates if campaign is from the old platform. |
campaignIabCategoryIds string | Comma separated campaign IAB category IDs. |
rejectionReason string | Reason of rejecting campaign. |
creativesPlacementMapping json | Ad placement mapping with creatives (present in case of audio and video campaigns). |
organizationName string | Organization name. |
userName string | Name of user. |
userEmail string | Email of user. |
conversionTypeId integer | Conversion type ID. |
conversionIds string | Comma separated conversions IDs. |
isUnapprovedAudienceTargeted boolean | Indicates if at least one unapproved audience is targeted in campaign. |
isAllAudienceUnapproved boolean | Indicates if all targeted audiences are unapproved. |
createDate integer | Unix epoch timestamp of campaign creation date, in milliseconds. |
ioId integer | Insertion order ID. |
ioName string | Insertion order name. |
prebidAudienceSegmentIdList array of integers | Pre-bid audience segment IDs to attach campaign to segment IDs. |
campaignTypeId integer | Campaign type ID. |
budgetTypeId integer | Budget type ID. |
isEstimatorAvailable boolean | Indicates if campaign estimator is available. |
isAdvanceAudioVideoTargeted boolean | true indicates advanced targeting is enabled. |
isEditAccess boolean | Indicates if user has edit access for the requested resources. |
isMarginSet boolean | Indicates if margin is set for the Workspace/Customer. |
isApprovalAccess boolean | Indicates if user has access to approve. |
isParentInvoiceTemplateSet boolean | Indicates if Customer has set the invoice template. |
locationDetails example
"locationDetails": {
"1010": {
"fileName": "bulk-location-example(10)(2).csv",
"fileType": "location",
"validLocations": [
{
"latitude": 40.7128,
"longitude": -74.006,
"radius": 0.5,
"address": "1 Murray Street, New York, NY 10007, USA",
"locationId": 48374,
"isIncluded": true,
"cdId": 0,
"sdId": 0,
"hdId": 0
},
{
"latitude": 36.7783,
"longitude": -119.4179,
"radius": 1.0,
"address": "Center stage, 2630 Croydon Drive, Sanger, CA 93657, USA",
"locationId": 48375,
"isIncluded": true,
"cdId": 0,
"sdId": 0,
"hdId": 0
}
],
"id": 1010
},
"1011": {
"fileName": "bulk-addresses-example (4)(1).csv",
"fileType": "address",
"validLocations": [
{
"latitude": 35.7831443,
"longitude": -78.6388985,
"radius": 0.5,
"address": "16 West Jones Street,Raleigh,NC,27601",
"locationId": 48376,
"isIncluded": false,
"cdId": 0,
"sdId": 0,
"hdId": 0
},
{
"latitude": 35.7803163,
"longitude": -78.5326985,
"radius": 1.34,
"address": "1002 Lyndhurst Falls Ln,Knightdale,NC,27545",
"locationId": 48377,
"isIncluded": true,
"cdId": 0,
"sdId": 0,
"hdId": 0
},
{
"latitude": 35.8440052,
"longitude": -78.6580243,
"radius": 1.2,
"address": "4604 Gramercy Ct,Raleigh,NC,27609",
"locationId": 48378,
"isIncluded": true,
"cdId": 0,
"sdId": 0,
"hdId": 0
},
{
"latitude": 35.8074803,
"longitude": -78.6582902,
"radius": 1.5,
"address": "2612 Dover Rd,Raleigh,NC,27608",
"locationId": 48379,
"isIncluded": true,
"cdId": 0,
"sdId": 0,
"hdId": 0
},
{
"latitude": 35.7950389,
"longitude": -78.65665039999999,
"radius": 1.0,
"address": "820 Graham St ,Raleigh,NC,27605",
"locationId": 48380,
"isIncluded": true,
"cdId": 0,
"sdId": 0,
"hdId": 0
}
],
"id": 1011
}
}
Get campaign details by ID
GETGet a campaign's basic details and targeting details by ID.
| Path parameters | |
|---|---|
| campaignId integer | Campaign ID. |
| Query parameters | |
|---|---|
| isSpentRequired boolean | Flag to get the campaign spent. Default: false. |
- JSON
- TypeScript
{
"statusCode": 200,
"responseObject": {
"owId": 203578,
"parentOrganizationName": "Signup testing 1",
"id": 537599,
"uowId": 188494,
"campaignName": "TestCampaign",
"advertiserDomain": "https://iqm.com",
"creativeType": 11,
"campaignType": 1,
"totalBudgetPacing": true,
"isTvAd": false,
"budgetDay": 1199.08,
"budgetTotal": 50000.0,
"maxBid": 15.0,
"timezone": 29,
"startTime": 1726518001,
"endTime": 1727668800,
"status": "pending",
"dspMargin": 0,
"platformMargin": 0,
"userDealMargin": 0,
"spentScale": false,
"creativeIds": "676384",
"conversionType": "None",
"bidOptimization": true,
"bidPacing": true,
"isBidShading": false,
"impressionCapping": 0,
"maxDayImpressions": 0,
"maxDayClicks": 0,
"maxDayConversions": 0,
"totalImpressions": 0,
"totalClicks": 0,
"totalConversions": 0,
"deviceType": "13,15,11,12",
"trafficType": "11,12",
"exchanges": "",
"isLocationWithOrFilter": true,
"countryId": "30100001",
"locationDetails": {},
"isCampaignFromNewPlatform": true,
"organizationName": "User's Org",
"userEmail": "User@iqm.com",
"userName": "User",
"conversionTypeId": 0,
"isUnapprovedAudienceTargeted": false,
"isAllAudienceUnapproved": false,
"createDate": 1726517360,
"ioId": 15844,
"ioName": "Test2",
"prebidAudienceSegmentIdList": [],
"campaignTypeId": 1,
"budgetTypeId": 1,
"isAdvanceAudioVideoTargeted": false,
"isEstimatorAvailable": true,
"isEditAccess": true,
"isMarginSet": false,
"isApprovalAccess": false,
"isParentInvoiceTemplateSet": true
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
owId: number;
parentOrganizationName: string;
id: number;
uowId: number;
campaignName: string;
advertiserDomain: string;
creativeType: number;
campaignType: number;
totalBudgetPacing: boolean;
isTvAd: boolean;
budgetDay: number;
budgetTotal: number;
maxBid: number;
timezone: number;
startTime: number;
endTime: number;
status: string;
dspMargin: number;
platformMargin: number;
userDealMargin: number;
spentScale: boolean;
creativeIds: string;
conversionType: string;
bidOptimization: boolean;
bidPacing: boolean;
isBidShading: boolean;
impressionCapping: number;
maxDayImpressions: number;
maxDayClicks: number;
maxDayConversions: number;
totalImpressions: number;
totalClicks: number;
totalConversions: number;
deviceType: string;
trafficType: string;
exchanges: string;
isLocationWithOrFilter: boolean;
countryId: string;
locationDetails: {}
isCampaignFromNewPlatform: boolean;
organizationName: string;
userEmail: string;
userName: string;
conversionTypeId: number;
isUnapprovedAudienceTargeted: boolean;
isAllAudienceUnapproved: boolean;
createDate: number;
ioId: number;
ioName: number;
prebidAudienceSegmentIdList: number[];
campaignTypeId: number;
budgetTypeId: number;
isAdvanceAudioVideoTargeted: boolean;
isEstimatorAvailable: boolean;
isEditAccess: boolean;
isMarginSet: boolean;
isApprovalAccess: boolean;
isParentInvoiceTemplateSet: boolean;
}
}
}
}
}
function getCampaign(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v2/cmp/campaign/{campaignId}',
params: {
query?: {
isSpentRequired?: `boolean`,
},
path: {
campaignId: `number`
}
},
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaigns
GETReturns list of campaigns based on set of filters and conversionId query parameter.
A campaign id can be used to Get campaign details by ID or to perform various actions in Campaign management.
| Query parameters | |
|---|---|
searchField string | Filter results by search field. |
limit integer | Number of entries returned per page, default: 50. |
pageNo integer | Page number of retrieved data, default: 1. |
sortBy string | Sorts by ascending (+) or descending (-), default: -created. |
conversionId integer | Targeted campaign will be returned at top of list. |
status string | Filter by multiple statuses. |
owIds integer | Filter by Organization Workspace IDs. |
- JSON
- TypeScript
{
"statusCode": 200,
"responseObject": {
"totalRecords": 1498,
"data": [
{
"id": 176881,
"name": "Campaign to test duplicate copy",
"creativeTypeId": 14,
"campaignType": "CPV",
"status": "pending",
"advertiserId": 100419,
"created": 1620024156,
"modifiedDate": 1621571575,
"conversionId": 18
},
{
"id": 176880,
"name": "Campaign to test duplicate update",
"creativeTypeId": 14,
"campaignType": "CPV",
"status": "pending",
"advertiserId": 100419,
"created": 1620024050,
"modifiedDate": 1621571575,
"conversionId": 18
},
{
"id": 176879,
"name": "to test campaign duplication",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "pending",
"advertiserId": 100419,
"created": 1620023582,
"modifiedDate": 1620024188
},
{
"id": 176148,
"name": "campaign to test Inventory group and all device type",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "pending",
"advertiserId": 100419,
"created": 1618990887,
"modifiedDate": 1618992828
},
{
"id": 173357,
"name": "test cb",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "running",
"advertiserId": 100001,
"created": 1617170692,
"modifiedDate": 1619433624
},
{
"id": 173353,
"name": "test cb",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "running",
"advertiserId": 100001,
"created": 1617163055,
"modifiedDate": 1619433624
},
{
"id": 173318,
"name": "test cb1",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "running",
"advertiserId": 100001,
"created": 1617130075,
"modifiedDate": 1619433624
},
{
"id": 173317,
"name": "test cb",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "running",
"advertiserId": 100001,
"created": 1617126490,
"modifiedDate": 1619433624
},
{
"id": 173316,
"name": "test old cb",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "running",
"advertiserId": 100001,
"created": 1617125771,
"modifiedDate": 1619433624
},
{
"id": 169459,
"name": "test daily",
"creativeTypeId": 11,
"campaignType": "CPM",
"status": "pending",
"advertiserId": 100419,
"created": 1611734667,
"modifiedDate": 1618992828
}
],
"filteredRecords": 1039
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
totalRecords: number;
data: {
id: number;
name: string;
creativeTypeId: number;
campaignType: string;
status: string;
advertiserId: number;
created: number;
modifiedDate: number;
conversionId?: number;
}[];
filteredRecords: number;
};
};
};
};
}
function Getcampaigndata(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v2/cmp/campaigns/data',
params: {
query: {
searchField: `string`,
pageNo: `number`,
limit: `number`,
sortBy: `string`,
conversionId: `number`,
status: `string`,
owIds: `number`,
},
header: {
"X-IAA-HOST": `string`
}
},
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaigns with basic details
GETReturns a paginated list of campaigns with their basic details.
| Query parameters | |
|---|---|
search_field string | Search results by keyword. |
no_of_entries integer | Maximum number of entries returned, default: 50. |
pgno integer | Page number for the data, default: 1. |
order string | Sorts by ascending (asc) or descending (desc). |
creative_type_ids integer | Filter by creative type ID. |
created_time_of_creative string | Filter by creative creation time. |
status string | Filter by multiple statuses. Supported values: running, pending, paused, draft, rejected, expired. |
ow_ids integer | Filter by Organization Workspace IDs. |
- JSON
- TypeScript
{
"statusCode": 200,
"recordsTotal": 1,
"pageNumber": 1,
"pageSize": 50,
"draw": 0,
"recordsFiltered": 1,
"data": [
{
"id": "214269",
"name": "Name Edit Test_UI",
"status": "pending",
"owId": 1000,
"uowId": 1,
"advertiser_email": null,
"advertiser_id": 0,
"campaign_type": "CPM",
"creative_type": "HTML",
"dsp_id": 0,
"start_date": 1632873600,
"end_date": 1632829200,
"creative_type_id": 13,
"total_budget": 1000
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
recordsTotal: number;
pageNumber: number;
pageSize: number;
draw: number;
recordsFiltered: number;
data: {
id: string;
name: string;
status: string;
owId: number;
uowId: number;
advertiser_email: string | null;
advertiser_id: number;
campaign_type: string;
creative_type: string;
dsp_id: number;
start_date: number;
end_date: number;
creative_type_id: number;
total_budget: number;
}[];
};
};
};
}
function GetCampaignList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v2/cmp/campaigns/list',
params: {
query: {
creative_type_ids: `string`,
created_time_of_creative: `string`,
sort_by: `string`,
order: `string`,
no_of_entries: `number`,
pgno: `number`,
search_field: `string`,
status: `string`,
ow_ids: `string`,
},
header: {
"X-IAA-HOST": `string`
}
},
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get basic details of campaigns
POST| Request schema | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1. |
noOfEntries integer | Number of entries returned per page, default: 20, maximum: 500. |
sortBy string | Sorts results by specified field. |
order string | Sorts by ascending (asc) or descending (desc). |
searchField string | Filter results by search field. |
campaignIds array of integers | Filters results by provided campaign IDs. |
owIds array of integers | Filters results by provided OW IDs. |
status array of strings | Filters results by provided campaign statuses. |
responseFields array of strings | Choose which values to return in response, supported: id, campaignId, name,creativeTypeId, status, startTime, endTime, createdAt, modifiedAt, owId, organizationName, organizationLogo. |
creativeTypeIds array of integers | Filters results by provided creative type IDs. |
campaignTypeIds array of integers | Filter results by campaign type IDs. |
isAllOwIds boolean | Filters records with all allowed OW IDs if true, prioritizes records over owIds. |
ids array of integers | Prioritizes results of provided campaign group IDs over other records. |
ioIdsList array of integers | Filters results by provided insertion order IDs. |
- JSON
- TypeScript
{
"isAllOwIds": false,
"owIds": [
200002
],
"searchField": "",
"pageNo": 1,
"noOfEntries": 50
}
{
"success": true,
"data": {
"data": [
{
"campaignId": 273438,
"name": "Campaign-1",
"creativeTypeId": 11,
"campaignTypeId": 1,
"status": "deleted",
"startTime": 1658217468,
"endTime": 1658303868,
"createdAt": 1658217469,
"modifiedAt": 1661150517,
"owId": 200002,
"organizationName": "Organization-1",
"organizationLogo": "https://iqm-web-assets-c92d6b6cbde1-stage.s3.amazonaws.com/avatar/SA.png",
"ioId": 1,
"ioStatusId": 1,
"timezoneId": 11,
"ioBudgetTypeId": 1,
"ioName": "Name Insertion Order"
},
{
"campaignId": 261497,
"name": "Campaign-2",
"creativeTypeId": 11,
"campaignTypeId": 1,
"status": "running",
"startTime": 1653551400,
"endTime": 1674777600,
"createdAt": 1653550497,
"modifiedAt": 1661150407,
"owId": 200002,
"organizationName": "Organization-1",
"organizationLogo": "https://iqm-web-assets-c92d6b6cbde1-stage.s3.amazonaws.com/avatar/SA.png",
"ioId": 1,
"ioStatusId": 1,
"timezoneId": 11,
"ioBudgetTypeId": 1,
"ioName": "Name Insertion Order"
}
],
"totalRecords": 2,
"filteredRecords": 50
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
data: {
campaignId: number;
name: string;
creativeTypeId: number;
campaignTypeId: number;
status: string;
startTime: number;
endTime: number;
createdAt: number;
modifiedAt: number;
owId: number;
organizationName: string;
organizationLogo: string;
ioId: number;
ioStatusId: number;
timezoneId: number;
ioBudgetTypeId: number;
ioName: string;
}[];
totalRecords: number;
filteredRecords: number
}
}
};
};
}
function getCampaignBasicDetailList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/basic/list',
requestBody: {
content: {
"application/json": {
campaignIds?: `array of numbers`,
owIds?: `array of numbers`,
isAllOwIds?: `boolean`,
status?: `array of strings`,
creativeTypeIds?: `array of numbers`,
ids?: `array of numbers`,
responseFields?: `array of strings`,
ioIdsList?: `array of numbers`,
campaignTypeIds?: `array of numbers`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ]
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get campaign audience targeting details
POSTGet a list of audience IDs and type for each campaign ID.
| Request schema | |
|---|---|
campaignIds array of integers | Campaign IDs. |
Response properties
campaignId object | Name-value pairs of campaignId and its object properties. | |||||
| ||||||
audienceTypeId integer | Audience type ID. |
audienceIds array of integers | Audience IDs. |
- JSON
- TypeScript
{
"campaignIds": [
52241,
50322
]
}
{
"success": true,
"data": {
"543363": [],
"553441": [
{
"audienceTypeId": 1,
"audienceIds": [
1101833,
1101834,
1101835,
1102476
]
}
],
"553443": [
{
"audienceTypeId": 1,
"audienceIds": [
1101831,
1101835,
1102476
]
},
{
"audienceTypeId": 9,
"audienceIds": [
1124205,
1124206
]
}
]
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
[campaignId: number]: {
audienceTypeId: number;
audienceIds: number[];
}
}[];
};
};
};
}
function getAudienceBasicDetailByCampaign(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/audience/targeting',
requestBody: {
content: {
"application/json": {
campaignIds?: `array of numbers`,
owIds?: `array of numbers`,
isAllOwIds?: `boolean`,
status?: `array of strings`,
creativeTypeIds?: `array of numbers`,
ids?: `array of numbers`,
responseFields?: `array of strings`,
ioIdsList?: `array of numbers`,
campaignTypeIds?: `array of numbers`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaigns with filters
POSTFilter campaign list by the following parameters:
| Request schema | |
|---|---|
searchField string | Filter results by search field. |
noOfEntries integer | Number of entries returned per page, default: 20, maximum: 500. |
pageNo integer | Page number of retrieved data, default: 1. |
sortBy string | Sorts by specified field. |
order string | Sorting order, ascending (asc) or descending (desc). |
campaignIds array of integers | Filter results by campaign IDs. |
owIds array of integers | Filter results by Organization Workspace IDs. |
status array of strings | Filter results by statuses. |
created integer | Date created, unix epoch. |
isBasicInfo boolean | If true returns fewer details, if false returns all details. |
creativeTypeIds array of integers | Filter results by creative type IDs. |
campaignTypeIds array of integers | Filter results by campaign type IDs. |
ids array of integers | Prioritizes results of provided campaign IDs over other records. |
- JSON
- TypeScript
{
"isBasicInfo": true,
"sortBy": "modifiedDate",
"pageNo": 1,
"noOfEntries": 10,
"status": "pending",
"searchField": "",
"owIds": "all",
"creativeTypeIds": "",
"campaignTypeIds": [
2
],
"created": ""
}
{
"success": true,
"data": {
"totalRecords": 5435,
"data": [
{
"owId": 201900,
"parentOrganizationName": "Yashwant Ad Org",
"id": 440264,
"name": "QA Dollar API Pending - 233",
"creativeType": "Image",
"creativeTypeId": 11,
"budgetTotal": 10000,
"budgetDay": 50,
"maxBid": 21,
"startTime": 1695873600,
"uowId": 106792,
"status": "pending",
"created": 1695793014,
"modifiedDate": 1695793014,
"userName": "Yashwant",
"timeZoneName": null,
"endTime": 0,
"totalSpent": 0,
"organizationName": "Yashwant Ad workspace",
"userEmail": "yashwant.p+adv@iqm.com",
"budgetTypeId": 1,
"impression": 0,
"campaignTypeId": 2,
"pgPaymentTypeId": 2,
"totalImpressions": 0,
"isParentInvoiceTemplateSet": true,
"isApprovalAccess": true,
"isEditAccess": true,
"isMarginSet": true
},
{
"owId": 201923,
"parentOrganizationName": "Yashwant Ad Org",
"id": 440133,
"name": "IMP camp budget API - 296",
"creativeType": "Image",
"creativeTypeId": 11,
"budgetTotal": 100,
"budgetDay": 2.2,
"maxBid": 10,
"startTime": 1697700365,
"uowId": 107184,
"status": "pending",
"created": 1695744164,
"modifiedDate": 1695744164,
"userName": "Yashwant adv4",
"timeZoneName": null,
"endTime": 0,
"totalSpent": 0,
"organizationName": "Sample adv4",
"userEmail": "yashwant.p+adv4@iqm.com",
"budgetTypeId": 2,
"campaignTypeId": 1,
"impression": 0,
"totalImpressions": 10000,
"isParentInvoiceTemplateSet": true,
"isApprovalAccess": true,
"isEditAccess": true,
"isMarginSet": false
}
],
"filteredRecords": 5435
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Please provide valid value of status."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
data: {
owId: number;
parentOrganizationName: string;
id: number;
name: string;
creativeType: string;
budgetTotal: number;
budgetDay: number;
maxBid: number;
startTime: number;
uowId: number;
status: string;
created: number;
modifiedDate: number;
userName: string;
timeZoneName: string;
endTime: number;
totalSpent: number;
organizationName: string;
useremail: string;
budgetTypeId: number;
impression: number;
campaignTypeId: number;
pgPaymentTypeId: number;
totalImpressions: number;
isParentInvoiceTemplateSet: boolean;
isApprovalAccess: boolean;
isMarginSet: boolean;
}[];
filteredRecords: number
}
}
};
};
400: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string
}
}
};
};
}
function getCampaignDetails(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/customer/campaigns/list',
requestBody: {
content: {
"application/json": {
owIds?: `string`,
creativeTypeIds?: `string`,
creativeTypeIdsList?: `array of numbers`,
status?: `string`,
created?: `number`,
isBasicInfo?: `boolean`,
campaignTypeIds?: `array of numbers`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ]
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get campaign budget details
POSTCalculates and returns campaign budget and impression information. Derives any missing budget or daily-impression value from the supplied combination of total budget, timezone, daily budget, start/end time, and budget type.
When a scheduling map is provided, daily amounts are proportionally distributed across scheduled hours only. Pass isGraphInfoRequired=true to include per-day graph data in the response.
| Request schema | |
|---|---|
campaignId integer | Campaign ID to get budget info for. |
budgetTotal integer | Campaign total budget. Note: can be omitted if fixed daily budget, start time, and end time are provided. |
budgetDay integer | Campaign daily budget. Note: can be omitted if fixed daily budget, start time, and end time are provided. |
fixedDailyBudget boolean | Flag to indicate whether daily budget is fixed or not, default: false. |
startTime integer required | Campaign start time. |
endTime integer | Campaign end time. Note: can be omitted if fixed daily budget, start time, and end time are provided. |
timezone integer required | Timezone ID. |
budgetTypeId integer | Budget Type ID of given campaign (impression-based or dollar-based). |
campaignTypeId integer | Campaign Type ID, default: 1 (Advanced). |
isGraphInfoRequired boolean | Include per-day graphInfo data in the response: true. |
scheduling object | Map of weekday index (0–6) to an array of [startTime, endTime] string ranges campaign delivery is scheduled for that day. |
maxBid integer | Maximum allowed bid price, used for impression-based PG campaigns. |
totalImpressions integer | Targeted total impressions, used for impression-based PG campaigns. |
dailyImpressions integer | Targeted daily impressions, used for impression-based campaigns. |
Response properties
campaignId integer | Campaign ID, only present when a campaignId was supplied in the request. | |||||||
budgetTotal integer | Campaign total budget. | |||||||
actualSpent integer | Amount spent by the campaign so far. | |||||||
budgetDay integer | Campaign daily budget. | |||||||
fixedDailyBudget boolean | Whether daily budget is fixed. | |||||||
startTime integer | Campaign start time. | |||||||
endTime integer | Campaign end time. | |||||||
timezone integer | Timezone ID. | |||||||
budgetTypeId integer | Budget Type ID of given campaign (impression-based or dollar-based). | |||||||
dailyImpressions integer | Targeted daily impressions, only present for impression-based campaigns. | |||||||
actualImpressionSpent integer | Impressions served so far, only present for impression-based campaigns. | |||||||
totalImpressions integer | Targeted total impressions, only present for impression-based campaigns. | |||||||
maxBid integer | Maximum allowed bid price, only present for impression-based PG campaigns. | |||||||
spendingBudget integer | Budget available for delivery after PG fees, only present for PG campaigns. | |||||||
pgFeesBudget integer | Budget reserved for PG deal fees, only present for PG campaigns. | |||||||
graphInfo array of objects | Per-day budget graph data, only present when isGraphInfoRequired is true. | |||||||
| ||||||||
date string | Date of the graph data point. |
amount integer | Budget amount for the date. |
type string | Amount type: spent or projected. |
- JSON
- TypeScript
{
"campaignId": 12345,
"budgetTotal": 10000.00,
"startTime": 1700000000,
"endTime": 1702678400,
"timezone": 1,
"budgetTypeId": 1,
"isGraphInfoRequired": false,
"scheduling": {
"0": [["09:00:00", "17:00:00"]],
"1": [["09:00:00", "17:00:00"]]
}
}
{
"statusCode": 200,
"responseObject": {
"campaignId": 12345,
"budgetTotal": 10000.00,
"budgetDay": 476.19,
"actualSpent": 1200.50,
"fixedDailyBudget": false,
"startTime": 1700000000,
"endTime": 1702678400,
"timezone": 1,
"budgetTypeId": 1,
"graphInfo": []
}
}
More responses
{
"statusCode": 400,
"errorObjects": [
{
"error": "Start time is required"
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
campaignId?: number;
budgetTotal: number;
actualSpent: number;
budgetDay: number;
fixedDailyBudget: boolean;
startTime: number;
endTime: number;
timezone: number;
budgetTypeId: number;
dailyImpressions?: number;
actualImpressionSpent?: number;
totalImpressions?: number;
maxBid?: number;
spendingBudget?: number;
pgFeesBudget?: number;
graphInfo?: {
date: string;
amount: number;
type: string;
}[];
};
};
};
};
}
function getCampaignBudgetInfo(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v2/cmp/campaign/budgetInfo',
requestBody: {
content: {
"application/json": {
campaignId: `number`,
budgetTotal: `number`,
budgetDay: `number`,
fixedDailyBudget: `boolean`,
startTime: `number`,
endTime: `number`,
timezone: `number`,
budgetTypeId: `number`,
campaignTypeId: `number`,
isGraphInfoRequired: `boolean`,
scheduling: `object`,
maxBid: `number`,
totalImpressions: `number`,
dailyImpressions: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaign groups
POSTFilter campaign list by the following parameters:
| Request schema | |
|---|---|
searchField string | Filter results by search field. |
noOfEntries integer | Number of entries returned per page, default: 20, maximum: 500. |
pageNo integer | Page number of retrieved data, default: 1. |
sortBy string | Sorts by specified field. |
order string | Sorting order, ascending (asc) or descending (desc). |
campaignGroupIds array of integers | Filter results by campaign group IDs. |
owIds array of integers | Filter results by Organization Workspace IDs. |
isAllOwIds boolean | Filters records with all allowed OW IDs if true, prioritizes records over owIds. |
ids array of integers | Prioritizes results of provided campaign group IDs over other records. |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 20,
"owIds": [],
"ids": [
1235
],
"sortBy": "id",
"order": "asc",
"searchField": ""
}
{
"success": true,
"data": {
"data": [
{
"groupId": 1234,
"groupName": "campaign group -1",
"createdDate": 1668201219,
"owId": 1
},
{
"groupId": 1235,
"groupName": "campaign group -2",
"createdDate": 1674798403,
"owId": 1
}
],
"totalRecords": 2,
"filteredRecords": 2
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "invalid arguments owIds!"
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
data: {
groupId: number;
groupName: string;
createdDate: number;
owId: number;
}[]
totalRecords: number;
filteredRecords: number
}
}
};
};
400: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string;
}[]
}
};
};
}
function getCampaignGroupList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/campaigngroup/list',
requestBody: {
content: {
"application/json": {
searchField?: `string`,
noOfEntries?: `number`,
pageNo?: `number`,
sortBy?: `string`,
order?: `string`,
campaignGroupIds?: `array of numbers`,
owIds?: `array of numbers`,
isAllOwIds?: `boolean`,
ids?: `array of numbers`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get deals associated with campaigns
GETGet a list of campaigns and their associated deal IDs by campaign Type ID.
| Path parameter | |
|---|---|
campaignTypeId integer | Campaign type ID. |
Response properties
data object | Name-value pairs of campaignId and an array of deal IDs. |
- JSON
- TypeScript
{
"success": true,
"data": {
"503584": [
468,
469,
23
],
"503947": [
468,
469
],
"504447": [
468,
469
],
"504448": [
589,
588
],
"505743": [
468,
469
],
"505753": [
468,
469
],
"505754": [
468,
469
],
"505755": [
588,
589
],
"505758": [
468,
469
]
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success?: boolean;
errorObjects?: {
error?: string;
reason?: string;
field?: string;
}[];
data?: Record<string, never>;
};
};
};
}
function getDealsPerCampaign(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/campaigns/{campaignTypeId}/deals',
params: {
path: {
campaignTypeId: `number`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get campaign count by status
POSTThis API returns a count of campaigns for each status type.
| Request schema | |
|---|---|
owIds string | Comma separated Organization Workspace IDs, returns campaign counts (supported: all). |
ioIdsstring | Comma separated insertion order IDs, returns campaign counts (with owIds = all). |
campaignTypeIds string | Filter results by campaign type IDs (ioIds also required). |
campaignExpiredAfterEpoch integer | Unix epoch timestamp (in milliseconds) expiration. |
searchField string | Returns campaign counts for field matched campaign ID or Name. |
Response properties
order integer | Display order. |
status_key string | Status key. |
status_label string | Status label. |
status_count integer | Campaign count. |
- JSON
- TypeScript
{
"owIds": "all",
"ioIds": "1,2,3"
}
{
"success": true,
"data": [
{
"order": 0,
"status_key": "running",
"status_label": "Running",
"status_count": 10
},
{
"order": 1,
"status_key": "pending",
"status_label": "Pending",
"status_count": 11
},
{
"order": 2,
"status_key": "paused",
"status_label": "Paused",
"status_count": 22
},
{
"order": 5,
"status_key": "deleted",
"status_label": "Deleted",
"status_count": 33
},
{
"order": 6,
"status_key": "expired",
"status_label": "Expired",
"status_count": 44
},
{
"order": 3,
"status_key": "draft",
"status_label": "Draft",
"status_count": 55
},
{
"order": 7,
"status_key": "rejected",
"status_label": "Rejected",
"status_count": 66
},
{
"order": 8,
"status_key": "all",
"status_label": "ALL",
"status_count": 77
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
order: number;
status_key: string;
status_label: string;
status_count: string;
}[];
}
}
};
}
function getCampaignsCount(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/campaigns/count',
requestBody: {
content: {
"application/json": {
owIds: `string`,
ioIds: `string`,
campaignTypeIds: `string`,
campaignExpiredAfterEpoch: `number`,
searchField: `string`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get campaign count with campaign type
POSTReturns values of campaign types with count of campaigns.
| Request schema | |
|---|---|
budgetTypeIds array of integers | Filters results for selected budget type ID: dollar-based campaign or impression-based campaign. |
statusList array of strings | Filters results for types of campaign statuses. |
countRequired boolean | Returns campaigns count with campaign type if true. |
campaignIds array of integers | Filters results for selected campaign IDs. |
ioIds array of integers | Filters results for selected insertion order IDs. |
creativeTypeIds array of integers | Filters results for creative type IDs. |
| Properties | |
|---|---|
Advanced ID: 1 | Campaign with audience, impressions, and bid optimization settings. |
PG ID: 2 | Campaign associated with PG deal. |
Response properties
campaignTypeDetails object | Campaign type details. | |||||||||||
| ||||||||||||
id integer | Campaign type ID. |
order integer | Display order. |
name integer | Campaign type name. |
label integer | Campaign type label. |
count integer | Campaign count. |
- JSON
- TypeScript
{
"statusList": [
"pending"
],
"creativeTypeIds": [
11
],
"budgetTypeIds": [
1
],
"campaignIds": [
23434,
46453
],
"countRequired": "true"
}
{
"success": true,
"data": {
"totalRecords": 2,
"filteredRecords": 2,
"campaignTypeDetails": [
{
"id": 1,
"order": 1,
"name": "advanced",
"label": "Advanced",
"count": 1
},
{
"id": 2,
"order": 2,
"name": "pg",
"label": "PG",
"count": 3
}
]
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
campaignTypeDetails: {
id: number;
order: number;
name: string;
label: string;
count: number
}[]
}
}
};
};
}
function getCampaignsCountWithCampaignType(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/campaign-type/count',
requestBody: {
content: {
"application/json": {
budgetTypeIds?: `array of numbers`,
statusList?: `array of strings`,
countRequired?: `boolean`,
campaignIds?: `array of numbers`,
ioIds?: `array of numbers`,
creativeTypeIds?: `array of numbers`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get campaign count by creative type
GETGet a count of campaigns by creative type ID and given Organization Workspace IDs.
| Query parameters | |
|---|---|
sortType string | Sort by ascending (asc) or descending (desc). |
creativeTypeIds integer | Comma separated creative type IDs, supported values: Image: 11. HTML: 13. Video: 14. Ticker Banner: 16. Audio: 17. GOTV: 18. |
searchField string | Filter results by search field. |
owIds integer | Filter results by comma separated Organization Workspace IDs. |
Response properties
order integer | Display order. |
status_key string | Status key. |
status_label string | Status label. |
status_count integer | Campaign count. |
- JSON
- TypeScript
{
"statusCode": 200,
"responseObject": [
{
"order": 0,
"status_key": "running",
"status_label": "Running",
"status_count": 14
},
{
"order": 2,
"status_key": "paused",
"status_label": "Paused",
"status_count": 3
},
{
"order": 7,
"status_key": "all",
"status_label": "ALL",
"status_count": 17
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
order: number;
status_key: string;
status_label: string;
status_count: number;
}[];
};
};
};
}
function CampaignCountbycreativetype(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v2/cmp/campaigns/count',
parameters: {
query: {
sortType: `string`,
creativeTypeIds: `string`,
searchField: `string`,
owIds: `string`,
};
},
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get creative type and campaigns count
POST| Request schema | |
|---|---|
owIds array of integers | Filters results by Organization Workspace IDs. |
ioIds array of integers | Filters results by insertion order IDs. |
status string | Filters results based on list of statuses, pass empty string to filter for all statuses. |
statusList array of strings | Filters results for types of campaign statuses. |
Response properties
count integer | Campaign count. |
creativeType string | Creative type. |
creativeTypeId integer | Creative type ID. |
- JSON
- TypeScript
{
"ioIds": [
0
],
"owIds": [
0
],
"status": "string",
"statusList": [
"string"
]
}
{
"success": true,
"data": [
{
"count":3,
"creativeType": "Image",
"creativeTypeId": 11
},
{
"count": 0,
"creativeType": "HTML",
"creativeTypeId": 13
},
{
"count": 0,
"creativeType": "Video",
"creativeTypeId": 14
},
{
"count": 1,
"creativeType": "Audio",
"creativeTypeId": 17
},
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
count: number;
creativeType: number;
creativeTypeId: number;
}[]
}
};
};
422: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string
}[]
}
};
};
}
function getCampaignCountWithCreativeTypeByIoIds(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/creative-types/count',
requestBody: {
content: {
"application/json": {
ioIds?: `array of numbers`,
owIds?: `array of numbers`,
status?: `string`,
statusList?: `array of strings`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid ioIds."
}
]
}
Get campaign conversion list
GETGet a list of conversion details. See the Conversions API for more details.
| Query parameters | |
|---|---|
conversionIds string | Comma separated conversion IDs. |
owId integer | Organization Workspace ID. |
Response properties
id integer | Conversion ID. |
name string | Conversion name. |
status string | Conversion status. |
created integer | Unix epoch timestamp of conversion creation time. |
{
"success": true,
"data": {
"totalRecords": 2,
"conversionData": [
{
"id": 3436,
"name": "pixel conversion-1",
"status": "Active",
"created": 1688369815
},
{
"id": 3434,
"name": "pixel conversion-2",
"status": "Active",
"created": 1688369669
}
],
"filteredRecords": 2
}
}
Get basic conversion list
GETGet a basic list of conversion details. See the Conversions API for more details.
| Query parameters | |
|---|---|
excludeConversionIds string | Exclude specified conversion IDs from results. |
owId integer | Organization Workspace ID. |
conversionTypeId integer | Filter results by conversion type ID. |
searchField string | Filter results by search field. |
sortBy string | Sorts by ascending (+) or descending (-), default: -created. |
limit integer | Number of entries returned per page, default: 20. |
pageNo integer | Page number of retrieved data, default: 1. |
Response properties
id integer | Conversion ID. |
name string | Conversion name. |
uuid string | Conversion UUID. |
typeId integer | Conversion type ID. |
owId integer | Organization Workspace ID. |
createdByUowId integer | Creator's Organization Workspace ID. |
modifiedByUowId integer | Modifier's Organization Workspace ID. |
statusId integer | Conversion status ID. |
created integer | Unix epoch timestamp of conversion creation time. |
postbackPartnerId integer | Postback partner ID, only for Postback conversions. |
{
"success": true,
"data": {
"data": [
{
"id": 3991,
"name": "Name of Conversion",
"uuid": "80543cfa18674057923df7aa1fa1f8d6",
"typeId": 2,
"owId": 201427,
"createdByUowId": 9480,
"modifiedByUowId": 9480,
"statusId": 1,
"created": 1689378218,
"postbackPartnerId": 2
}
],
"totalRecords": 28,
"filteredRecords": 1
}
}
Get campaign start date
GETGet campaign start date.
Response properties
start_time integer | Unix epoch timestamp of campaign start time. |
- JSON
- TypeScript
{
"statusCode": 200,
"responseObject": {
"start_time": 1632286201
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
start_time: number;
};
};
};
};
}
function Getcampaignstartdate(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v2/cmp/campaign/start',
params: {
headers: {
'X-IAA-HOST': `string`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaign start dates or end dates
POSTPOST
Get a paginated list of campaign's start dates with supported filters.
| Request schema | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1. |
noOfEntries integer | Number of entries returned per page, default: 300. |
sortBy string | Sorts by ascending (+) or descending (-), default: -campaignDate. |
startDate string | Filter results by campaign start date, only returns results that have a start date greater than the specified date. |
endDate string | Filter results by campaign end date, only returns results that have an end date less than the specified date. |
ids array of integers | Prioritizes selected campaigns over other dates in response. |
isAllOwIds boolean | Filter results with all allowed OW IDs, if true prioritizes over owIds. |
owIds array of integers | Filters for specified Customer OW IDs. |
Response properties
data array of strings | List of dates. |
- JSON
- TypeScript
{
"noOfEntries": 10,
"pageNo": 1,
"owIds": [],
"ids": [],
"searchField": "",
"sortBy": "-campaignDate"
}
{
"success": true,
"data": {
"data": [
"02/21/2023",
"01/27/2023",
"01/20/2023",
"01/11/2023",
"01/06/2023",
"01/05/2023",
"12/29/2022",
"12/28/2022",
"12/23/2022",
"12/22/2022"
],
"totalRecords": 42,
"filteredRecords": 42
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
data: string[]
}
}
};
};
}
function getCampaignStartDateList(): Promise<Responses> {
/*
*or
*
* function getCampaignEndDateList(): Promise<Responses> {
*/
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/startDate/list',
/*
* or
*
* url: 'https://api.iqm.com/api/v3/cmp/endDate/list',
*/
requestBody: {
content: {
"application/json": {
owIds?: `array of numbers`,
isAllOwIds?: `boolean`,
ids?: `array of strings`,
startDate?: `string`,
endDate?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ]
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get campaign report data
GETGet report data by campaign IDs and other filters.
| Query parameters | |
|---|---|
searchField string | Search results by ID or name. |
limit integer | Number of entries returned per page, default: 10. |
pageNo integer | Page number of retrieved data, default: 1. |
sortBy string | Sorts by ascending (+) or descending (-), default: -created. Supported values: created, name, id, status, modifiedDate. |
status string | Filter results by the following status values: running, paused, pending, expired, draft. |
conversionId integer | Filter results by conversion ID. |
campaignIds integer | Filter results by comma separated campaign IDs. |
Response properties
id integer | Report ID. |
name string | Report name. |
status string | Report status. |
clicks integer | Clicks count. |
impression integer | Impressions count. |
conversionCount integer | Conversion count. |
uniqueCount integer | Uniques count. |
creativeType string | Creative type. |
- JSON
- TypeScript
{
"success": true,
"data": {
"totalRecords": 290,
"data": [
{
"id": 240946,
"name": "Campaign-1",
"status": "draft",
"clicks": 0,
"impression": 0,
"conversionCount": 0,
"uniqueCount": 0,
"creativeType": "VIDEO"
},
{
"id": 241058,
"name": "Campaign-2",
"status": "expired",
"clicks": 0,
"impression": 0,
"conversionCount": 0,
"uniqueCount": 0,
"creativeType": "IMAGE"
}
],
"filteredRecords": 290
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
success: boolean;
data: {
totalRecords: number;
data: {
id: number;
name: string;
status: string;
clicks: number;
impression: number;
conversionCount: number;
uniqueCount: number;
creativeType: string;
}[];
filteredRecords: number;
};
};
};
};
}
function GetCampaignReportData(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/campaigns/report/data',
parameters: {
query: {
status: `string`,
sortBy: `string`,
limit: `string`,
pageNo: `string`,
searchField: `string`,
conversionId: `string`,
campaignIds: `string`,
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Campaign management
Create, update and manage campaigns.
Create new campaign
POSTPOST
Create a new campaign in pending or draft status.
Request schema
campaignName string | Campaign name. | |||||||||
isAgreementChecked boolean | Check to proceed: true. | |||||||||
ioId string | Insertion order ID that campaign belongs to. | |||||||||
templateId integer optional | Campaign template ID to create the campaign from. | |||||||||
countryId string | Country ID. | |||||||||
advertiserDomain string | Advertiser domain. | |||||||||
creativeType integer | Creative type ID. | |||||||||
campaignType integer | Campaign type ID. | |||||||||
startTime integer | Campaign start time. | |||||||||
endTime integer | Campaign end time (required if total budget pacing is enabled). | |||||||||
excludeFromPlatformServing boolean optional | Exclude campaign from platform serving. | |||||||||
forTest boolean optional | Indicates campaign for test. | |||||||||
dspMarginJson string optional | Campaign DSP margin JSON. | |||||||||
platformMarginJson string optional | Campaign platform margin JSON. | |||||||||
dspMargin integer optional | Campaign DSP margin number. | |||||||||
platformMargin integer optional | Campaign platform margin number. | |||||||||
userDealMargin integer optional | Campaign user deal margin number. | |||||||||
totalBudgetPacing boolean | Budget is spent equally every hour: true. | |||||||||
budgetDay integer | Daily budget for campaign serving daily (not applicable if budget pacing is set to true). | |||||||||
budgetTotal integer | Total budget for campaign serving period. | |||||||||
budgetTypeId integer | Budget type ID. | |||||||||
maxBid integer | Max bid for each bid request. | |||||||||
minBid integer optional | Minimum bid for each bid request. | |||||||||
allowedMinBid integer optional | Server-enforced minimum bid floor allowed for this campaign. | |||||||||
totalCPM integer optional | Total CPM for the campaign. | |||||||||
thirdPartyCost integer optional | Campaign-level 3rd-party cost override, between 0 and 999. Omit to keep the account-level cost applied. Only honored when 3rd-party cost is active and campaign-level editing is enabled for the Advertiser's workspace. | |||||||||
timezone integer | Timezone ID for campaign. | |||||||||
creativeIds string | Comma separated creative IDs. | |||||||||
bidOptimization boolean optional | Optimize bid price based on analysis: true. | |||||||||
bidPacing boolean optional | Budget is spent equally every hour: true. | |||||||||
impressionCapping integer optional | Maximum impressions in one inventory. | |||||||||
frequencyCapEnabled boolean optional | Enables frequency capping via frequencyCapping: true. | |||||||||
frequencyCapping object optional | Map of frequency cap type ID to cap duration/value, keyed by the recurrence period the cap applies over. | |||||||||
| ||||||||||
frequencyCapDuration integer | Number of days/weeks/months the cap spans (per the key's type); must be 0 for the "campaign duration" type (ID 4). |
frequencyCapValue integer | Maximum impressions allowed within frequencyCapDuration. |
maxDayClicks integer optional
totalClicks integer optional
maxDayImpressions integer optional
totalImpressions integer optional
maxDayConversions integer optional
totalConversions integer optional
spentScale boolean optional
targetCPI integer optional
conversionType string optional
Allowed values: install, non-install.
conversionTypeId integer
conversionIds string optional
appURL string optional
carriers string optional
networkType string optional
deviceType string optional
trafficType string optional
manufacturer string optional
os string optional
osVersion string optional
exchanges string
prebidAudienceSegmentIdList array of integersoptional
device string optional
publisherAdCategory string
userDealId string optional
groupDealId string optional
politicalAdvertiserClientId integer optional
advertiserType string optional
stateIds string optional
dmaIds string optional
zipcodes string optional
congressionalDistrictIds string optional
senateDistrictIds string optional
houseDistrictIds string optional
gotvLocationId integer optional
locationFileIds string optional
geoRadiusDetails array of objects optional
radiusUpdatedLocations object optional
removedLocationIds string optional
ageRangeIds string optional
genderIds string optional
interestIds string optional
incomeRangeIds string optional
languageIds string optional
ethnicityIds string optional
scheduling string optional
campaignIabCategoryIds string optional
isAdvanceAudioVideoTargeted boolean
isBidShading boolean optional
creativeAdvanceTargeting JSON optional
campaignEstimatorMetaData JSON optional
campaignOptimizationType string optional
Allowed values: ai_based, rule_based.
When ai_based, campaignOptimization is required.
When rule_based, any campaignOptimization sent is ignored.
campaignOptimization object optional
Required when campaignOptimizationType is ai_based.
campaignOptimization object properties
aiObjective integer | AI optimization objective ID. |
aiGoal integer | AI optimization goal ID. |
aiTargetKpi integer | AI target KPI value. |
aiConversionId integer | Conversion ID for AI optimization. |
inventoryKeywords array of strings optional
inventoryUrls array of strings optional
pmpDealIds array of integers optional
creativesPlacementMapping object optional
isTvAd boolean optional
Response properties
data integer | Campaign ID. |
message string | Success message. |
status string | Campaign status. |
- JSON
- TypeScript
{
"campaignName": "Sample campaign name ",
"isAgreementChecked": true,
"advertiserDomain": "https://www.example.com",
"creativeType": 14,
"budgetTotal": 100,
"budgetTypeId": 1,
"startTime": 1598427074,
"budgetDay": 18,
"timezone": 105,
"creativeIds": "100027,100028",
"maxBid": 10,
"minBid": 1,
"allowedMinBid": 0.5,
"totalCPM": 8,
"bidOptimization": false,
"bidPacing": true,
"isBidShading": true,
"impressionCapping": 2,
"frequencyCapEnabled": true,
"frequencyCapping": {
"1": {
"frequencyCapDuration": 6,
"frequencyCapValue": 5
},
"4": {
"frequencyCapDuration": 0,
"frequencyCapValue": 100
}
},
"conversionType": "install",
"conversionTypeId": 1,
"appURL": "https://www.example.com",
"totalBudgetPacing": false,
"carriers": "293,294",
"networkType": "13",
"deviceType": "15",
"trafficType": "11",
"manufacturer": "451,155",
"os": "11,14",
"osVersion": "11,12,13",
"exchanges": "27,21",
"publisherAdCategory": "112",
"userDealId": "1,2,b",
"countryId": 246,
"ioId": "20",
"politicalAdvertiserClientId": 17,
"locationFileIds": "1011,1010",
"stateIds": "30200031,30200032",
"prebidAudienceSegmentIdList": [
10,
11,
12
],
"campaignEstimatorMetaData": {
"reachMeta": {},
"landScapeMeta": {},
"sliderMeta": {}
},
"campaignOptimizationType": "ai_based",
"campaignOptimization": {
"aiObjective": 1,
"aiGoal": 8,
"aiTargetKpi": 10
},
"isAdvanceAudioVideoTargeted": true,
"creativeAdvanceTargeting": {
"placementType": [
20600001
],
"rollPosition": [
20700001
],
"playerSize": [
20800001
],
"skippability": [
20900001
],
"playbackMethod": [
21000001
]
},
"inventoryKeywords": [
"Clothing",
"Education"
],
"inventoryUrls": [
"https://www.google.com",
"https://www.iqm.com"
]
}
{
"statusCode": 201,
"responseObject": {
"data": 123456,
"message": "Campaign saved successfully.",
"status": "pending"
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
statusCode: number;
responseObject: {
data: number;
message: string;
status: string;
}
}
};
};
}
function saveCampaign(): Promise<Responses> {
/*
* or function saveDraftCampaign(): Promise<Responses> {
*/
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v2/cmp/campaigns/add',
/*
* or url : 'https://api.iqm.com/api/v2/cmp/campaigns/draft/add',
*/
requestBody: {
content: {
"application/json": {
advertiserId?: `number`,
dspId?: `number`,
owId?: `number`,
uowId?: `number`,
id?: `number`,
campaignName?: `string`,
advertiserDomain?: `string`,
creativeType?: `number`,
campaignType?: `number`,
totalBudgetPacing?: `boolean`,
budgetDay?: `number`,
budgetTotal?: `number`,
maxBid?: `number`,
timezone?: `number`,
startTime?: `number`,
endTime?: `number`,
status?: `string`,
created?: `number`,
excludeFromPlatformServing?: `boolean`,
forTest?: `boolean`,
modifiedDate?: `string`,
dspMarginJson?: `string`,
platformMarginJson?: `string`,
dspMargin?: `number`,
platformMargin?: `number`,
userDealMargin?: `number`,
isAgreementChecked?: `boolean`,
spentScale?: `boolean`,
creativeIds?: `string`,
targetCPI?: `number`,
conversionType?: `string`,
conversionTypeId?: `number`,
appURL?: `string`,
bidOptimization?: `boolean`,
bidPacing?: `boolean`,
impressionCapping?: `number`,
maxDayImpressions?: `number`,
maxDayClicks?: `number`,
maxDayConversions?: `number`,
totalImpressions?: `number`,
totalClicks?: `number`,
totalConversions?: `number`,
bidStrategyFlag?: `boolean`,
ioId?: `number`,
prebidAudienceSegmentIdList?: `array of numbers`,
isBidShading?: `boolean`,
carriers?: `string`,
networkType?: `string`,
deviceType?: `string`,
trafficType?: `string`,
manufacturer?: `string`,
device?: `string`,
os?: `string`,
osVersion?: `string`,
technologyFlag?: `boolean`,
exchanges: `string`,
advancedFlag?: `boolean`,
userDealId?: `string`,
groupDealId?: `string`,
publisherAdCategory: `string`,
campaignIabCategoryIds?: `string`,
stateIds?: `string`,
countryId?: `number`,
dmaIds?: `string`,
zipcodes?: `string`,
locationFileIds?: `string`,
inventoryKeywords?: `array of strings`,
inventoryUrls?: `array of strings`,
pmpDealIds?: `array of numbers`,
politicalAdvertiserClientId?: `number`,
scheduling?: {
[key: `string`]: `Record<string, never>`,
},
ageRangeIds?: `string`,
genderIds?: `string`,
languageIds?: `string`,
incomeRangeIds?: `string`,
ethnicityIds?: `string`,
interestIds?: `string`,
demographicTargetingFlag?: `boolean`,
conversionIds?: `string`,
creativesPlacementMapping?: {
[key: `string`]: `number`,
},
isTvAd?: `boolean`,
creativeAdvanceTargeting?: {
[key: `string`]: `array of numbers`
},
budgetTypeId?: `number`,
campaignEstimatorMetaData?: {
reachMeta?: {
[key: string]: Record<string, never>;
};
landScapeMeta?: {
[key: string]: Record<string, never>;
};
sliderMeta?: {
[key: string]: Record<string, never>;
},
},
customAudienceTargeted?: `boolean`,
advanceAudioVideoTargeted?: `boolean`,
isAdvanceAudioVideoTargeted?: `boolean`,
};
};
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update campaign
PATCHPUT
Update a campaign's properties.
When updating an impression-based campaign that has never had totalImpressions set (most commonly, one still in draft), budgetTotal and totalImpressions are required. For a dollar-based campaign, provide the applicable budget value. For an impression-based campaign, provide the applicable impressions value. Otherwise provide 0 for the respective field.
If campaign is in draft status, this API will automatically update status from draft to pending. In all other cases status will not be updated.
| Path parameters | |
|---|---|
campaignId integer | Campaign ID. |
Supported properties
id integer | Campaign ID. | ||||||||
campaignName string | Campaign name. | ||||||||
isAgreementChecked boolean | Check to proceed: true. | ||||||||
countryId integer | Country ID. | ||||||||
advertiserDomain string | Advertiser domain. | ||||||||
creativeType integer | Creative type ID. | ||||||||
campaignType integer | Campaign type ID. | ||||||||
totalBudgetPacing boolean | Budget is spent equally every hour: true. | ||||||||
budgetDay integer | Daily budget for campaign serving daily. | ||||||||
budgetTotal integer required | Total budget for campaign serving period. Required when editing a draft campaign. For a dollar-based campaign, provide the applicable budget value. For an impression-based campaign, pass 0. | ||||||||
budgetTypeId integer | Budget type ID of the campaign. | ||||||||
maxBid integer | Max bid for each bid request. | ||||||||
minBid integer | Minimum bid for each bid request. | ||||||||
totalCPM integer | Total CPM for the campaign. | ||||||||
thirdPartyCost integer | Campaign-level 3rd-party cost override, between 0 and 999. Omit to keep the current cost applied. Only honored when 3rd-party cost is active and campaign-level editing is enabled for the Advertiser's workspace. | ||||||||
timezone integer | Timezone ID for campaign. | ||||||||
startTime integer | Campaign start time. | ||||||||
endTime integer | Campaign end time. | ||||||||
status string | Status of campaign. | ||||||||
excludeFromPlatformServing boolean | Exclude campaign from platform serving. | ||||||||
forTest boolean | Indicates campaign for test. | ||||||||
modifiedDate integer | Campaign modified date. | ||||||||
dspMarginJson string | Campaign DSP margin JSON. | ||||||||
platformMarginJson string | Campaign platform margin JSON. | ||||||||
dspMargin integer | Campaign DSP margin number. | ||||||||
platformMargin integer | Campaign platform margin number. | ||||||||
userDealMargin integer | Campaign user deal margin number. | ||||||||
bidStrategyFlag boolean | Bid strategy allowed or not for user. | ||||||||
bidOptimization boolean | Optimize bid price based on analysis: true. | ||||||||
bidPacing boolean | Budget is spent equally every hour: true. | ||||||||
impressionCapping integer | Maximum impressions in one inventory. | ||||||||
frequencyCapEnabled boolean | Enables frequency capping via frequencyCapping: true. | ||||||||
frequencyCapping object | Map of frequency cap type ID to cap duration/value, keyed by the recurrence period the cap applies over. | ||||||||
| |||||||||
frequencyCapDuration integer | Number of days/weeks/months the cap spans (per the key's type); must be 0 for the "campaign duration" type (ID 4). |
frequencyCapValue integer | Maximum impressions allowed within frequencyCapDuration. |
maxDayClicks integer
totalClicks integer
maxDayImpressions integer
totalImpressions integer required
Required when editing a draft campaign.
For an impression-based campaign, provide the applicable impressions value. For a dollar-based campaign, pass 0.
maxDayConversions integer
totalConversions integer
spentScale boolean
creativeIds string
targetCPI integer
conversionType string
Allowed values: install, non-install.
conversionTypeId integer
conversionIds string
appURL string
technologyFlag boolean
carriers string
networkType string
deviceType string
trafficType string
manufacturer string
os string
osVersion string
exchanges string
prebidAudienceSegmentIdList array of integers
device string
publisherAdCategory string
userDealId string
groupDealId string
politicalAdvertiserClientId integer
advertiserType string
stateIds string
dmaIds string
zipcodes string
locationFileIds string
ageRangeIds string
genderIds string
interestIds string
incomeRangeIds string
languageIds string
ethnicityIds string
scheduling string
campaignIabCategoryIds string
isAdvanceAudioVideoTargeted boolean
isBidShading boolean
creativeAdvanceTargeting JSON
campaignEstimatorMetaData JSON
campaignOptimizationType string
Allowed values: ai_based, rule_based.
When ai_based, campaignOptimization is required.
When rule_based, any campaignOptimization sent is ignored.
campaignOptimization object
Required when
campaignOptimizationType is ai_based.campaignOptimization object properties
aiObjective integer | AI optimization objective ID. |
aiGoal integer | AI optimization goal ID. |
aiTargetKpi integer | AI target KPI value. |
aiConversionId integer | Conversion ID for AI optimization. |
inventoryKeywords array of strings
inventoryUrls array of strings
pmpDealIds array of integers
creativesPlacementMapping object
isTvAd boolean
Response properties
data integer | Campaign ID. |
message string | Success message. |
status string | Campaign status. |
- JSON
- TypeScript
{
"campaignName": "Sample Campaign name ",
"isAgreementChecked": true,
"advertiserDomain": "https://www.example.com",
"creativeType": 14,
"budgetTotal": 100,
"startTime": 1598427074,
"budgetDay": 18,
"timezone": 105,
"creativeIds": "100027,100028",
"maxBid": 10,
"bidOptimization": false,
"bidPacing": true,
"isBidShading": true,
"impressionCapping": 2,
"conversionType": "install",
"conversionTypeId": 1,
"appURL": "https://www.example.com",
"totalBudgetPacing": false,
"carriers": "293,294",
"networkType": "13",
"deviceType": "15",
"trafficType": "11",
"manufacturer": "451,155",
"os": "11,14",
"osVersion": "11,12,13",
"exchanges": "27,21",
"prebidAudienceSegmentIdList": [
10,
11,
12
],
"publisherAdCategory": "112",
"userDealId": "1,2,b",
"countryId": 246,
"politicalAdvertiserClientId": 17,
"locationFileIds": "1011,1010",
"campaignEstimatorMetaData": {
"reachMeta": {},
"landScapeMeta": {},
"sliderMeta": {}
},
"stateIds": "30200031,30200032",
"campaignOptimization": {
"aiObjective": 1,
"aiGoal": 8,
"aiTargetKpi": 10
},
"isAdvanceAudioVideoTargeted": true,
"creativeAdvanceTargeting": {
"placementType": [
20600001
],
"rollPosition": [
20700001
],
"playerSize": [
20800001
],
"skippability": [
20900001
],
"playbackMethod": [
21000001
]
}
}
{
"statusCode": 201,
"responseObject": {
"data": 123456,
"message": "Campaign saved successfully.",
"status": "pending"
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
statusCode: number;
responseObject: {
data: number;
message: string;
status: string;
}
}
};
};
}
function editCampaignPatch(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v2/cmp/campaign/{campaignId}',
params: {
path: {
campaignId: `number`
}
},
requestBody: {
content: {
"application/json": {
advertiserId?: `number`,
dspId?: `number`,
owId?: `number`,
uowId?: `number`,
id?: `number`,
campaignName?: `string`,
advertiserDomain?: `string`,
creativeType?: `number`,
campaignType?: `number`,
totalBudgetPacing?: `boolean`,
budgetDay?: `number`,
budgetTotal?: `number`,
maxBid?: `number`,
timezone?: `number`,
startTime?: `number`,
endTime?: `number`,
status?: `string`,
created?: `number`,
excludeFromPlatformServing?: `boolean`,
forTest?: `boolean`,
modifiedDate?: `string`,
dspMarginJson?: `string`,
platformMarginJson?: `string`,
dspMargin?: `number`,
platformMargin?: `number`,
userDealMargin?: `number`,
isAgreementChecked?: `boolean`,
spentScale?: `boolean`,
creativeIds?: `string`,
targetCPI?: `number`,
conversionType?: `string`,
conversionTypeId?: `number`,
appURL?: `string`,
bidOptimization?: `boolean`,
bidPacing?: `boolean`,
impressionCapping?: `number`,
maxDayImpressions?: `number`,
maxDayClicks?: `number`,
maxDayConversions?: `number`,
totalImpressions?: `number`,
totalClicks?: `number`,
totalConversions?: `number`,
bidStrategyFlag?: `boolean`,
ioId?: `number`,
prebidAudienceSegmentIdList?: `array of numbers`,
isBidShading?: `boolean`,
carriers?: `string`,
networkType?: `string`,
deviceType?: `string`,
trafficType?: `string`,
manufacturer?: `string`,
device?: `string`,
os?: `string`,
osVersion?: `string`,
technologyFlag?: `boolean`,
exchanges: `string`,
advancedFlag?: `boolean`,
userDealId?: `string`,
groupDealId?: `string`,
publisherAdCategory: `string`,
campaignIabCategoryIds?: `string`,
stateIds?: `string`,
countryId?: `number`,
dmaIds?: `string`,
zipcodes?: `string`,
locationFileIds?: `string`,
inventoryKeywords?: `array of strings`,
inventoryUrls?: `array of strings`,
pmpDealIds?: `array of numbers`,
politicalAdvertiserClientId?: `number`,
scheduling?: {
[key: `string`]: `Record<string, never>`,
},
ageRangeIds?: `string`,
genderIds?: `string`,
languageIds?: `string`,
incomeRangeIds?: `string`,
ethnicityIds?: `string`,
interestIds?: `string`,
demographicTargetingFlag?: `boolean`,
conversionIds?: `string`,
creativesPlacementMapping?: {
[key: `string`]: `number`,
},
isTvAd?: `boolean`,
creativeAdvanceTargeting?: {
[key: `string`]: `array of numbers`
},
budgetTypeId?: `number`,
campaignEstimatorMetaData?: {
reachMeta?: {
[key: string]: Record<string, never>;
};
landScapeMeta?: {
[key: string]: Record<string, never>;
};
sliderMeta?: {
[key: string]: Record<string, never>;
},
},
customAudienceTargeted?: `boolean`,
advanceAudioVideoTargeted?: `boolean`,
isAdvanceAudioVideoTargeted?: `boolean`,
};
};
};
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Create new PG campaign
POSTPOST
Create a new PG campaign for Advertiser.
| Request schema | ||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
pgCampaignInfo object | Campaign information details. | |||||||||||||||||||||||
| ||||||||||||||||||||||||
campaignName string | Name of campaign. |
ioId integer | Insertion order ID. |
timeZoneId integer | Timezone ID. |
totalImpressions integer optional | Targeted impressions for impression-based campaign as budget, use if not a dollars-based campaign. |
budgetTotal integer optional | Total budget of the campaign for dollars-based campaign, use if not an impressions-based campaign. |
maxBid integer | Maximum allowed bid price for campaign. |
startTime integer | Unix epoch start time of campaign, in milliseconds. |
endTime integer | Unix epoch end time of campaign, in milliseconds. |
budgetTypeId integer | Budget type ID of given campaign (impression-based or dollar-based). |
campaignTypeId integer | Campaign type ID. |
advertiserDomain string | Domain of the Advertiser user. |
creativeTargeting object
creativeTargeting object properties
creativeTypeId integer | Creative type ID. |
creativeIds array of integers | Creative IDs to attach to this campaign. |
inventoryTargeting object
inventoryTargeting object properties
pgDealIds array of integers | PG deal IDs to attach to this campaign. |
conversionTargeting object
conversionTargeting object properties
conversionTypeId integer | Conversion type ID to attach to this campaign. |
conversionIds array of integers | Conversion IDs to attach to this campaign (Note: conversions can be assigned, updated, or removed from a campaign only before the campaign is running.). |
politicalAdvertiserClientId integer
countryId integer
thirdPartyCost integer optional
Response properties
campaignId integer | Campaign ID. |
message string | Success message. |
- JSON
- TypeScript
{
"pgCampaignInfo": {
"campaignName": "test imps PG campaign",
"ioId": 95179,
"timeZoneId": 29,
"totalImpressions": 12345,
"maxBid": 8,
"startTime": 1715662337,
"endTime": 1717128000,
"budgetTypeId": 2,
"campaignTypeId": 2,
"advertiserDomain": "https://www.xyz.com"
},
"creativeTargeting": {
"creativeTypeId": 11,
"creativeIds": [
644506
]
},
"inventoryTargeting": {
"pgDealIds": [
30,
12
]
},
"conversionTargeting": {
"conversionTypeId": 1,
"conversionIds": [
465,
687,
987
]
},
"politicalAdvertiserClientId": 989898,
"countryId": 23
}
{
"success": true,
"data": {
"message": "PG Campaign Created successfully",
"campaignId": 2
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign Type provided"
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
campaignId: number
}
}
};
};
422: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string
}
}
};
};
}
function addPGCampaign(): Promise<Responses> {
/*
*or
*
*function saveDraftCampaign(): Promise<Responses> {
*/
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/pg/campaigns/add',
/*
*or
*
* url: 'https://api.iqm.com/api/v2/cmp/campaigns/draft/add',
*/
requestBody: {
content: {
"application/json": {
countryId?: `number`,
politicalAdvertiserClientId?: `number`,
conversionTargeting?: {
conversionTypeId?: `number`,
conversionIds: `array of numbers`,
},
creativeTargeting: {
creativeTypeId: `number`,
creativeIds: `array of numbers`,
},
inventoryTargeting: {
pgDealIds: `array of numbers`,
paymentTypeId?: `number`,
},
pgCampaignInfo: {
campaignName: `string`,
timeZoneId: `number`,
spendingBudget?: `number`,
maxBid: `number`,
startTime: `number`,
endTime?: `number`,
totalImpressions?: `number`,
advertiserDomain: `string`,
ioId: `number`,
budgetTypeId: `number`,
campaignTypeId?: `number`,
owId?: `number`,
uowId?: `number`,
creativeTypeId?: `number`,
status?: `string`,
configObj?: `string`,
totalBudget?: `number`,
pgFeesPercentage?: `number`,
}
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update PG campaign
PATCHPATCH
Update properties of a created or draft PG campaign by campaign ID.
Supported properties
pgCampaignInfo object | Campaign information details. | |||||||||||||||||||||||
| ||||||||||||||||||||||||
campaignName string | Name of campaign. |
ioId integer | Insertion order ID. |
timeZoneId integer | Timezone ID. |
totalImpressions integer optional | Targeted impressions for impression-based campaign as budget, use if not a dollars-based campaign. |
budgetTotal integer optional | Total budget of the campaign for dollars-based campaign, use if not an impressions-based campaign. |
maxBid integer | Maximum allowed bid price for campaign. |
startTime integer | Unix epoch start time of campaign, in milliseconds. |
endTime integer | Unix epoch end time of campaign, in milliseconds. |
budgetTypeId integer | Budget type ID of given campaign (impression-based or dollar-based). |
campaignTypeId integer | Campaign type ID. |
advertiserDomain string | Domain of the Advertiser user. |
creativeTargeting object
creativeTargeting object properties
creativeTypeId integer | Creative type ID. |
creativeIds array of integers | Creative IDs to attach to this campaign. |
inventoryTargeting object
inventoryTargeting object properties
pgDealIds array of integers | PG deal IDs to attach to this campaign. |
conversionTargeting object
conversionTargeting object properties
conversionTypeId integer | Conversion type ID attached to this campaign. |
conversionIds array of integers | Conversion IDs attached to this campaign (Note: conversions can be assigned, updated, or removed from a campaign only before the campaign is running.). |
politicalAdvertiserClientId integer
countryId integer
thirdPartyCost integer optional
Response properties
campaignId integer | Campaign ID. |
message string | Success message. |
- JSON
- TypeScript
{
"pgCampaignInfo": {
"campaignName": "test imps PG campaign",
"timeZoneId": 29,
"totalImpressions": 12345,
"maxBid": 8,
"startTime": 1715662337,
"endTime": 1717128000,
"advertiserType": "political",
"advertiserDomain": "https://www.xyz.com"
},
"creativeTargeting": {
"creativeTypeId": 11,
"creativeIds": "[644506]"
},
"inventoryTargeting": {
"pgDealIds": "[30,12]"
},
"conversionTargeting": {
"conversionTypeId": 1,
"conversionIds": "[465,687,987]"
},
"politicalAdvertiserClientId": 989898,
"countryId": 23
}
{
"success": true,
"data": {
"message": "PG Campaign Updated successfully",
"campaignId": 2
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
campaignId: number
}
}
};
};
422: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string
}
}
};
};
}
function editPGCampaign(): Promise<Responses> {
/*
*or
*
*function editDraftPGCampaign(): Promise<Responses> {
*/
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/cmp/pg/campaigns/{campaignId}',
/*
*or
*
* url: 'https://api.iqm.com/api/v2/cmp/campaigns/draft/{campaignId}',
*/
params: {
path: {
campaignId: `number`
}
},
requestBody: {
content: {
"application/json": {
countryId?: `number`,
politicalAdvertiserClientId?: `number`,
conversionTargeting?: {
conversionTypeId?: `number`,
conversionIds: `array of numbers`,
},
creativeTargeting: {
creativeTypeId: `number`,
creativeIds: `array of numbers`,
},
inventoryTargeting: {
pgDealIds: `array of numbers`,
paymentTypeId?: `number`,
},
pgCampaignInfo: {
campaignName: `string`,
timeZoneId: `number`,
spendingBudget?: `number`,
maxBid: `number`,
startTime: `number`,
endTime?: `number`,
totalImpressions?: `number`,
advertiserDomain: `string`,
ioId: `number`,
budgetTypeId: `number`,
campaignTypeId?: `number`,
owId?: `number`,
uowId?: `number`,
creativeTypeId?: `number`,
status?: `string`,
configObj?: `string`,
totalBudget?: `number`,
pgFeesPercentage?: `number`,
}
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Change campaign name
PATCHChange the name of a campaign.
| Path parameters | |
|---|---|
campaign_Id integer | Campaign ID. |
| Request schema | |
|---|---|
campaignName string | New name for campaign. |
Response properties
message string | Success message. |
- JSON
- TypeScript
{
"campaignName": "New Campaign Name"
}
{
"success": true,
"data": {
"message": "campaignName updated successfully"
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
success: boolean;
data: {
message: string;
};
};
};
};
}
function UpdateCampaignName(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/cmp/campaign/update-name/{campaign_id}',
params: {
path: {
campaign_id: `string`
}
},
requestBody: {
content: {
"application/json": {
campaignName: `string`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Change campaign end date
PUTChange the end date of multiple campaigns.
| Request schema | |
|---|---|
endDate integer | Unix timestamp of desired end date. |
campaignIds string | Comma separated campaign IDs to change end date for. |
Response properties
status boolean | Success status. |
- JSON
- TypeScript
{
"endDate": 1632132540,
"campaignIds": "192476"
}
{
"statusCode": 200,
"responseObject": {
"status": true
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
status: boolean;
};
};
};
};
}
function Campaignenddateupdate(): Promise<Responses> {
const options = {
method: 'PUT',
url: 'https://api.iqm.com/api/v2/cmp/campaigns/update-end-date',
params: {
header: {
"X-IAA-HOST": `string`
}
},
requestBody: {
content: {
"application/json": {
endDate: `number`,
campaignIds: `number`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Change campaign budget
PUTUpdate the total budget, daily budget, and max bid of multiple campaigns.
| Request schema | |
|---|---|
campaignIds string | Comma separated campaign IDs. |
maxBid integer | Max bid of campaign. |
totalBudget integer | Total budget of campaign. |
dailyBudget integer | Daily Budget of campaign. |
totalBudgetUpdateType string | Used in the case of a total budget update. There are three possibilities for this parameter. change: Replace total budget with given value. addition: Add budget to the current total budget. distribution: Distribute given total budget in selected campaigns equally. Default value: change. |
Response properties
reason object | Reason details. | |||||||
| ||||||||
errorMessage string | Error message. |
id integer | Campaign ID. |
campaignName string | Campaign name. |
modified_data object
See Request schema for supported values.
status boolean
- JSON
- TypeScript
{
"totalBudgetUpdateType": "change",
"campaignIds": "192476",
"dailyBudget": 1001
}
{
"statusCode": 200,
"responseObject": {
"reason": [
{
"errorMessage": "max bid cannot be less than minimum bid 3.0",
"id": "4120",
"campaignName": "test cust aud dev"
},
{
"errorMessage": "For given campaign_type max bid cannot be less than 1.00 or greater than 1000.",
"id": "4121",
"campaignName": "Vast copy"
}
],
"modified_data": [
{
"campaingId": 1,
"maxBid": 34,
"totalBudget": 35,
"dailyBudget": 36,
"endDate": 12312312312
}
],
"status": false
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
statusCode: number;
responseObject: {
reason: {
errorMessage: string;
id: string;
campaignName: string;
}[];
modified_data: {
campaingId: number;
maxBid: number;
totalBudget: number;
dailyBudget: number;
endDate: number;
}[];
status: boolean;
};
};
};
};
}
function Campaignbudgetupdate(): Promise<Responses> {
const options = {
method: 'PUT',
url: 'https://api.iqm.com/api/v2/cmp/campaigns/update-budget',
params: {
header: {
"X-IAA-HOST": `string`
}
},
requestBody: {
content: {
"application/json": {
totalBudgetUpdateType: `string`,
campaignIds: `number`,
dailyBudget: `number`,
maxBid: `number`,
totalBudget: `number`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update campaign status
PUTUpdate a campaign's status. This is the main endpoint for deleting a campaign by updating it's status to deleted.
| Request schema | |
|---|---|
campaignIds string | Comma separated campaign IDs. |
status string | Campaign status to update to. Use deleted to delete a campaign. |
{
"campaignIds":"562280",
"status":"deleted"
}
{
"statusCode": 200,
"responseObject": {
"updatedData": [
{
"campaignId": 562280,
"status": "deleted"
}
],
"status": true
}
}
Duplicate campaigns
POSTDuplicate campaigns within an insertion order with new start and end dates.
| Request schema | |
|---|---|
existingCampaignIds string | Comma separated campaign IDs to duplicate. |
ioId integer | Insertion order ID for new campaigns. |
timeZoneId integer | Timezone ID. |
startDate integer | Unix epoch timestamp for new campaign start date. |
endDate integer | Unix epoch timestamp for new campaign end date (0 for no end date). |
Response properties
duplicatedCampaignIds array of integers | IDs of newly created duplicate campaigns. |
status boolean | Indicates duplication was successful: true. |
{
"existingCampaignIds": "331575",
"ioId": 9,
"timeZoneId": 9,
"startDate": 1693612135,
"endDate": 0
}
{
"statusCode": 200,
"responseObject": {
"duplicatedCampaignIds": [
334676
],
"status": true
}
}
More responses
{
"statusCode": 400,
"responseObject": {
"errorMsg": "The action cannot be completed as insertion order 1 does not belong to this organization",
"errorCode": 400
}
}
{
"statusCode": 400,
"responseObject": {
"errorMsg": "Invalid timezone.",
"errorCode": 400
}
}
Get campaign cost details
POSTRetrieve cost details for a specific campaign. The request body must include either a campaignId or a combination of audienceIds, creativeIds, and preBidSegmentIds.
| Request schema | |
|---|---|
campaignId integer | Campaign ID to get cost details for. |
audienceIds array of integers | Audience IDs (required if no campaignId). |
creativeIds array of integers | Creative IDs (required if no campaignId). |
preBidSegmentIds array of integers | Pre-bid segment IDs (required if no campaignId). |
creativeTypeId integer | Creative type ID. |
Response properties
maxBidPrice integer | Maximum bid price. |
adServingCost integer | Ad serving cost. |
dataCost integer | Data cost. |
preBidCost integer | Pre-bid cost. |
msaExistsWith string | MSA partner name. |
logoURL string | Partner logo URL. |
thirdPartyCost integer | Campaign-level 3rd-party cost, either the Advertiser's override or the account-level cost when no override is set. |
{
"campaignId": 123456
}
{
"success": true,
"data": {
"maxBidPrice": 5,
"adServingCost": 200,
"dataCost": 150,
"preBidCost": 300,
"msaExistsWith": "Partner A",
"logoURL": "https://example.com/logo.png",
"thirdPartyCost": 10.5
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaignId or missing required fields."
}
]
}
Get audience reach estimation
POSTGet audience reach estimation based on targeting parameters. Request body supports dimensions available with true value from Get estimator dimension list.
| Request schema | |
|---|---|
stateIds string | Comma separated state IDs. |
whitelistCityIds string | Comma separated city IDs to include. |
whitelistZipCodes string | Comma separated ZIP codes to include. |
ethnicityIds string | Comma separated ethnicity IDs. |
ageIds string | Comma separated age range IDs. |
incomeIds string | Comma separated income range IDs. |
bidPacing boolean | Enable bid pacing. |
budgetDay integer | Daily budget. |
creativesPlacementMapping object | Creative to placement mapping. |
Response properties
targetingType string | Targeting type used for estimation. |
estimatedReachMin integer | Minimum estimated reach. |
estimatedReachMax integer | Maximum estimated reach. |
estimatedReachAvg integer | Average estimated reach. |
{
"stateIds": "30200032",
"whitelistCityIds": "30434428,30434491,30434474",
"whitelistZipCodes": "08016,08048,08036",
"ethnicityIds": "10700001",
"ageIds": "10100006,10100007",
"incomeIds": "10300001,10300002",
"bidPacing": true,
"budgetDay": 120,
"creativesPlacementMapping": {
"537448": 0
}
}
{
"success": true,
"data": {
"targetingType": "Specific",
"estimatedReachMin": 4392,
"estimatedReachMax": 5369,
"estimatedReachAvg": 4881
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Server request timed out!"
}
]
}
Get bid landscape estimation
POSTGet bid landscape estimation based on targeting parameters. Request body supports dimensions available with true value from Get estimator dimension list.
| Request schema | |
|---|---|
stateIds string | Comma separated state IDs. |
whitelistCityIds string | Comma separated city IDs to include. |
whitelistZipCodes string | Comma separated ZIP codes to include. |
ethnicityIds string | Comma separated ethnicity IDs. |
ageIds string | Comma separated age range IDs. |
incomeIds string | Comma separated income range IDs. |
bidPacing boolean | Enable bid pacing. |
budgetDay integer | Daily budget. |
creativesPlacementMapping object | Creative to placement mapping. |
Response properties
axis object | Axis labels for bid landscape chart: x (bidFloor), y (numImp). |
bidGuidance array of objects | Bid guidance data points with bidfloorPercentile, bidFloor, and numImp. |
{
"stateIds": "30200032",
"whitelistCityIds": "30434428,30434491",
"whitelistZipCodes": "08016,08048",
"ethnicityIds": "10700001",
"ageIds": "10100006,10100007",
"incomeIds": "10300001,10300002",
"bidPacing": true,
"budgetDay": 120
}
{
"success": true,
"data": {
"axis": {
"x": "bidFloor",
"y": "numImp"
},
"bidGuidance": [
{
"bidfloorPercentile": 0,
"bidFloor": 0.14166666666666666,
"numImp": 0
},
{
"bidfloorPercentile": 50,
"bidFloor": 1.3108599999999997,
"numImp": 74142
},
{
"bidfloorPercentile": 99,
"bidFloor": 3.124166666666666,
"numImp": 146802
}
]
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Server request timed out!"
}
]
}
Resend email to set margin
POST| Request schema | |
|---|---|
owId integer | Organization Workspace ID. |
Response properties
success boolean | Indicates email was sent succesfully: true. |
message string | Success message. |
- JSON
- TypeScript
{
"success": true,
"data": "Email reminder resend successfully to set margin."
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: string;
}
}
};
}
function Resendemailremindertosetmargin(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/email-reminder/set-margin',
requestBody: {
content: {
"application/json": {
owId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Resend email reminder to set invoice template
POST| Request schema | |
|---|---|
owId integer | Organization Workspace ID. |
Response properties
success boolean | Indicates email was sent succesfully: true. |
message string | Success message. |
- JSON
- TypeScript
{
"success": true,
"data": "Email reminder resend successfully to set invoice template."
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: string;
}
}
};
}
function Resendemailremindertosetinvoicetemplate(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/email-reminder/set-invoice-template',
requestBody: {
content: {
"application/json": {
owId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Campaign templates
Manage reusable campaign templates for creating campaigns with pre-configured targeting, creative, and inventory settings.
Get list of campaign templates
GETGet a list of campaign templates with basic details such as ID, name, creation date, and creative type.
| Query parameters | |
|---|---|
searchField string | Search campaign templates by name or ID. |
noOfEntries integer | Maximum number of returned results per page (default: 20). |
pageNo integer | Page number for the required data (default: 1). |
sortBy string | Sort the result set by specific field. For ascending use +, for descending use -. Allowed values: id, name. (Default: -createdAt). |
cmpType integer | Type of template to filter. 1: Advanced, 2: PG. If not provided, all types are returned. |
Response properties
filteredRecords integer | Number of records matching the filter. | |||||||||||
totalRecords integer | Total number of templates. | |||||||||||
templateList array of objects | List of template objects. | |||||||||||
| ||||||||||||
id integer | Template ID. |
name string | Template name. |
createdAt integer | Unix epoch timestamp of template creation. |
type integer | Template type: 1 (Advanced), 2 (PG). |
creativeType integer | Creative type ID (not present if creative is not attached). |
{
"success": true,
"data": {
"filteredRecords": 2,
"totalRecords": 10,
"templateList": [
{
"id": 1234,
"name": "Sample Template 1",
"createdAt": 1627890123456,
"type": 1,
"creativeType": 14
},
{
"id": 5678,
"name": "Sample Template 2",
"createdAt": 1627891123456,
"type": 2
}
]
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid template type id"
}
]
}
Get campaign template details
GETGet campaign template details by template ID.
| Path parameters | |
|---|---|
cmpTemplateId integer | Campaign template ID. |
Response properties
templateId integer | Template ID. |
templateName string | Template name. |
templateTypeId integer | Template type. 1: Advanced. 2: PG. |
owId integer | Organization Workspace ID. |
advertiserDomain string | Advertiser domain URL. |
creativeType integer | Creative type ID. |
creativeIds string | Comma separated creative IDs. |
bidPacing boolean | Bid pacing enabled. |
isBidShading boolean | Bid shading enabled. |
frequencyCapEnabled boolean | Frequency capping enabled. |
frequencyCapping object | Frequency capping configuration. |
totalImpressions integer | Total impressions cap. |
totalClicks integer | Total clicks cap. |
totalConversions integer | Total conversions cap. |
maxDayImpressions integer | Max daily impressions cap. |
maxDayClicks integer | Max daily clicks cap. |
maxDayConversions integer | Max daily conversions cap. |
countryId string | Country ID. |
scheduling object | Day-parting schedule configuration. |
politicalAdvertiserClientId integer | Advertiser client ID if user is political Advertiser. |
The response contains the full set of campaign targeting properties configured on the template. See the Create campaign and Create PG campaign sections for descriptions of individual targeting fields.
{
"success": true,
"data": {
"owId": 204732,
"advertiserDomain": "https://www.example.com",
"creativeType": 14,
"isTvAd": false,
"creativeIds": "100027,100028",
"campaignOptimization": {
"aiObjective": 1,
"aiGoal": 8,
"aiTargetKpi": 10.0,
"aiConversionId": null
},
"bidPacing": true,
"isBidShading": true,
"frequencyCapEnabled": true,
"frequencyCapping": {
"1": { "frequencyCapDuration": 6, "frequencyCapValue": 5 },
"2": { "frequencyCapDuration": 3, "frequencyCapValue": 20 },
"3": { "frequencyCapDuration": 3, "frequencyCapValue": 60 },
"4": { "frequencyCapDuration": 0, "frequencyCapValue": 100 }
},
"totalImpressions": 2345,
"totalClicks": 2354654,
"totalConversions": 2463570,
"maxDayImpressions": 2,
"maxDayClicks": 324,
"maxDayConversions": 534675,
"exchanges": "27,21",
"countryId": "246",
"whiteListedStateIds": "30200031,30200032",
"blackListedStateIds": "30200033,30200035",
"whiteListedAudienceIds": "900254,900271",
"blackListedAudienceIds": "889185,888981",
"scheduling": {
"0": [["00:00:00","05:00:00"],["11:00:00","16:00:00"]],
"1": [["00:00:00","04:00:00"],["19:00:00","21:00:00"]]
},
"politicalAdvertiserClientId": 17,
"templateId": 9,
"templateName": "Test-1",
"templateTypeId": 1
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Template not found for id: 789."
}
]
}
Create campaign template
POSTCreate a new campaign template (Advanced or PG). The template stores campaign configuration settings that can be reused when creating new campaigns.
| Request schema | |
|---|---|
templateName string | Template name. |
templateTypeId integer | Template type. 1: Advanced. 2: PG. |
The request body accepts the full set of campaign properties for targeting, creative, inventory, and other configurations. See the Create campaign and Create PG campaign sections for the complete list of supported properties.
Response properties
data string | Success message. |
{
"templateName": "Sample campaign name",
"templateTypeId": 1,
"isAgreementChecked": true,
"advertiserDomain": "https://www.example.com",
"creativeType": 14,
"timezone": 105,
"creativeIds": "100027,100028",
"bidOptimization": false,
"bidPacing": true,
"isBidShading": true,
"frequencyCapEnabled": true,
"totalImpressions": 2345,
"maxDayImpressions": 2,
"campaignOptimization": {
"aiObjective": 1,
"aiGoal": 8,
"aiTargetKpi": 10
},
"frequencyCapping": {
"1": { "frequencyCapDuration": 6, "frequencyCapValue": 5 },
"2": { "frequencyCapDuration": 3, "frequencyCapValue": 20 }
},
"exchanges": "27,21",
"countryId": 246,
"whiteListedStateIds": "30200031,30200032",
"whiteListedAudienceIds": "900254,900271",
"scheduling": {
"0": [["00:00:00","05:00:00"],["11:00:00","16:00:00"]],
"1": [["00:00:00","04:00:00"],["19:00:00","21:00:00"]]
}
}
{
"success": true,
"data": "Template created successfully"
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Template ABC-template could not be saved."
}
]
}
Rename campaign template
PATCHRename an existing campaign template by template ID.
| Path parameters | |
|---|---|
cmpTemplateId integer | ID of the template to rename. |
| Request schema | |
|---|---|
templateName string required | New name for the template. |
Response properties
data string | Success message. |
{
"templateName": "Updated Template Name"
}
{
"success": true,
"data": "Template 101 updated successfully."
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Template not found for id: 789."
}
]
}
Delete campaign templates
DELETEDelete one or more campaign templates by template ID.
| Request schema | |
|---|---|
templateIds array of integers required | List of template IDs to delete. |
Response properties
data string | Success message. |
{
"templateIds": [101]
}
{
"success": true,
"data": "Template deleted successfully."
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "One or more templates not found or already deleted."
}
]
}
Campaign targeting
Configure targeting parameters for campaigns including audiences, creatives, inventory groups, and deals.
Update audience targeting in campaigns
POSTUpdate the audience targeting in a given campaigns list. Supports include, exclude, and remove audiences.
PG campaigns cannot be used for audience targeting.
| Request schema | |
|---|---|
{campaignId} string | Campaign ID for which to pass includedAudienceList, excludedAudienceList, and removeAudience. |
includedAudienceList array of integers | Audience IDs to include in targeting. |
excludedAudienceList array of integers | Audience IDs to exclude from targeting. |
removeAudience array of integers | Audience IDs to remove. |
Response properties
message string | Success message. |
failedCampaigns object | Failed campaigns list: name-value pairs of CampaignId and failure description. |
{
"477717": {
"includedAudienceList": [
1064656,
1060603
],
"excludedAudienceList": [
1064000,
1060111
],
"removeAudienceList": [
106422,
106033
]
}
}
{
"success": true,
"data": {
"message": "Your changes have been successfully saved."
}
}
{
"success": false,
"data": {
"message": "Your changes have been successfully saved.",
"failedCampaigns": {
"477717": "Can not target more than 20 audiences."
}
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "One or more campaigns are PG campaigns and cannot be used for audience targeting: [529192, 506992, 506991]"
}
]
}
Update creative targeting in campaigns
PATCHAssign or unassign creatives from campaigns.
| Request schema | |
|---|---|
creativeIds array of integers | Creative IDs to assign or unassign. |
assignedCampaignIds array of integers | Campaign IDs to assign creative targeting to. |
removedCampaignIds array of integers | Campaign IDs to unassign/remove creative targeting from. |
Response properties
success boolean | Indicates operation was successful: true. |
data string | Success message. |
{
"assignedCampaignIds": [1, 2, 3],
"creativeIds": [11, 22]
}
{
"removedCampaignIds": [2],
"creativeIds": [11]
}
{
"success": true,
"data": "Creatives assigned/un-assigned successfully."
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Please provide valid Campaign IDs for assign/un-assign action"
}
]
}
Inventory group targeting
POSTInclude or exclude specific campaigns from an inventory Group. Use this to manage which campaigns are targeted by the inventory Group by providing comma-separated lists of campaign IDs to include and/or exclude.
See the Inventory API to Create a new inventory group.
| Path parameter | |
|---|---|
groupId integer | Inventory group ID. |
| Request schema | |
|---|---|
includedCampaignIds string | Comma-separated campaign IDs to include in the inventory group. Use an empty string if no campaigns should be included. |
excludedCampaignIds string | Comma-separated campaign IDs to exclude from the inventory group. Use an empty string if no campaigns should be excluded. |
Response properties
success boolean | Indicates whether the operation was successful: true. |
data string | Success message. |
{
"includedCampaignIds": "101,102",
"excludedCampaignIds": "200"
}
{
"success": true,
"data": "Campaigns successfully updated for inventory group"
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign IDs provided"
}
]
}
{
"success": false,
"errorObjects": [
{
"error": "Invalid token"
}
]
}
Assign PMP deals
PATCHAssign or remove multiple PMP deals to/from campaigns.
| Request schema | |
|---|---|
operations array of objects | Operations specifying the action, campaign IDs and PMP deal IDs. |
action string | Action to perform: assign or deassign. |
campaignIds array of integers | Campaign IDs to assign deals or remove deals from. |
pmpDealIds array of integers | PMP deal IDs to assign/de-assign to/from campaigns. |
Response properties
success boolean | Indicates Deals were assigned succesfully: true. |
data string | Success message. |
{
"operations": [
{
"action": "assign",
"campaignIds": [
201,
203
],
"pmpDealIds": [
101,
102
]
},
{
"action": "deassign",
"campaignIds": [
202
],
"pmpDealIds": [
102
]
}
]
}
{
"success": true,
"data": "PMP deal campaign mappings updated successfully"
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Forbidden!"
}
]
}
{
"success": false,
"errorObjects": [
{
"error": "PMP deal id/s is/are invalid or not accessible for logged-in user"
}
]
}
Assign PG deals
PATCHAssign or remove multiple PG deals to/from campaigns.
| Request schema | |
|---|---|
operations array of objects | Operations specifying the action, campaign IDs and PMP deal IDs. |
action string | Action to perform: assign or deassign. |
campaignIds array of integers | Campaign IDs to assign deals or remove deals from. |
pgDealIds array of integers | PG deal IDs to assign/remove to/from campaigns. |
Response properties
success boolean | Indicates Deals were assigned succesfully: true. |
message string | Success message. |
{
"operations": [
{
"action": "assign",
"campaignIds": [
201,
203
],
"pgDealIds": [
101,
102
]
},
{
"action": "assign",
"campaignIds": [
202
],
"pgDealIds": [
103
]
},
{
"action": "deassign",
"campaignIds": [
202
],
"pgDealIds": [
102
]
}
]
}
{
"success": true,
"data": "PG deal Campaigns mappings updated successfully"
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Forbidden!"
}
]
}
{
"success": false,
"errorObjects": [
{
"error": "Campaign ID 506992 exceeds the maximum limit of 25 deals"
}
]
}
Include/exclude management
The Include and Exclude options allow you to control where ads appear for a campaign. See the Allowlist and Blocklist overview Help Center article for more information.
Include/exclude device types
POSTInclude or exclude device type targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated device type IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
message string | Success message. |
- JSON
- TypeScript
{
"ids": "15",
"isExcluded": 0,
"campaignId": 214269
}
{
"statusCode": 200,
"responseObject": {
"message": "The device types have been allowed."
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
statusCode: number;
responseObject: {
message: string;
};
};
};
};
};
function includeExcludeDeviceType(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v2/cmp/deviceType/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude exchanges
POSTInclude or exclude exchange targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated exchange IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
message string | Success message. |
- JSON
- TypeScript
{
"ids": "11,16",
"isExcluded": 0,
"campaignId": 214269
}
{
"statusCode": 200,
"responseObject": {
"message": "The exchanges have been allowed."
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
statusCode: number;
responseObject: {
message: string;
};
};
};
};
};
function includeExcludeExchange(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v2/cmp/exchange/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude traffic sources
POSTInclude or exclude traffic source targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated traffic type IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
message string | Success message. |
- JSON
- TypeScript
{
"ids": "1,2",
"isExcluded": 0,
"campaignId": 214269
}
{
"statusCode": 200,
"responseObject": {
"message": "The traffic sources have been allowed."
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
statusCode: number;
responseObject: {
message: string;
};
};
};
};
};
function includeExcludeTrafficSource(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v2/cmp/trafficsource/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude ZIP codes
POSTInclude or exclude ZIP code targeting for a given campaign. unknown ZIP codes aren't allowed for include/exclude operations.
| Request schema | |
|---|---|
ids string | Comma-separated ZIP codes to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
data object | Success message. |
- JSON
- TypeScript
{
"ids": "10001,10002,10003",
"isExcluded": 0,
"campaignId": 12345
}
{
"success": true,
"data": {
"message": "The ZIP codes have been allowed."
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign ID, ZIP codes, or 'unknown' ZIP code provided."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
};
};
};
};
};
function includeExcludeZip(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/zip/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude states
POSTInclude or exclude state targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated state IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
data object | Success message. |
- JSON
- TypeScript
{
"ids": "30200031,30200032",
"isExcluded": 0,
"campaignId": 12345
}
{
"success": true,
"data": {
"message": "The states have been allowed."
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign ID or state IDs."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
};
};
};
};
};
function includeExcludeState(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/state/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude publisher categories
POSTInclude or exclude publisher category targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated publisher ad category IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
data object | Success message. |
- JSON
- TypeScript
{
"ids": "1,2,3",
"isExcluded": 0,
"campaignId": 12345
}
{
"success": true,
"data": {
"message": "The publisher categories have been allowed."
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign ID or publisher category IDs."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
};
};
};
};
};
function includeExcludePublisherCategories(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/publisher-category/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude deal IDs
POSTInclude or exclude deal ID targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated deal IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
data object | Success message. |
- JSON
- TypeScript
{
"ids": "101,102,103",
"isExcluded": 0,
"campaignId": 12345
}
{
"success": true,
"data": {
"message": "The deals have been allowed."
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign ID or deal IDs."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
};
};
};
};
};
function includeExcludeDealId(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/deal-id/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude cities
POSTInclude or exclude city targeting for a given campaign.
| Request schema | |
|---|---|
ids string | Comma-separated city IDs to target or block. |
isExcluded integer | Target entity: 0. Block entity: 1. |
campaignId integer | Campaign ID. |
Response properties
data object | Success message. |
- JSON
- TypeScript
{
"ids": "30400001,30400002",
"isExcluded": 0,
"campaignId": 12345
}
{
"success": true,
"data": {
"message": "The cities have been allowed."
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid campaign ID or city IDs."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
};
};
};
};
};
function includeExcludeCity(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/city/includeExclude',
requestBody: {
content: {
"application/json": {
ids: `string`,
isExcluded: `number`,
campaignId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Include/exclude campaigns from inventory groups
POSTInclude (whitelist) or exclude (blacklist) campaigns from targeting for one or more inventory groups at once. To target or block campaigns for a single inventory group instead, see Inventory group targeting.
| Request schema | |
|---|---|
groupIds array of integers required | Inventory group IDs to update. |
includedCampaignIds string required | Comma-separated Campaign IDs to include. |
excludedCampaignIds string required | Comma-separated Campaign IDs to exclude. |
Response properties
data object | Success message. |
- JSON
- TypeScript
{
"groupIds": [
12,
13
],
"includedCampaignIds": "101,102",
"excludedCampaignIds": "201,202"
}
{
"success": true,
"data": {
"message": "Changes have been saved successfully"
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Included campaign IDs must be a comma-separated list of numbers."
}
]
}
{
"success": false,
"errorObjects": [
{
"error": "You are not authorized to perform this operation"
}
]
}
{
"success": false,
"errorObjects": [
{
"error": "Group ID is required."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
};
};
};
};
};
function includeExcludeInventoryGroups(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/inventorygroup/includeExclude',
requestBody: {
content: {
"application/json": {
groupIds: `number[]`,
includedCampaignIds: `string`,
excludedCampaignIds: `string`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Insertion order details
Insertion orders specify the parameters or details of an advertising campaign.
Insertion order resource properties
| Basic IO resource properties | |
|---|---|
ioId integer | Insertion order ID. |
ioName string | Insertion order name. |
owId integer | Organization Workspace ID. |
createdByUowId integer | User Organization Workspace ID associated with IO creation. |
modifiedByUowId integer | User Organization Workspace ID associated with IO modification. |
ioStartTime integer | Unix epoch timestamp (in milliseconds) of IO start time. |
ioEndTime integer | Unix epoch timestamp (in milliseconds) of IO end time. |
ioTotalBudget integer | Budget of IO. |
ioTimeZoneId integer | Timezone ID for insertion order. |
isAutoSumIoTotalBudget boolean | If true Keeps IO budget same as total budget of all included campaigns. |
ioBudgetDistributionMethodId integer | Budget distribution method ID. |
ioBudgetTypeId integer | Budget type ID. |
ioTotalImpression integer | Number of impressions. |
ioStatusID integer | Status ID. |
ioNextPerformanceCheck integer | Unix epoch timestamp (in milliseconds) of next performance check. |
ioLastPriorityShift integer | Unix epoch timestamp (in milliseconds). |
ioCurrentPriority integer | Current IO campaign priority. |
isIoPrioritise integer | All child campaigns will be considered with or without priority. |
Advanced IO resource properties
prebidCost integer | Data cost of Pre-bid Audiences. |
clicks integer | The number of times a user clicked on an ad. |
totalCount integer | The number of records available in response as per the filtering applied in the request. |
winRate integer | Percentage of impressions bid on and won. |
logoUrl string | Logo URL. |
avatarUrl string | Avatar URL. |
budgetDay integer | Daily budget for campaign serving daily. |
budgetSpent integer | Budget spent. |
ioTotalBudget integer | Insertion order total budget. |
budgetTotal integer | Campaign total budget. Note: can be null if fixed daily budget, start time, and end time are provided. |
dataCost integer | Data cost applied on campaigns of given Customer. |
mediaBudget integer | Media budget. |
owId integer | Organization Workspace ID. |
orgId integer | Organization ID. |
impressions integer | Impressions. |
industry integer | Industry ID. |
mediaSpent integer | Actual amount spent by an Advertiser (does not include dataCost or prebidCost). |
spent integer | Amount spent. |
workspaceSpent integer | Workspace spent. |
platformSpent integer | Platform spent. |
customerSpent integer | Customer spent. |
platformMediaEarning integer | Platform media earning. |
platformBidShadingEarning integer | Platform bid shading earning. |
platformTotalEarning integer | Platform total earning. |
workspaceMediaEarning integer | Workspace media earning. |
workspaceBidShadingEarning integer | Workspace bid shading earning. |
workspaceTotalEarning integer | Workspace total earning. |
organizationName integer | Organization name. |
companySize integer | Company size ID. |
workspaceName integer | Workspace name. |
workspaceId integer | Workspace ID. |
workspaceDomain integer | Workspace domain. |
workspaceOrganizationName integer | Workspace Organization name. |
bidImpressions integer | Bid on impressions count. |
startCount integer | Ad viewing metric, video start. |
firstCount integer | Ad viewing metric, video first quarter. |
midCount integer | Ad viewing metric, video midpoint. |
thirdCount integer | Ad viewing metric, video last quarter. |
completeCount integer | Ad viewing metric, video completed. |
audioVideoActualBids integer | Audio/video actual bids. |
audioVideoActualImpressions integer | Audio/video actual impressions. |
eCPC integer | Effective cost per click. |
eCPM integer | Effective cost per mille. |
eCPI integer | Effective cost per install. |
eCPCV integer | Effective cost per completed view. |
eCPV integer | Effective cost per visit. |
totalAttributedConversion integer | The number of conversions that are attributed to a specific campaign based on the Attribution model. |
totalAttributedViewThroughConversion integer | The number of conversions that occurred after a user viewed an ad but did not click on it. |
totalAttributedClickThroughConversion integer | The number of conversions that occurred after a user clicked on an ad. |
costPerAttributedConversion integer | Cost per attributed conversion. |
totalAttributedConversionRate integer | Total attributed conversion rate. |
reach integer | The number of unique individuals exposed to an ad, does not count repeat views. |
frequency integer | The average number of times each user was exposed to an ad. |
date integer | Date. |
campaignId integer | Campaign ID. |
campaignName string | Campaign name. |
maxBid integer | Max bid of budget for serving. |
baseBid integer | Base value on which Bid Modifiers are applied. |
startTime integer | Unix epoch timestamp, in milliseconds. |
endTime integer | Unix epoch timestamp, in milliseconds. |
ioStartTime integer | Unix epoch timestamp of IO start time, in milliseconds. |
ioEndTime integer | Unix epoch timestamp of IO end time, in milliseconds. |
campaignType string | Campaign type ID. |
status string | Status. |
campaignTimezone string | Campaign timezone. |
creativeType string | Creative type. |
budgetPacing boolean | Budget is spent equally every hour: true. |
isCampaignFromNewPlatform boolean | Indicates if campaign is from the old platform. |
percentageOfTotalSpent integer | Percentage of total spent. |
uowId integer | User Organization Workspce ID. |
audioVideoViewed integer | Audio/video viewed. |
ioId integer | Insertion order ID. |
ioName string | Insertion order name. |
ioTimezone integer | Insertion order timezone. |
ioBudgetTypeId integer | Insertion order budget type ID. |
ioStatusId integer | Insertion order status ID. |
ioBudgetDistributionMethod integer | IO Budget Distribution Method. |
pacingPercentage integer | Pacing percentage. |
actualSpent integer | Actual spent. |
expectedSpent integer | Expected spent. |
campaignDuration integer | Campaign duration. |
remainingDuraion integer | Campaign remaining duration. |
dailyPacingPercentage integer | Daily pacing percentage. |
expectedDailySpent integer | Expected daily spent. |
actualDailySpent integer | Actual daily spent. |
budgetTypeId integer | Budget type ID. |
campaignTypeId integer | Campaign type ID. |
isEligibleForVLDInsightsReport boolean | Indicates whether campaign is eligible for VLD Insights report: true. |
targetImpression integer | Impressions target. |
dailyImpression integer | Daily impression count. |
creativesCount integer | Creatives count. |
campaignsCount integer | Number of campaigns associated with IO. |
ioTotalImpressions integer | IO total impressions. |
ioPacingPercentage integer | IO pacing percentage. |
ioActualSpent integer | IO actual spent. |
ioExpectedSpent integer | IO expected spent. |
ioDuration integer | IO duration. |
ioRemainingDuraiton integer | IO remaining duration. |
exchangeId integer | Exchange ID. |
exchangeName string | Exchange name. |
autoSumIoTotalBudget boolean | If true Keeps IO budget same as total budget of all included campaigns. |
isAutoSumIoTotalBudget boolean | If true Keeps IO budget same as total budget of all included campaigns. |
budgetTotalCombined integer | Combined total budgets of all campaigns associated with an IO. |
budgetDayCombined integer | Combined daily budgets of all campaigns associated with an IO. |
ioTotalBudgetCombined integer | Combined total budgets of selected IOs. |
campaignPriority integer | Campaign priority. |
bidModelDataId integer | Bid Model data ID. |
workspaceVLDInsightsEarnings integer | Workspace VLD Insights earnings. |
platformVLDInsightsEarnings integer | Platform VLD Insights earnings. |
vldInsightsCost integer | VLD Insights cost. |
ioTimeZoneName string | IO timezone name. |
CTRinteger | Click-through rate. |
VCR integer | Video completion rate. |
CVR integer | Conversion rate. |
Get insertion order details by ID
GETGet insertion order details by IO ID.
| Path parameter | |
|---|---|
ioId integer | Insertion order ID. |
Response properties
ioId integer | Insertion order ID. |
ioName string | Insertion order name. |
ioStartTime integer | IO start time in epoch milliseconds. |
ioEndTime integer | IO end time in epoch milliseconds. |
ioTotalBudget integer | Total budget of the insertion order. |
ioTimeZoneId integer | Timezone ID for insertion order. |
isBudgetAutoSum boolean | Whether the IO total budget is auto-summed from campaign budgets. |
ioBudgetDistributionMethodId integer | Budget distribution method ID. |
ioBudgetTypeId integer | Budget type ID. |
ioStatusId integer | IO status ID. |
ioTotalImpressions integer | Total impressions for the insertion order. |
owId integer | Organization Workspace ID. |
createdByUowId integer | User Organization Workspace ID of the creator. |
modifiedByUowId integer | User Organization Workspace ID of the last modifier. |
isIoPrioritise boolean | Whether IO prioritization is enabled. |
ioNextPerformanceCheck integer | Next performance check time in epoch milliseconds. |
ioLastPriorityShift integer | Last priority shift time in epoch milliseconds. |
ioCurrentPriority integer | Current priority level of the IO. |
{
"success": true,
"data": {
"ioId": 985,
"ioName": "TEST UPDATE",
"ioStartTime": 1793251767612,
"ioEndTime": 1794251767612,
"ioTotalBudget": 0,
"ioTimeZoneId": 29,
"isBudgetAutoSum": true,
"ioBudgetDistributionMethodId": 1,
"ioBudgetTypeId": 1,
"ioStatusId": 1,
"ioTotalImpressions": 0,
"owId": 201427,
"createdByUowId": 9480,
"modifiedByUowId": 9480,
"isIoPrioritise": true,
"ioNextPerformanceCheck": 1708606327000,
"ioLastPriorityShift": 1704976116958,
"ioCurrentPriority": 4
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid insertion order id."
}
]
}
Get insertion order details
POSTGet a list of insertion order (IO) details.
An insertion order ioId can be used to query insertion order details endpoints or to perform various actions in Insertion order management.
| Request schema | |
|---|---|
owIdList array of integers | List of Organization Workspace IDs for which IO details required. |
ioIdList array of integers | List of insertion order IDs for which IO details required. |
ioBudgetTypeIdsList array of integers | List of budget type IDs for which IO details are required. |
ioStatusIdsList array of integers | List of insertion order status IDs for which IO details are required. |
ids array of integers | Prioritizes specified IO IDs before others in returned data. |
isAllOWIds boolean | Filters records with all allowed OW IDs if true, prioritizes records over owIds. |
pageNo integer | Page number of retrieved data. |
noOfEntries integer | Number of entries returned per page. |
searchField string | Filter results by search field (supported values: name and id). |
sortBy string | Comma separated names of the sorting field. Sorts by ascending (id) or descending (-). Supported values: ioId, ioName, ioStartTime, ioEndTime, ioTotalBudget. |
offset integer | Offset is alternative of page number. Offset is number of records to be skipped. |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 20,
"ioIdList": [
12,
34
],
"ids": [
2
],
"searchField": "io name",
"sortBy": "-ioId",
"ioBudgetTypeIdsList": [
2
],
"ioStatusIdsList": [
1,
2,
3
],
"offset": 1
}
{
"success": true,
"data": {
"totalRecords": 3,
"ioBasicDetailsList": [
{
"ioId": 1630,
"ioName": "phase 2 test",
"ioStartTime": 1792179297123,
"ioEndTime": 1793179297123,
"ioTimeZoneId": 29,
"ioTotalBudget": 0,
"ioBudgetDistributionMethodId": 1,
"ioBudgetTypeId": 2,
"ioStatusId": 1,
"ioTotalImpressions": 0,
"isBudgetAutoSum": true
},
{
"ioId": 741,
"ioName": "testdatasync",
"ioStartTime": 1692860161542,
"ioEndTime": 1696226400000,
"ioTimeZoneId": 21,
"ioTotalBudget": 100001,
"ioBudgetDistributionMethodId": 1,
"ioBudgetTypeId": 2,
"ioTotalImpressions": 0,
"ioStatusId": 1,
"isBudgetAutoSum": true
},
{
"ioId": 738,
"ioName": "IO Bharat",
"ioStartTime": 1693251767612,
"ioEndTime": 1693353600000,
"ioTimeZoneId": 29,
"ioTotalBudget": 1100,
"ioBudgetDistributionMethodId": 1,
"ioBudgetTypeId": 2,
"ioStatusId": 2,
"ioTotalImpressions": 0,
"isBudgetAutoSum": true
}
],
"filteredRecords": 3
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
ioBasicDetailsList: {
ioId: number;
ioName: string;
ioStartTime: number;
ioEndTime: number;
ioTimeZoneId: number;
ioTotalBudget: number;
ioBudgetDistributionMethodId: number;
ioBudgetTypeId: number;
ioStatusId: number;
ioTotalImpressions: number;
isBudgetAutoSum: boolean
}[]
}
}
};
};
}
function getIOBasicDetailsList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/basic/list',
requestBody: {
content: {
"application/json": {
searchBy?: `array of strings`,
owIdList?: `array of numbers`,
ids?: `array of numbers`,
ioIdList?: `array of numbers`,
ioBudgetTypeIdsList?: `array of numbers`,
ioStatusIdsList?: `array of numbers`,
allOWIds?: `boolean`,
allOwIds?: `boolean`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ],
offset?: `number`,
isAllOwIds?: `boolean`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get advanced insertion order details
GETGet an advanced list of insertion order details.
| Query parameters | |
|---|---|
pageNo integer | Page number of retrieved data. |
pageSize integer | Number of entries returned per page. |
searchField string | Filter results by search field. Supported values: name and id. |
sortBy string | Sorts by ascending (+) or descending (-), default: -ioId. |
offset integer | Offset is alternative of page number. Offset is number of records to be skipped. |
startDate integer | Unix epoch timestamp of start date for returned data, in milliseconds. |
endDate integer | Unix epoch timestamp of end date for returned data, in milliseconds. |
budgetTypeIds string | Comma separated budget type IDs to include in data. |
ioStatusIds string | Comma separated status IDs to include in data. |
- JSON
- TypeScript
{
"success": true,
"data": {
"totalRecords": 2,
"filteredRecords": 2,
"recordsTotal": {
"prebidCost": 0.0,
"clicks": 0,
"totalCount": 2,
"winRate": 0.0,
"logoURL": null,
"avatarURL": null,
"budgetDay": 0.0,
"budgetSpent": 0.0,
"budgetTotal": 0.0,
"dataCost": 0.0,
"mediaBudget": 0.0,
"owId": 0,
"orgId": 0,
"impressions": 0,
"industry": 0,
"mediaSpent": 0.0,
"spent": 0.0,
"organizationBidShadingSaving": null,
"workspaceSpent": 0.0,
"platformSpent": 0.0,
"customerSpent": 0.0,
"platformMediaEarning": 0.0,
"platformBidShadingEarning": 0.0,
"platformTotalEarning": 0.0,
"workspaceMediaEarning": 0.0,
"workspaceBidShadingEarning": 0.0,
"workspaceTotalEarning": 0.0,
"organizationName": null,
"companySize": 0,
"workspaceName": null,
"workspaceId": 0,
"workspaceDomain": null,
"workspaceOrganizationName": null,
"bidImpressions": 0,
"startCount": 0,
"firstCount": 0,
"midCount": 0,
"thirdCount": 0,
"completeCount": 0,
"audioVideoActualBids": 0,
"audioVideoActualImpressions": 0,
"eCPC": 0.0,
"eCPM": 0.0,
"eCPI": 0.0,
"eCPCV": 0.0,
"eCPV": 0.0,
"totalAttributedConversion": null,
"totalAttributedViewThroughConversion": null,
"totalAttributedClickThroughConversion": null,
"costPerAttributedConversion": null,
"totalAttributedConversionRate": null,
"reach": null,
"frequency": null,
"date": null,
"campaignId": 0,
"campaignName": null,
"maxBid": null,
"startTime": 0,
"endTime": 0,
"campaignType": null,
"status": null,
"mappingDataCost": 0.0,
"mappingSpent": 0.0,
"campaignTimezone": null,
"creativeType": null,
"budgetPacing": false,
"isCampaignFromNewPlatform": false,
"percentageOfTotalSpent": 0.0,
"uowId": 0,
"audioVideoViewed": 0.0,
"ioId": 0,
"ioName": null,
"ioTimezone": 0,
"ioBudgetDistributionMethod": 0,
"ioStartTime": 0,
"ioEndTime": 0,
"ioTotalBudget": 59900.0,
"isAutoSumIoTotalBudget": false,
"ioBudgetTypeId": 0,
"ioTotalImpressions": null,
"ioStatusId": 0,
"exchangeId": 0,
"exchangeName": null,
"budgetTypeId": 0,
"targetImpression": null,
"dailyImpression": null,
"creativesCount": null,
"campaignsCount": 0,
"pacingPercentage": null,
"actualSpent": null,
"expectedSpent": null,
"campaignDuration": null,
"remainingDuration": null,
"dailyPacingPercentage": null,
"expectedDailySpent": null,
"actualDailySpent": null,
"ioPacingPercentage": null,
"ioActualSpent": 0.0,
"ioExpectedSpent": 0.0,
"ioDuration": null,
"ioRemainingDuration": 0,
"budgetTotalCombined": null,
"budgetDayCombined": null,
"ioTotalBudgetCombined": null,
"campaignPriority": null,
"bidModelDataId": null,
"baseBid": null,
"campaignTypeId": null,
"workspaceVLDInsightsEarnings": null,
"platformVLDInsightsEarnings": null,
"isEligibleForVLDInsightsReport": null,
"vldInsightsCost": null,
"ioTimeZoneName": null,
"CTR": 0.0,
"VCR": 0.0,
"CVR": 0.0
},
"recordsList": [
{
"prebidCost": 0.0,
"clicks": 0,
"totalCount": 0,
"winRate": 0.0,
"logoURL": null,
"avatarURL": null,
"budgetDay": 0.0,
"budgetSpent": 0.0,
"budgetTotal": 0.0,
"dataCost": 0.0,
"mediaBudget": 0.0,
"owId": 203578,
"orgId": 0,
"impressions": 0,
"industry": 0,
"mediaSpent": 0.0,
"spent": 0.0,
"organizationBidShadingSaving": null,
"workspaceSpent": 0.0,
"platformSpent": 0.0,
"customerSpent": 0.0,
"platformMediaEarning": 0.0,
"platformBidShadingEarning": 0.0,
"platformTotalEarning": 0.0,
"workspaceMediaEarning": 0.0,
"workspaceBidShadingEarning": 0.0,
"workspaceTotalEarning": 0.0,
"organizationName": "Conor's Org",
"companySize": 0,
"workspaceName": null,
"workspaceId": 0,
"workspaceDomain": null,
"workspaceOrganizationName": null,
"bidImpressions": 0,
"startCount": 0,
"firstCount": 0,
"midCount": 0,
"thirdCount": 0,
"completeCount": 0,
"audioVideoActualBids": 0,
"audioVideoActualImpressions": 0,
"eCPC": 0.0,
"eCPM": 0.0,
"eCPI": 0.0,
"eCPCV": 0.0,
"eCPV": 0.0,
"totalAttributedConversion": null,
"totalAttributedViewThroughConversion": null,
"totalAttributedClickThroughConversion": null,
"costPerAttributedConversion": null,
"totalAttributedConversionRate": null,
"reach": 0,
"frequency": 0.0,
"date": null,
"campaignId": 0,
"campaignName": null,
"maxBid": null,
"startTime": 0,
"endTime": 0,
"campaignType": null,
"status": null,
"mappingDataCost": 0.0,
"mappingSpent": 0.0,
"campaignTimezone": null,
"creativeType": null,
"budgetPacing": false,
"isCampaignFromNewPlatform": false,
"percentageOfTotalSpent": 0.0,
"uowId": 0,
"audioVideoViewed": 0.0,
"ioId": 15844,
"ioName": "Test2",
"ioTimezone": 29,
"ioBudgetDistributionMethod": 1,
"ioStartTime": 1726517280000,
"ioEndTime": 0,
"ioTotalBudget": 50000.0,
"isAutoSumIoTotalBudget": true,
"ioBudgetTypeId": 1,
"ioTotalImpressions": null,
"ioStatusId": 1,
"exchangeId": 0,
"exchangeName": null,
"budgetTypeId": 1,
"targetImpression": null,
"dailyImpression": null,
"creativesCount": null,
"campaignsCount": 1,
"pacingPercentage": null,
"actualSpent": null,
"expectedSpent": null,
"campaignDuration": null,
"remainingDuration": null,
"dailyPacingPercentage": null,
"expectedDailySpent": null,
"actualDailySpent": null,
"ioPacingPercentage": 0.0,
"ioActualSpent": 0.0,
"ioExpectedSpent": 0.0,
"ioDuration": null,
"ioRemainingDuration": 0,
"budgetTotalCombined": null,
"budgetDayCombined": null,
"ioTotalBudgetCombined": 50000.0,
"campaignPriority": null,
"bidModelDataId": null,
"baseBid": null,
"campaignTypeId": null,
"workspaceVLDInsightsEarnings": null,
"platformVLDInsightsEarnings": null,
"isEligibleForVLDInsightsReport": null,
"vldInsightsCost": null,
"ioTimeZoneName": "US/Eastern",
"CTR": 0.0,
"VCR": 0.0,
"CVR": 0.0
},
{
"prebidCost": 0.0,
"clicks": 0,
"totalCount": 0,
"winRate": 0.0,
"logoURL": null,
"avatarURL": null,
"budgetDay": 0.0,
"budgetSpent": 0.0,
"budgetTotal": 0.0,
"dataCost": 0.0,
"mediaBudget": 0.0,
"owId": 203578,
"orgId": 0,
"impressions": 0,
"industry": 0,
"mediaSpent": 0.0,
"spent": 0.0,
"organizationBidShadingSaving": null,
"workspaceSpent": 0.0,
"platformSpent": 0.0,
"customerSpent": 0.0,
"platformMediaEarning": 0.0,
"platformBidShadingEarning": 0.0,
"platformTotalEarning": 0.0,
"workspaceMediaEarning": 0.0,
"workspaceBidShadingEarning": 0.0,
"workspaceTotalEarning": 0.0,
"organizationName": "Conor's Org",
"companySize": 0,
"workspaceName": null,
"workspaceId": 0,
"workspaceDomain": null,
"workspaceOrganizationName": null,
"bidImpressions": 0,
"startCount": 0,
"firstCount": 0,
"midCount": 0,
"thirdCount": 0,
"completeCount": 0,
"audioVideoActualBids": 0,
"audioVideoActualImpressions": 0,
"eCPC": 0.0,
"eCPM": 0.0,
"eCPI": 0.0,
"eCPCV": 0.0,
"eCPV": 0.0,
"totalAttributedConversion": null,
"totalAttributedViewThroughConversion": null,
"totalAttributedClickThroughConversion": null,
"costPerAttributedConversion": null,
"totalAttributedConversionRate": null,
"reach": 0,
"frequency": 0.0,
"date": null,
"campaignId": 0,
"campaignName": null,
"maxBid": null,
"startTime": 0,
"endTime": 0,
"campaignType": null,
"status": null,
"mappingDataCost": 0.0,
"mappingSpent": 0.0,
"campaignTimezone": null,
"creativeType": null,
"budgetPacing": false,
"isCampaignFromNewPlatform": false,
"percentageOfTotalSpent": 0.0,
"uowId": 0,
"audioVideoViewed": 0.0,
"ioId": 15688,
"ioName": "Test1",
"ioTimezone": 29,
"ioBudgetDistributionMethod": 1,
"ioStartTime": 1727755200000,
"ioEndTime": 0,
"ioTotalBudget": 9900.0,
"isAutoSumIoTotalBudget": true,
"ioBudgetTypeId": 1,
"ioTotalImpressions": null,
"ioStatusId": 1,
"exchangeId": 0,
"exchangeName": null,
"budgetTypeId": 1,
"targetImpression": null,
"dailyImpression": null,
"creativesCount": null,
"campaignsCount": 1,
"pacingPercentage": null,
"actualSpent": null,
"expectedSpent": null,
"campaignDuration": null,
"remainingDuration": null,
"dailyPacingPercentage": null,
"expectedDailySpent": null,
"actualDailySpent": null,
"ioPacingPercentage": 0.0,
"ioActualSpent": 0.0,
"ioExpectedSpent": 0.0,
"ioDuration": null,
"ioRemainingDuration": 0,
"budgetTotalCombined": null,
"budgetDayCombined": null,
"ioTotalBudgetCombined": 9900.0,
"campaignPriority": null,
"bidModelDataId": null,
"baseBid": null,
"campaignTypeId": null,
"workspaceVLDInsightsEarnings": null,
"platformVLDInsightsEarnings": null,
"isEligibleForVLDInsightsReport": null,
"vldInsightsCost": null,
"ioTimeZoneName": "US/Eastern",
"CTR": 0.0,
"VCR": 0.0,
"CVR": 0.0
}
]
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
recordsTotal: {
prebidCost: number;
clicks: number;
totalCount: number;
winRate: number;
logoURL: string;
avatarURL: string;
budgetDay: number;
budgetSpent: number;
budgetTotal: number;
dataCost: number;
mediaBudget: number;
owId: number;
orgId: number;
impressions: number;
industry: number;
mediaSpent: number;
spent: number;
organizationBidShadingSaving: null;
workspaceSpent: number;
platformSpent: number;
customerSpent: number;
platformMediaEarning: number;
platformBidShadingEarning: number;
platformTotalEarning: number;
workspaceBidShadingEarning: number;
workspaceTotalEarning: number;
organizationName: string;
companySize: number;
workspaceName: string;
workspaceId: number;
workspaceDomain: null;
workspaceOrganizationName: string;
bidImpressions: number;
startCount: number;
firstCount: number;
midCount: number;
thirdCount: number;
completeCount: number;
audioVideoActualBids: number;
audioVideoActualImpressions: number;
eCPC: number;
eCPM: number;
eCPI: number;
eCPCV: number;
eCPV: number;
totalAttributedConversion: number;
totalAttributedViewThroughConversion: number;
totalAttributedClickThroughConversion: number;
costPerAttributedConversion: number;
totalAttributedConversionRate: number;
reach: null;
frequency: null;
date: null;
campaignId: number;
campaignName: string;
maxBid: null;
startTime: number;
endTime: number;
campaignType: null;
status: null;
mappingDataCost: number;
mappingSpent: number;
campaignTimezone: null;
creativeType: null;
budgetPacing: boolean;
isCampaignFromNewPlatform: boolean;
percentageOfTotalSpent: number;
uowId: number;
audioVideoViewed: number;
ioId: number;
ioName: null;
ioTimezone: number;
ioBudgetDistributionMethod: number;
ioStartTime: number;
ioEndTime: number;
ioTotalBudget: number;
isAutoSumIoTotalBudget: boolean;
ioBudgetTypeId: number;
ioTotalImpressions: null;
ioStatusId: number;
exchangeId: number;
exchangeName: string;
budgetTypeId: number;
targetImpression: null;
dailyImpression: null;
creativesCount: number;
campaignsCount: number;
pacingPercentage: number;
actualSpent: number;
expectedSpent: number;
campaignDuration: null;
remainingDuration: null;
dailyPacingPercentage: null;
expectedDailySpent: null;
actualDailySpent: null;
ioPacingPercentage: null;
ioActualSpent: number;
ioExpectedSpent: number;
ioDuration: null;
ioRemainingDuration: number;
budgetTotalCombined: null;
budgetDayCombined: null;
ioTotalBudgetCombined: null;
campaignPriority: null;
bidModelDataId: null;
baseBid: null;
campaignTypeId: null;
workspaceVLDInsightsEarnings: null;
platformVLDInsightsEarnings: null;
isEligibleForVLDInsightsReport: null;
vldInsightsCost: null;
ioTimeZoneName: null;
CTR: number;
VCR: number;
CVR: number;
}
recordsList: {
prebidCost: number;
clicks: number;
totalCount: number;
winRate: number;
logoURL: null;
avatarURL: null;
budgetDay: number;
budgetSpent: number;
budgetTotal: number;
dataCost: number;
mediaBudget: number;
owId: number;
orgId: number;
impressions: number;
industry: number;
mediaSpent: number;
spent: number;
organizationBidShadingSaving: null;
workspaceSpent: number;
platformSpent: number;
customerSpent: number;
platformMediaEarning: number;
platformBidShadingEarning: number;
platformTotalEarning: number;
workspaceBidShadingEarning: number;
workspaceTotalEarning: number;
organizationName: string;
companySize: number;
workspaceName: string;
workspaceId: number;
workspaceDomain: null;
workspaceOrganizationName: string;
bidImpressions: number;
startCount: number;
firstCount: number;
midCount: number;
thirdCount: number;
completeCount: number;
audioVideoActualBids: number;
audioVideoActualBids: number;
eCPC: number;
eCPM: number;
eCPI: number;
eCPCV: number;
eCPV: number;
totalAttributedConversion: number;
totalAttributedViewThroughConversion: number;
totalAttributedClickThroughConversion: number;
costPerAttributedConversion: number;
totalAttributedConversionRate: number;
reach: null;
frequency: null;
date: null;
campaignId: number;
campaignName: string;
maxBid: null;
startTime: number;
endTime: number;
campaignType: null;
status: null;
mappingDataCost: number;
mappingSpent: number;
campaignTimezone: null;
creativeType: null;
budgetPacing: boolean;
isCampaignFromNewPlatform: boolean;
percentageOfTotalSpent: number;
uowId: number;
audioVideoViewed: number;
ioId: number;
ioName: null;
ioTimezone: number;
ioBudgetDistributionMethod: number;
ioStartTime: number;
ioEndTime: number;
ioTotalBudget: number;
isAutoSumIoTotalBudget: boolean;
ioBudgetTypeId: number;
ioTotalImpressions: null;
ioStatusId: number;
exchangeId: number;
exchangeName: string;
budgetTypeId: number;
targetImpression: null;
dailyImpression: null;
creativesCount: number;
campaignsCount: number;
pacingPercentage: number;
actualSpent: number;
expectedSpent: number;
campaignDuration: null;
remainingDuration: null;
dailyPacingPercentage: null;
expectedDailySpent: null;
actualDailySpent: null;
ioPacingPercentage: null;
ioActualSpent: number;
ioExpectedSpent: number;
ioDuration: null;
ioRemainingDuration: number;
budgetTotalCombined: null;
budgetDayCombined: null;
ioTotalBudgetCombined: null;
campaignPriority: null;
bidModelDataId: null;
baseBid: null;
campaignTypeId: null;
workspaceVLDInsightsEarnings: null;
platformVLDInsightsEarnings: null;
isEligibleForVLDInsightsReport: null;
vldInsightsCost: null;
ioTimeZoneName: null;
CTR: number;
VCR: number;
CVR: number;
}[]
}
}
};
};
};
function getIOListWithReportData(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/io/advanced/list',
parameters: {
query?: {
searchField?: `string`,
pageSize?: `number`,
offset?: `number`,
pageNo?: `number`,
sortBy?: `string`,
startDate?: `number`,
endDate?: `number`,
budgetTypeIds?: `string`,
timeZoneId?: `number`,
ioStatusIds?: `string`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Download advanced IO details
POSTDownload advanced IO details as CSV or XLSX file.
| Request schema | |
|---|---|
pageNo integer | Page number of retrieved data. |
noOfEntries integer | Number of entries returned per page. |
searchField string | Filter results by search field. Supported values: name and id. |
sortBy string | Sorts by ascending (+) or descending (-), default: -ioId. |
ioIdsList array of integers | IO IDs to include in data. |
timezoneId integer | Timezone ID. |
ioStatusIdsList array of integers | Status IDs to include in data. |
budgetTypeIdList array of integers | Budget type IDs to include in data. |
columns string | Column names to display in report as specified by label and value properties. |
startDate integer | Unix epoch timestamp of start date for returned data, in milliseconds. |
endDate integer | Unix epoch timestamp of end date for returned data, in milliseconds. |
fileType string | File type to download: csv or xlsx. |
fileName string | File name. |
owIds string | Download file will only contain data for comma separated Customer OW IDs. |
Response properties
url string | File download URL. |
- JSON
- TypeScript
{
"startDate": "1698638400000",
"endDate": "1698724799000",
"timezoneId": 29,
"searchField": "",
"sortBy": "impressions",
"order": "DESC",
"owIds": "",
"ioIdsList": [],
"ioStatusIdsList": [
1,
2
],
"fileType": "xlsx",
"fileName": "IO",
"budgetTypeIdList": [
1,
2
],
"columns": [
{
"label": "Insertion Order ID",
"value": "ioId"
},
{
"label": "Insertion Order Name",
"value": "ioName"
},
{
"label": "Status",
"value": "ioStatus"
},
{
"label": "Start date",
"value": "ioStartTime"
},
{
"label": "End date",
"value": "ioEndTime"
},
{
"label": "Impressions",
"value": "targetImpression"
},
{
"label": "Clicks",
"value": "clicks"
}
]
}
{
"success": true,
"data": {
"url": "https://tmpd3vsekqsh1zre3k8n-stage.s3.amazonaws.com/"
}
}
See TypeScript prerequisites for usage.
Get IO campaign budget and details
GETGet an IO's campaigns budget and spending details.
| Query parameters | |
|---|---|
ioId integer | Insertion order ID to retrieve details for. |
Response properties
totalAllocatedBudget integer | Total budget allocated to IO's campaigns. |
totalSpentBudget integer | Total budget spent by IO's campaigns. |
totalAllocatedImpression integer | Total impressions allocated to IO's campaigns. |
totalSpentImpression integer | Total impressions spent by IO's campaigns. |
totalImpressions integer | Total impressions count of IO's campaigns. |
totalBudget integer | Total budget of IO's campaigns. |
- JSON
- TypeScript
{
"success": true,
"data": {
"totalAllocatedBudget": 0.01154397815666,
"totalSpentBudget": 0.01154397815666,
"totalAllocatedImpression": 0,
"totalSpentImpression": 0,
"totalImpressions": 0,
"totalBudget": 0.011543
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalAllocatedBudget: number;
totalSpentBudget: number;
totalAllocatedImpression: number;
totalSpentImpression: number;
totalImpressions: number;
totalBudget: number;
}
}
};
};
};
function getBudgetAndImpressionInfoByIOId(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/io/campaign/budget-impression/info',
parameters: {
query: {
ioId: `number`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaign details grouped by insertion order ID
POSTGet a list of campaigns details grouped by insertion order ID with supported filters.
| Request schema | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1. |
noOfEntries integer | Number of entries returned per page, default: 20. |
sortBy string | Sorts by ascending (+) or descending (-) Supported values: ioId, ioName, ioStartTime, ioEndTime, ioTotalBudget, campaignId, isRecordTargeted. |
searchField string | Filter results by search field. |
ioIdsList array of integers | Filter by insertion order IDs. Records matching provided IDs will be returned first, before others. |
campaignTypeIds array of integers | Filter results by campaign type IDs. |
ids array of integers | Filters for campaign IDs. |
ioIds array of integers | Filters for insertion order IDs. |
status array of strings | Filters for types of campaign Status. |
creativeTypeIds array of integers | Filters for creative type IDs. |
ioBudgetTypeIds array of integers | Filters for budget type IDs. |
owIds array of integers | Filters for Customer Organization Workspace IDs. |
offset integer | Offset is alternative of page number. Offset is number of records to be skipped. |
- JSON
- TypeScript
{
"creativeTypeIds": [
11,
14
],
"owIds": [
201427
],
"ids": [
321743
],
"searchField": "default",
"pageNo": 1,
"noOfEntries": 20,
"sortBy": "+ioId",
"status": [
"running",
"pending"
],
"ioIds": [
363
],
"campaignTypeIds": [
1
],
"ioBudgetTypeIds": [
1
],
"offset": 1
}
{
"success": true,
"data": {
"totalRecords": 272,
"ioCampaignsList": [
{
"ioId": 4091,
"ioName": "Future start date",
"ioBudgetTypeId": 1,
"ioStatusId": 1,
"created": 1700726026913,
"lastModified": 1700726065000,
"owId": 201353,
"uowId": 8776,
"campaignCount": 1,
"campaigns": [
{
"id": 450700,
"campaignId": 450700,
"name": "future date campaign",
"creativeTypeId": 11,
"campaignTypeId": 1,
"status": "running",
"startTime": 1732690800,
"endTime": 1767164400,
"createdAt": 1701078853,
"modifiedAt": 1707091200000,
"owId": 201353,
"timezoneId": 21,
"targetedAudienceIds": [
1010324,
1054144,
1060433,
1063317
]
}
]
},
{
"ioId": 3979,
"ioName": "Test IO for campaign popup",
"ioBudgetTypeId": 1,
"ioStatusId": 1,
"created": 1700476689502,
"lastModified": 1701248369000,
"owId": 201353,
"uowId": 8776,
"campaignCount": 1,
"campaigns": [
{
"id": 451031,
"campaignId": 451031,
"name": "no end date",
"creativeTypeId": 11,
"campaignTypeId": 1,
"status": "running",
"startTime": 1701249000,
"createdAt": 1701248369,
"modifiedAt": 1707091200000,
"owId": 201353,
"timezoneId": 21,
"targetedAudienceIds": [
1010324,
1054144,
1060433,
1063317
]
}
]
},
{
"ioId": 225,
"ioName": "Beatrice King",
"ioBudgetTypeId": 1,
"ioStatusId": 2,
"created": 1677925263000,
"lastModified": 1700888400000,
"owId": 201353,
"uowId": 112037,
"campaignCount": 1,
"campaigns": [
{
"id": 450277,
"campaignId": 450277,
"name": "prod-campaign-20935 copy",
"creativeTypeId": 11,
"campaignTypeId": 1,
"status": "running",
"startTime": 1700819565,
"endTime": 1709182800,
"createdAt": 1700818673,
"modifiedAt": 1707177600000,
"owId": 201353,
"timezoneId": 29,
"targetedAudienceIds": null
}
]
},
{
"ioId": 48,
"ioName": "UAW",
"ioBudgetTypeId": 1,
"ioStatusId": 1,
"created": 1665500839000,
"lastModified": 1704704810000,
"owId": 201353,
"uowId": 8776,
"campaignCount": 1,
"campaigns": [
{
"id": 20731,
"campaignId": 20731,
"name": "prod-campaign-20731",
"creativeTypeId": 11,
"campaignTypeId": 1,
"status": "running",
"startTime": 1676700273,
"endTime": 1711857600,
"createdAt": 1676700278,
"modifiedAt": 1707177600000,
"owId": 201353,
"timezoneId": 29,
"targetedAudienceIds": null
}
]
}
],
"filteredRecords": 4
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
ioCampaignsList: {
ioId: number;
ioname: string;
ioBudgetTypeId: number;
created: number;
lastModified: number;
owId: number;
uowId: number;
campaignCount: number;
campaigns: {
id: number;
campaignId: number;
name: string;
creativeTypeId: number;
campaignTypeId: number;
status: string;
startTime: number;
endTime: number;
createdAt: number;
modifiedAt: number;
owId: number;
timezoneId: number;
targetedAudienceIds: number[];
}[]
}[]
}
}
}
};
};
function getIoMappedWithCampaignsDetails(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/campaign/basic/list',
requestBody: {
content: {
"application/json": {
searchBy?: `array of strings`,
status?: `array of strings`,
creativeTypeIds?: `array of numbers`,
owIds?: `array of numbers`,
ioIds?: `array of numbers`,
ids?: `array of numbers`,
campaignIds?: `array of numbers`,
campaignTypeIds?: `array of numbers`,
ioBudgetTypeIds?: `array of numbers`,
paymentTypeId?: `number`,
includeTargetedAudienceList?: `boolean`,
campaignExpiredAfterEpoch?: `number`,
allOwIds?: `boolean`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ],
offset?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaign details grouped by IO ID with filters
POSTGet a list of insertion order details along with campaigns details attached to that IO based on filters.
| Request schema | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1. |
noOfEntries integer | Number of entries returned per page, default: 20. |
sortBy string | Sorts by ascending (+) or descending (-) Supported values: ioId, ioName, ioStartTime, ioEndTime, ioTotalBudget, campaignId, isRecordTargeted. |
searchField string | Filter results by search field. |
ioIds array of integers | Filter by insertion order IDs. Records matching provided IDs will be returned first, before others. |
campaignIds array of integers | Filters results by provided campaign IDs. |
status array of strings | Filters for types of campaign Status. |
creativeTypeIds array of integers | Filters for creative type IDs. |
owIds array of integers | Filters for Customer Organization Workspace IDs. |
isAllOwIds object | Filters records with all allowed OW IDs if true, prioritizes records over owIds. |
startDate integer required | Returns IOs with start date greater than date provided (should not be older than a year). |
endDate integer required | Returns IOs with start date less than date provided (should not be older than a year). |
- JSON
- TypeScript
{
"creativeTypeIds": [
11,
14
],
"status": [
"expired"
],
"owIds": [
201427
],
"ioIds": [
5437
],
"campaignIds": [
456354
],
"isAllOwIds": false,
"searchField": "c",
"pageNo": 0,
"noOfEntries": 20,
"offset": 1,
"sortBy": "ioId",
"startDate": 1676472364000,
"endDate": 1708008364000
}
{
"success": true,
"data": {
"ioCampaignsList": [
{
"ioId": 363,
"ioName": "Default Insertion Order",
"ioBudgetTypeId": 2,
"ioStatusId": 1,
"created": 1691588961000,
"lastModified": 1691588961000,
"owId": 201427,
"uowId": 9489,
"campaignCount": 3,
"campaigns": [
{
"creativeTypeId": 11,
"id": 321743,
"name": "Campaign For Shoes",
"owId": 201427,
"status": "running",
"lastModified": 1690329600000,
"uowId": 9483,
"organizationName": "Organisation Name",
"organizationLogo": "https://webs.jpg"
},
{
"creativeTypeId": 17,
"id": 326679,
"name": "Cricket Campaign",
"owId": 201427,
"status": "running",
"lastModified": 1690329600000,
"uowId": 9485,
"organizationName": "Organisation Name",
"organizationLogo": "https://webs.jpg"
},
{
"creativeTypeId": 11,
"id": 323919,
"name": "Shirt Campaign",
"owId": 201427,
"status": "pending",
"lastModified": 1692144000000,
"uowId": 1,
"organizationName": "Organisation Name",
"organizationLogo": "https://webs.jpg"
}
]
}
],
"totalRecords": 1477,
"filteredRecords": 3
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
ioCampaignsList: {
ioId: number;
ioName: string;
ioBudgetTypeId: number;
ioStatusId: number;
created: number;
lastModified: number;
owId: number;
uowId: number;
campaignCount: number;
campaigns: {
creativeTypeId: number;
id: number;
name: string;
owId: number;
status: string;
lastModified: number;
uowId: number;
organizationName: string;
organizationLogo: string;
}[]
}
}
totalRecords: number;
filteredRecords: number;
}
};
};
};
function getServedIoMappedWithCampaignsDetails(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/campaign/served/list',
requestBody: {
content: {
"application/json": {
searchBy?: `array of strings`,
status?: `array of strings`,
creativeTypeIds?: `array of numbers`,
owIds?: `array of numbers`,
ioIds?: `array of numbers`,
ids?: `array of numbers`,
campaignIds?: `array of numbers`,
campaignTypeIds?: `array of numbers`,
ioBudgetTypeIds?: `array of numbers`,
paymentTypeId?: `number`,
includeTargetedAudienceList?: `boolean`,
campaignExpiredAfterEpoch?: `number`,
startDate?: `number`,
endDate?: `number`,
allOwIds?: `boolean`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ],
offset?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaigns and report details by insertion order ID
POSTGet a list of campaigns with detailed report by insertion order ID (ioId) with supported filters.
| Request schema | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1. |
noOfEntries integer | Number of entries returned per page, default: 20. |
sortBy string | Sorts by ascending (+) or descending (-) (See supported values in collapsible section below table.). |
searchField string | Filter results by search field. |
ioIdsList array of integers | Filter by insertion order IDs. Records matching provided IDs will be returned first, before others. |
budgetTypeIdList array of integers | Filters for selected budget type IDs e.g. "impression based" or "budget based". Records matching the provided IDs will be returned. |
campaignIds array of integers | Filters for selected campaign IDs. Records matching the provided IDs will be returned first, before others. |
timeZoneId integer | Filters campaigns for specified timezone ID. |
campaignStatusList array of strings | Filters campaigns by specified campaign Status. |
creativeTypeIds string | Filters campaigns by specified creative type ID. |
owIds string | Filters campaigns by specified Customer Organization Workspace ID. |
Supported sortBy Values
clicksimpressionsbidImpressionsstartCountfirstCountmidCountthirdCountcompleteCountdataCostspentmediaSpentwinRateVCReCPCeCPMeCPICTRCVReCPCVeCPVbudgetDaybudgetTotalcampaignIdcampaignNamemaxBidstartTimeendTimecampaignTypestatusbudgetDaybudgetTotalreachfrequencymappingDataCostmappingSpentpercentageOfTotalSpentorganizationNameaudioVideoViewedcampaignTimezonepixalateViewAbilityioNameioIdtargetImpressioncreativesCountpacingPercentagedailyPacingPercentageprebidCostioTotalImpressionsdailyImpressionscampaignPrioritytotalAttributedConversiontotalAttributedViewThroughConversiontotalAttributedClickThroughConversioncostPerAttributedConversiontotalAttributedConversionRate
- JSON
- TypeScript
{
"campaignStatusList": [
"running"
],
"timezoneId": 29,
"owIds": "200425,201427",
"ids": [
1,
2
],
"ioIdsList": [
1,
2,
38
],
"budgetTypeIdList": [
1
],
"campaignIds": "1,2,3",
"sortBy": "+campaignName",
"creativeTypeIds": "14",
"searchField": "campaign"
}
{
"success": true,
"data": {
"totalRecords": 2,
"filteredRecords": 2,
"recordsTotal": {
"clicks": 0,
"totalCount": 1,
"winRate": 0,
"logoURL": null,
"avatarURL": null,
"budgetDay": 0,
"budgetSpent": 0,
"budgetTotal": 56.339999999999904,
"dataCost": 0,
"mediaBudget": 0,
"owId": 0,
"orgId": 0,
"impressions": 0,
"industry": 0,
"mediaSpent": 0,
"spent": 0,
"workspaceSpent": 0,
"platformSpent": 0,
"customerSpent": 0,
"platformEarning": 0,
"workspaceEarning": 0,
"organizationName": null,
"companySize": 0,
"workspaceName": null,
"workspaceId": 0,
"workspaceDomain": null,
"workspaceOrganizationName": null,
"bidImpressions": 0,
"startCount": 0,
"firstCount": 0,
"midCount": 0,
"thirdCount": 0,
"completeCount": 0,
"audioVideoActualBids": 0,
"audioVideoActualImpressions": 0,
"eCPC": 0,
"eCPM": 0,
"eCPI": 0,
"eCPCV": 0,
"eCPV": 0,
"totalAttributedConversion": 0,
"totalAttributedViewThroughConversion": 0,
"totalAttributedClickThroughConversion": 0,
"costPerAttributedConversion": 0,
"totalAttributedConversionRate": 0,
"reach": 0,
"frequency": 0,
"date": null,
"campaignId": 0,
"campaignName": null,
"maxBid": 0,
"startTime": 0,
"endTime": 0,
"campaignType": null,
"status": null,
"mappingDataCost": 0,
"mappingSpent": 0,
"campaignTimezone": null,
"creativeType": null,
"budgetPacing": false,
"isCampaignFromNewPlatform": false,
"percentageOfTotalSpent": 0,
"uowId": 0,
"audioVideoViewed": 0,
"ioId": 0,
"ioName": null,
"ioTimezone": 0,
"ioBudgetDistributionMethod": 0,
"ioStartTime": 0,
"ioEndTime": 0,
"ioTotalBudget": 0,
"isAutoSumIoTotalBudget": false,
"ioBudgetTypeId": 0,
"ioTotalImpressions": null,
"pacingPercentage": null,
"actualSpent": 0,
"expectedSpent": 0,
"campaignDuration": null,
"remainingDuration": 0,
"dailyPacingPercentage": null,
"expectedDailySpent": 0,
"actualDailySpent": 0,
"ioStatusId": 0,
"exchangeId": 0,
"creativesCount": null,
"exchangeName": null,
"budgetTypeId": 0,
"targetImpression": null,
"dailyImpression": 0,
"budgetTotalCombined": 100,
"budgetDayCombined": 10,
"campaignPriority": null,
"ioTotalBudgetCombined": 1000,
"CTR": 0,
"VCR": 0,
"CVR": 0
},
"recordsList": [
{
"clicks": 0,
"totalCount": 0,
"winRate": 0,
"logoURL": null,
"avatarURL": null,
"budgetDay": 5,
"budgetSpent": 0,
"budgetTotal": 13,
"dataCost": 0,
"mediaBudget": 0,
"owId": 201427,
"orgId": 0,
"impressions": 0,
"industry": 0,
"mediaSpent": 0,
"spent": 0,
"workspaceSpent": 0,
"platformSpent": 0,
"customerSpent": 0,
"platformEarning": 0,
"workspaceEarning": 0,
"organizationName": "Organisation Name",
"companySize": 0,
"workspaceName": null,
"workspaceId": 0,
"workspaceDomain": null,
"workspaceOrganizationName": null,
"bidImpressions": 0,
"startCount": 0,
"firstCount": 0,
"midCount": 0,
"thirdCount": 0,
"completeCount": 0,
"audioVideoActualBids": 0,
"audioVideoActualImpressions": 0,
"eCPC": 0,
"eCPM": 0,
"eCPI": 0,
"eCPCV": 0,
"eCPV": 0,
"totalAttributedConversion": 0,
"totalAttributedViewThroughConversion": 0,
"totalAttributedClickThroughConversion": 0,
"costPerAttributedConversion": 0,
"totalAttributedConversionRate": 0,
"reach": 0,
"frequency": 0,
"date": null,
"campaignId": 445615,
"campaignName": "Campaign For Child",
"maxBid": 4,
"startTime": 1698445456,
"endTime": 1698739200,
"campaignType": "cpv",
"status": "pending",
"mappingDataCost": 0,
"mappingSpent": 0,
"campaignTimezone": "US/Alaska",
"creativeType": "Video",
"budgetPacing": true,
"isCampaignFromNewPlatform": true,
"percentageOfTotalSpent": 0,
"uowId": 9480,
"audioVideoViewed": 0,
"ioId": 2991,
"ioName": "Insertion Order For Donation",
"ioTimezone": 420,
"ioBudgetDistributionMethod": 0,
"ioStartTime": 1698446340000,
"ioEndTime": 1698739200000,
"ioTotalBudget": 26415,
"isAutoSumIoTotalBudget": true,
"ioBudgetTypeId": 0,
"ioTotalImpressions": null,
"pacingPercentage": 12.31,
"actualSpent": 123,
"expectedSpent": 212,
"campaignDuration": 5,
"remainingDuration": 2,
"dailyPacingPercentage": null,
"expectedDailySpent": 123,
"actualDailySpent": 0,
"ioStatusId": 1,
"exchangeId": 0,
"creativesCount": 2,
"exchangeName": null,
"budgetTypeId": 1,
"targetImpression": null,
"dailyImpression": 0,
"budgetTotalCombined": 100,
"budgetDayCombined": 10,
"campaignPriority": 1,
"ioTotalBudgetCombined": 1000,
"CTR": 0,
"VCR": 0,
"CVR": 0
}
],
"totalCount": 2
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
filteredRecords: number;
recordsTotal: {
clicks: number;
totalCount: number;
winRate: number;
logoURL: string;
avatarURL: string;
budgetDay: number;
budgetSpent: number;
budgetTotal: number;
dataCost: number;
mediaBudget: number;
owId: number;
orgId: number;
impressions: number;
industry: number;
mediaSpent: number;
workspaceSpent: number;
platformSpent: number;
customerSpent: number;
platformEarning: number;
workspaceEarning: number;
organizationName: string;
companySize: number;
workspaceName: string;
workspaceId: number;
workspaceDomain: null;
workspaceOrganizationName: string;
bidImpressions: number;
startCount: number;
firstCount: number;
midCount: number;
thirdCount: number;
completeCount: number;
audioVideoActualBids: number;
audioVideoActualImpressions: number;
eCPC: number;
eCPM: number;
eCPI: number;
eCPCV: number;
eCPV: number;
totalAttributedConversion: number;
totalAttributedViewThroughConversion: number;
totalAttributedClickThroughConversion: number;
costPerAttributedConversion: number;
totalAttributedConversionRate: number;
reach: number;
frequency: number;
date: null;
campaignId: number;
campaignName: string;
maxBid: null;
startTime: number;
endTime: number;
campaignType: null;
status: null;
mappingDataCost: number;
mappingSpent: number;
campaignTimezone: null;
creativeType: null;
budgetPacing: boolean;
isCampaignFromNewPlatform: boolean;
percentageOfTotalSpent: number;
uowId: number;
audioVideoViewed: number;
ioId: number;
ioName: null;
ioTimezone: number;
ioBudgetDistributionMethod: number;
ioStartTime: number;
ioEndTime: number;
ioTotalBudget: number;
isAutoSumIoTotalBudget: boolean;
ioBudgetTypeId: number;
ioTotalImpressions: null;
ioStatusId: number;
exchangeId: number;
exchangeName: string;
budgetTypeId: number;
targetImpression: null;
dailyImpression: null;
creativesCount: number;
pacingPercentage: number;
actualSpent: number;
expectedSpent: number;
campaignDuration: null;
remainingDuration: null;
dailyPacingPercentage: null;
expectedDailySpent: null;
actualDailySpent: null;
budgetTotalCombined: null;
budgetDayCombined: null;
ioTotalBudgetCombined: null;
campaignPriority: null;
CTR: number;
VCR: number;
CVR: number;
}
recordsList: {
clicks: number;
totalCount: number;
winRate: number;
logoURL: string;
avatarURL: string;
budgetDay: number;
budgetSpent: number;
budgetTotal: number;
dataCost: number;
mediaBudget: number;
owId: number;
orgId: number;
impressions: number;
industry: number;
mediaSpent: number;
spent: number;
workspaceSpent: number;
platformSpent: number;
customerSpent: number;
platformEarning: number;
workspaceEarning: number;
organizationName: string;
companySize: number;
workspaceName: string;
workspaceId: number;
workspaceDomain: null;
workspaceOrganizationName: string;
bidImpressions: number;
startCount: number;
firstCount: number;
midCount: number;
thirdCount: number;
completeCount: number;
audioVideoActualBids: number;
audioVideoActualImpressions: number;
eCPC: number;
eCPM: number;
eCPI: number;
eCPCV: number;
eCPV: number;
totalAttributedConversion: number;
totalAttributedViewThroughConversion: number;
totalAttributedClickThroughConversion: number;
costPerAttributedConversion: number;
totalAttributedConversionRate: number;
reach: number;
frequency: number;
date: null;
campaignId: number;
campaignName: string;
maxBid: null;
startTime: number;
endTime: number;
campaignType: null;
status: null;
mappingDataCost: number;
mappingSpent: number;
campaignTimezone: null;
creativeType: null;
budgetPacing: boolean;
isCampaignFromNewPlatform: boolean;
percentageOfTotalSpent: number;
uowId: number;
audioVideoViewed: number;
ioId: number;
ioName: null;
ioTimezone: number;
ioBudgetDistributionMethod: number;
ioStartTime: number;
ioEndTime: number;
ioTotalBudget: number;
isAutoSumIoTotalBudget: boolean;
ioBudgetTypeId: number;
ioTotalImpressions: null;
pacingPercentage: number;
actualSpent: number;
expectedSpent: number;
campaignDuration: number;
remainingDuration: number;
dailyPacingPercentage: number;
expectedDailySpent: number;
actualDailySpent: number;
ioStatusId: number;
exchangeId: number;
creativesCount: number;
exchangeName: string;
budgetTypeId: number;
targetImpression: null;
dailyImpression: number;
budgetTotalCombined: number;
budgetDayCombined: number;
campaignPriority: number;
ioTotalBudgetCombined: number;
CTR: number;
VCR: number;
CVR: number;
}[]
}
};
};
};
function getCampaignIODetailsByIoId(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/campaigns/list',
requestBody: {
content: {
"application/json": {
ioIdsList?: `array of numbers`,
campaignStatusList?: `array of strings`,
creativeTypeIds?: `string`,
owIds?: `string`,
campaignIds?: `string`,
ids?: `array of numbers`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
timeZoneId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Download CSV/XLSX file for IO-based campaign details
POSTCreate a downloadable report of campaign details based on insertion order.
| Request schema | |
|---|---|
searchField string | Filters results by search field. |
noOfEntries integer | Number of entries returned per page, default: 20. |
pageNo integer | Page number of retrieved data, default: 1. |
sortBy string | Sorts by ascending (+) or descending (-). |
owIds array of integers | Filter results by Organization Workspace IDs. |
ioIds array of integers | Report will include provided campaign IO IDs. |
campaignIds string | Comma separated campaign IDs to include in report. |
timeZoneId integer | Filters data in report for provided timezone ID. |
campaignStatus string | Comma separated campaign statuses to include in report. |
creativeTypeIds string | Filters report for provided creative type IDs only. |
columns object required | Column names to display in report as specified by label and value properties. |
startDate integer required | Unix epoch start date for data in report, in milliseconds. |
endDate integer required | Unix epoch end date for data in report, in milliseconds. |
fileType string required | Specifies file type for download: csv or xlsx. |
fileName string required | Specifies file name for download. |
Response properties
url string | File download URL. |
- JSON
- TypeScript
{
"startDate": "1698984000000",
"endDate": "1699070399000",
"timezoneId": 29,
"campaignStatus": "pending,running",
"creativeTypeIds": "",
"searchField": "",
"sortBy": "+impressions",
"owIds": "",
"ioIdsList": [],
"campaignIds": "",
"conversionIds": "",
"fileType": "csv",
"fileName": "Campaigns",
"columns": [
{
"label": "ID",
"value": "campaignId"
},
{
"label": "Campaign Name",
"value": "campaignName"
},
{
"label": "Insertion Order Name",
"value": "ioName"
},
{
"label": "Start date",
"value": "startTime"
},
{
"label": "End date",
"value": "endTime"
},
{
"label": "Max Bid($)",
"value": "maxBid"
},
{
"label": "Daily Budget($)",
"value": "budgetDay"
},
{
"label": "Total Budget($)",
"value": "budgetTotal"
},
{
"label": "Total Spent($)",
"value": "spent"
},
{
"label": "Budget Completion(%)",
"value": "percentageOfTotalSpent"
},
{
"label": "Target Impressions",
"value": "targetImpression"
},
{
"label": "Impressions",
"value": "impressions"
},
{
"label": "Clicks",
"value": "clicks"
},
{
"label": "CTR(%)",
"value": "CTR"
},
{
"label": "eCPM($)",
"value": "eCPM"
},
{
"label": "VCR(%)",
"value": "VCR"
},
{
"label": "WinRate(%)",
"value": "winRate"
}
]
}
{
"success": true,
"data": {
"url": "https://tmpd3vsekqsh1zre3k8n-stage.s3.amazonaws.com/"
}
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Invalid sortBy value."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
url: string
}
}
};
};
422: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string;
}[]
}
};
};
};
function downloadCampaignsReport(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/campaigns/list/download',
requestBody: {
content: {
"application/json": {
startDate?: `number`,
endDate?: `number`,
ioIdsList?: `array of numbers`,
timezoneId?: `number`,
campaignStatus?: `string`,
creativeTypeIds?: `string`,
owIds?: `string`,
conversionIds?: `string`,
fileType?: `string`,
fileName?: `string`,
campaignIds?: `string`,
owIdsList?: `array of numbers`,
campaignTypeIds?: `array of numbers`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ],
offset?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of IO start/end dates
POSTPOST
| Request schema | |
|---|---|
noOfEntries integer | Number of entries returned per page, default: 300. |
pageNo integer | Page number of retrieved data, default: 1. |
sortBy string | Sorts by ascending (+) or descending (-), default: -ioDate. |
owIds array of integers | Filter results by Organization Workspace IDs. |
isAllOwIds boolean | Filters records with all allowed OW IDs if true, prioritizes records over owIds. |
ids array of integers | Prioritizes results of provided IDs over other records. |
startDate string | Filters for IOs with start date greater than the one specified. |
endDate string | Filters for IOs with a date less than the one specified. |
Response properties
ioStartDateList array of strings | List of IO start dates. |
- JSON
- TypeScript
{
"noOfEntries": 30,
"pageNo": -1,
"searchField": "",
"sortBy": "-Date",
"startDate": "08/17/2023",
"endDate": "11/17/2023"
}
{
"success": true,
"data": {
"ioStartDateList": [
"02/21/2023",
"01/27/2023",
"01/20/2023",
"01/11/2023",
"01/06/2023",
"01/05/2023",
"12/29/2022",
"12/28/2022",
"12/23/2022",
"12/22/2022"
],
"totalRecords": 16,
"filteredRecords": 10
}
}
See TypeScript prerequisites for usage.v
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
ioStartDateList: string[];
totalRecords: number;
filteredRecords: number;
}
}
};
};
};
function getIOStartDateList(): Promise<Responses> {
/*
* or
*
* function getIOEndDateList(): Promise<Responses> {
*/
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/startDate/list',
/*
* or
*
* url: 'https://api.iqm.com/api/v3/cmp/io/endDate/list',
*/
requestBody: {
content: {
"application/json": {
owIds?: `array of numbers`,
isAllOwIds?: `boolean`,
ids?: `array of strings`,
startDate?: `string`,
endDate?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: [ "asc" | "desc" ],
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Insertion order management
Create an insertion order
POSTCreate an insertion order with the following minimum required fields:
ioNameioStartTimeioEndTimeioBudgetTypeId
- JSON
- TypeScript
{
"ioName": "IO Name 1",
"ioStartTime": 1690898148000,
"ioEndTime": 1690898888000,
"ioTotalBudget": 1000,
"ioTimeZoneId": 29,
"isAutoSumIoTotalBudget": true,
"ioBudgetTypeId": 1,
"ioBudgetDistributionMethodId": 1
}
{
"success": true,
"data": {
"ioId": 25096,
"ioName": "new IO 1",
"owId": 203578,
"createdByUowId": 188494,
"modifiedByUowId": 188494,
"ioStartTime": 1778299200000,
"ioEndTime": null,
"ioTotalBudget": null,
"ioTimeZoneId": 29,
"isAutoSumIoTotalBudget": true,
"ioBudgetDistributionMethodId": 1,
"ioBudgetTypeId": 1,
"ioTotalImpressions": null,
"ioStatusId": 1,
"ioNextPerformanceCheck": null,
"ioLastPriorityShift": null,
"ioCurrentPriority": null,
"isIoPrioritise": false
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
ioId: number;
ioName: string;
ioStartTime: number;
ioEndTime: number;
ioTotalBudget: number;
ioTimeZoneId: number;
ioBudgetTypeId: number;
ioBudgetDistributionMethodId: number;
isAutoSumIoTotalBudget: boolean;
ioTotalImpressions: number
}
}
};
};
};
function createCampaignIO(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/add',
requestBody: {
content: {
"application/json": {
ioId?: `number`,
ioName: `string`,
owId?: `number`,
createdByUowId?: `number`,
modifiedByUowId?: `number`,
ioStartTime?: `number`,
ioEndTime?: `number`,
ioTotalBudget?: `number`,
ioTimeZoneId?: `number`,
isAutoSumIoTotalBudget?: `boolean`,
ioBudgetDistributionMethodId?: `number`,
ioBudgetTypeId?: `number`,
ioTotalImpressions?: `number`,
ioStatusId?: `number`,
ioNextPerformanceCheck?: `number`,
ioLastPriorityShift?: `number`,
ioCurrentPriority?: `number`,
isIoPrioritise?: `boolean`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update insertion order details
PATCHUpdate various properties of a given insertion order.
| Path parameters | |
|---|---|
ioId integer | Insertion order ID. |
| Request schema | |
|---|---|
ioName string | Update insertion order name. |
ioStartTimeinteger | Unix epoch timestamp (in milliseconds) of IO start time. |
ioEndTime integer | Unix epoch timestamp (in milliseconds) of IO end time. |
ioTotalBudget integer | Budget of IO. |
ioTimeZoneId integer | Timezone ID. |
ioTotalImpressions integer | Number of impressions. |
isAutoSumIoTotalBudget boolean | If true Keeps IO budget same as total budget of all included campaigns. |
Response properties
success boolean | Indicates IO was succesfully updated: true. |
data string | Success message. |
- JSON
- TypeScript
{
"ioName": "IO Name 1",
"ioStartTime": 1690898148000,
"ioEndTime": 1690898888000,
"ioTotalBudget": 1000,
"ioTotalImpressions": 0,
"ioTimeZoneId": 29,
"ioBudgetTypeId": 1,
"isAutoSumIoTotalBudget": true
}
{
"success": true,
"data": "IO Name 1 saved successfully."
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: string
}
};
};
};
function editIODetails(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/cmp/io/{ioId}',
params: {
path: {
ioId: `number`
}
},
requestBody: {
content: {
"application/json": {
ioName?: `string`,
ioEndTime?: `number`,
ioStartTime?: `number`,
ioTotalBudget?: `number`,
isAutoSumIoTotalBudget?: `boolean`,
ioTimeZoneId?: `number`,
ioTotalImpressions?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update end date for multiple IOs
PATCHUpdate the end date for a list of IOs from either an Advertiser profile or a Workspace.
| Request schema | |
|---|---|
ioIdsList array of integers | IO IDs to update. |
ioEndTime integer | Unix epoch timestamp of end time, in milliseconds. |
ioTimezoneId integer | Timezone ID. |
ioOwId integer optional | Insertion order Workspace ID (if updating as a workspace profile). |
Response properties
success boolean | Indicates IO was succesfully updated: true. |
data string | Success message. |
- JSON
- TypeScript
{
"ioIdsList": [
1,
2,
3
],
"ioEndTime": 1690898148000,
"ioTimezoneId": 29,
"ioOwId": 201427
}
{
"success": true,
"data": "EndDate updated successfully"
}
More responses
{
"success": false,
"errorObjects": [
{
"error": "Forbidden!"
}
]
}
{
"success": false,
"errorObjects": [
{
"error": "IO IDs list can not be empty."
}
]
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: string
}
};
};
403: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string;
}[]
}
};
};
422: {
content: {
"application/json": {
success: boolean;
errorObjects: {
error: string
}[]
}
};
};
};
function updateIOEndDate(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/cmp/io/update-end-date',
requestBody: {
content: {
"application/json": {
ioIdsList?: `array of numbers`,
ioEndTime?: `number`,
ioTimezoneId?: `number`,
ioOwId?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update budget for multiple IOs
PATCHUpdate budget for a given list of IOs for either a dollar-based budget or an impressions-based budget.
| Request schema | |
|---|---|
ioIdsList array of integers | IO IDs to update with either budget or ioTotalImpressions. |
budget integer | Dollars-based budget amount. |
ioTotalImpressions integer | Impressions-based budget amount. |
budgetUpdateType string | set or add dollars-based budget type. |
ioOwId integer optional | Insertion order Workspace ID (if updating as a workspace profile). |
Response properties
success boolean | Indicates IO was succesfully updated: true. |
data string | Success message. |
- JSON
- TypeScript
{
"ioIdsList": [
1,
2,
3
],
"ioTotalImpressions": 10023,
"budgetUpdateType": "set",
"ioOwId": 201427
}
{
"success": true,
"data": "Budget updated successfully"
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: string
}
};
};
};
function updateIOBudgetByIOList(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/cmp/io/update-budget',
requestBody: {
content: {
"application/json": {
ioIdsList?: `array of numbers`,
budget?: `number`,
budgetUpdateType?: `string`,
ioOwId?: `number`,
ioBudgetTypeId?: `number`,
ioTotalImpressions?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Duplicate an insertion order
POSTDuplicate a single IO, and all campaigns within that IO.
| Request schema | |
|---|---|
ioExistingCampaignIds array of integers | Campaign IDs within specified IO (ioId). |
ioId integer | Specified IO to duplicate. |
ioTimeZoneId integer | Timezone ID. |
ioEndTime integer | Unix epoch of IO end time. |
ioStartTime integer | Unix epoch of IO start time. |
Response properties
duplicatedCampaignIds array of integers | Duplicated campaign IDs. |
duplicatedIOId integer | Duplicated IO ID. |
- JSON
- TypeScript
{
"ioStartTime": 1698295604000,
"ioEndTime": 1698258600000,
"ioId": 223,
"ioTimeZoneId": 105,
"ioExistingCampaignIds": [
12345,
67890,
21345
]
}
{
"success": true,
"data": {
"duplicatedCampaignIds": [
12345,
54321
],
"duplicatedIOId": 271
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
duplicatedCampaignIds: number[];
duplicatedIOId: number
}
}
};
};
};
function duplicateIO(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/cmp/io/duplicate',
requestBody: {
content: {
"application/json": {
ioExistingCampaignIds?: `array of numbers`,
ioId?: `number`,
ioTimeZoneId?: `number`,
ioEndTime?: `number`,
ioStartTime?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Delete an insertion order
POSTDelete one or multiple IOs and all campaigns attached to them.
| Request schema | |
|---|---|
ioIdsList array of integers | Insertion order IDs. |
Response properties
success boolean | Indicates IO was succesfully updated: true. |
data string | Success message. |
- JSON
- TypeScript
{
"ioIdsList": [
1,
2,
3
]
}
{
"success": true,
"data": "3 Insertion Orders deleted successfully"
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: string
}
};
};
};
function updateIOStatusToDelete(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/cmp/io/delete',
requestBody: {
content: {
"application/json": {
ioIdsList: `array of numbers`,
owIdsList?: `array of numbers`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get more details
Get frequency cap types
GETGet list of frequency cap types for campaign configuration.
| Query parameter | |
|---|---|
frequencyCapTypeIds integer | Filter by specific frequency cap type IDs (optional). |
Response properties
frequencyCapTypes array of objects | List of frequency cap types. |
id integer | Frequency cap type ID. |
name string | Frequency cap type name: days, weeks, months, campaign_duration. |
displayName string | Display name. |
minDuration integer | Minimum duration value. |
maxDuration integer | Maximum duration value. |
{
"success": true,
"data": {
"frequencyCapTypes": [
{
"id": 1,
"name": "days",
"order": 1,
"displayName": "Day(s)",
"minDuration": 1,
"maxDuration": 6
},
{
"id": 2,
"name": "weeks",
"order": 2,
"displayName": "Week(s)",
"minDuration": 1,
"maxDuration": 3
},
{
"id": 3,
"name": "months",
"order": 3,
"displayName": "Month(s)",
"minDuration": 1,
"maxDuration": 3
},
{
"id": 4,
"name": "campaign_duration",
"order": 4,
"displayName": "Campaign Duration",
"minDuration": null,
"maxDuration": null
}
],
"totalRecords": 4,
"filteredRecords": 4
}
}
AI-Based Optimization Campaign Goals and Objectives
GETGet static list of AI-Based Optimization Campaign Goals and Campaign Objectives.
See the Optimization & delivery overview - AI-Based Optimization (Automated) Help Center article for more information on Goal-AI objectives and goals.
Response properties
objectives array of objects | List of Campaign Objectives: awareness, consideration, conversion. |
goals array of objects | List of Campaign Goals with their compatible creative types and KPI ranges. |
id integer | Campaign Objective or Campaign Goal ID. |
name string | Internal name. |
displayName string | Display name. |
applicableGoals array of integers | Campaign Goal IDs that apply to the Campaign Objective. |
compatibleCreativeTypes array of integers | Creative type IDs compatible with the Campaign Goal. |
kpi string | KPI metric name. |
"success": true,
"data": {
"objectives": [
{
"id": 1,
"name": "awareness",
"displayName": "Awareness",
"applicableGoals": [1, 2, 3, 4, 5, 8],
"displayOrder": 1
},
{
"id": 2,
"name": "consideration",
"displayName": "Consideration",
"applicableGoals": [9, 10, 2, 3, 4],
"displayOrder": 2
},
{
"id": 3,
"name": "conversion",
"displayName": "Conversion",
"applicableGoals": [11, 6, 7],
"displayOrder": 3
}
],
"goals": [
{
"id": 1,
"name": "increase_reach",
"displayName": "Increase Reach",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": null,
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 1
},
{
"id": 2,
"name": "increase_ctr",
"displayName": "Increase CTR",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": "CTR",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 2
},
{
"id": 3,
"name": "increase_vcr",
"displayName": "Increase VCR",
"compatibleCreativeTypes": [14],
"kpi": "VCR",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 3
},
{
"id": 4,
"name": "increase_acr",
"displayName": "Increase ACR",
"compatibleCreativeTypes": [17],
"kpi": "ACR",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 4
},
{
"id": 5,
"name": "increase_viewable_impressions",
"displayName": "Increase Viewable Impressions",
"compatibleCreativeTypes": [11, 13, 14, 15],
"kpi": "Viewable Impressions",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 5
},
{
"id": 6,
"name": "increase_conversion_rate",
"displayName": "Increase Conversion Rate",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": "Conversion Rate",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 6
},
{
"id": 7,
"name": "increase_roas",
"displayName": "Increase ROAS",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": "ROAS",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 7
},
{
"id": 8,
"name": "reduce_cpm",
"displayName": "Reduce CPM",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": "CPM",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 8
},
{
"id": 9,
"name": "reduce_cpc",
"displayName": "Reduce CPC",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": "CPC",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 9
},
{
"id": 10,
"name": "reduce_cpcv",
"displayName": "Reduce CPCV",
"compatibleCreativeTypes": [14],
"kpi": "CPCV",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 10
},
{
"id": 11,
"name": "reduce_cpa",
"displayName": "Reduce CPA",
"compatibleCreativeTypes": [11, 13, 14, 15, 17],
"kpi": "CPA",
"minKpi": 1,
"maxKpi": 100,
"displayOrder": 11
}
]
}
Get estimator dimension list
GETGet list of supported parameters/dimensions for campaign reach and bid landscape estimation.
Response properties
targetableAudience object | Supported dimensions for targetable audience estimation with boolean values. |
bidLandscapeEstimation object | Supported dimensions for bid landscape estimation with boolean values. |
{
"success": true,
"data": {
"targetableAudience": {
"countryIds": true,
"stateIds": true,
"countyIdsIncluded": true,
"cityIdsIncluded": true,
"zipCodesIncluded": true,
"ethnicityIds": true,
"ageIds": true,
"genderIds": true,
"incomeIds": true,
"whitelistLocationJson": true,
"deviceTypeIds": true
},
"bidLandscapeEstimation": {
"countryIds": false,
"creativeRtbTypes": true,
"creativeTypes": true,
"maxBid": true,
"deviceTypeNames": true,
"stateCodes": true,
"excludedExchangeNames": true,
"dmaCodesIncluded": true,
"dealIds": true,
"whitelistInventoryGroupIds": true,
"blacklistInventoryGroupIds": true,
"whitelistSiteDomains": true,
"blacklistSiteDomains": true,
"whitelistAppIds": true,
"blacklistAppIds": true,
"zipCodes": true,
"locationJson": true,
"trafficTypeNames": true
}
}
}
Get IO status list
GETGet list of IO statuses and their corresponding details.
| Status IDs | |
|---|---|
1 | Active. |
2 | Expired. |
3 | Deleted. |
- JSON
- TypeScript
{
"success": true,
"data": {
"ioStatusList": [
{
"name": "active",
"id": 1,
"label": "Active",
"order": 1
},
{
"name": "expired",
"id": 2,
"label": "Expired",
"order": 2
},
{
"name": "deleted",
"id": 3,
"label": "Deleted",
"order": 3
}
],
"totalRecords": 3,
"filteredRecords": 3
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
ioStatusList: {
name: string;
id: number;
label: string;
order: number
}[];
totalRecords: number;
filteredRecords: number
}
}
};
};
};
function getIOStatusTypeList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/io/status/list',
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of campaign budget types
GETGet a list of budget types for campaigns and insertion orders.
See the Budget-based and impression-based insertion order (IO) overview Help Center article for more information.
| Properties | |
|---|---|
1 Budget | Campaigns serve with set budget amount. |
2 Impression | Campaigns serve with set target for impressions to generate. |
- JSON
- TypeScript
{
"success": true,
"data": {
"totalRecords": 2,
"filteredRecords": 2,
"budgetTypeData": [
{
"id": 1,
"name": "budget",
"label": "Budget",
"order": 1
},
{
"id": 2,
"name": "impression",
"label": "Impression",
"order": 2
}
]
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
budgetTypeData: {
id: number;
name: string;
label: string;
order: number;
}[]
}
}
};
};
};
function getBudgetTypeList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/static/campaign/budget-type',
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get list of budget distribution methods
GETGet list of budget distribution methods.
| Status IDs | |
|---|---|
1 | Manual. |
2 | Auto. |
- JSON
- TypeScript
{
"success": true,
"data": {
"budgetDistributionMethodData": [
{
"name": "manual",
"id": 1,
"label": "Manual",
"order": 1
},
{
"name": "auto",
"id": 2,
"label": "Auto",
"order": 2
}
],
"totalRecords": 2,
"filteredRecords": 2
}
}
See TypeScript prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
budgetDistributionMethodData: {
name: string;
id: number;
label: string;
order: number;
}[];
totalRecords: number;
filteredRecords: number;
}
}
};
};
};
function getStaticBudgetDistributionList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/cmp/static/budget-distribution-method/list',
parameters: {
query?: {
budgetDistributionMethod?: `number`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}