Skip to main content

Inventory API

The Inventory API also allows you to create and manage advertising deals and Inventory groups.

IQM's advanced algorithm determines the most relevant ads to display to a user based on their activity and the content of a given page. Inventories provide Advertisers a way to organize collections or groups based on criteria such as ad format, placement type, targeting options, and other properties. These are the main entitites:

  • Private Marketplace (PMP) deals are a type of programmatic advertising arrangement that allows Advertisers to purchase ad Inventory through a private, invitation-only auction.
  • Programmatic Guaranteed (PG) deals are a direct negotiation between one publisher and one Advertiser that offer budget predictability and avoid auction volatility by ensuring a fixed amount of ad Inventory at a pre-negotiated price.
  • Inventory Groups are a collection or grouping of Inventory sources categorized by specific criteria such as ad format, placement type, targeting options, or other properties. There are four types of Inventory group: Open Exchange, PMP deals, Contextual Inventory, and CTV.

This page will cover common methods and endpoints associated with the Inventory API.

More Resources

Authentication

Use the following header parameters for all requests:

Headers
Authentication
string required
Authentication bearer token
See Authentication Guide
X-IAA-OW-ID
integer required
Organization Workspace ID Header

Get Inventory Details

Inventories are collections of all Inventory sources.

Use the following endpoints to get details for various aspects of Inventories, filtered by query parameters:

Query Parameters
keywords
string
Keywords to search Inventory list
countries
string
Filter by Country ID
categories
string
Filter by IAB Category ID
inventoryTypes
string
Filter by Inventory Group Type
creativeSizes
string
Filter by Creative Size ID
creativeTypes
string
Filter by Creative Type ID
creativeDurations
string
Filter by Creative Duration ID
trafficTypes
string
Filter by Traffic Type ID
deviceTypes
string
Filter by Device Type ID
exchanges
string
Filter by Exchange ID
videoPlayerSizes
string
Filter by Video Player Size ID
noOfEntries
integer
Number of entries returned per page
pageNo
integer
Page number of retrieved data
groupId
integer
Filter by Group ID

Get List of Inventories

GET

Get a list of Inventories available to user.

An Inventory id can be use to perform various actions in Inventory Management endpoints.

Response Properties
inventoryDataList
object
Inventory data details list
inventoryDataList object properties
id
integer
Inventory ID
name
string
Inventory name
publisher
string
Publisher
appId
string
The bundle ID (for app request) or domain (for web request)
inventoryType
string
Inventory type
impressions
integer
Impressions count
reach
integer
The number of unique individuals reached by an Inventory, does not count repeat views
videoPercentage
integer
Percentage of total ad impressions that are video-based
Response 200
{
"success": true,
"data": {
"inventoryDataList": [
{
"id": 3510,
"name": "Test Inv 1234",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Other App",
"impressions": 7397885,
"reach": 5257,
"videoPercentage": 100,
"displayPercentage": 0
},
{
"id": 4746,
"name": "Test Old TV 345",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Other App",
"impressions": 428882,
"reach": 31291,
"videoPercentage": 100,
"displayPercentage": 0
}
]
}
}

Get Inventory Distribution

GET

Get distributions of Inventory available for user across country and other parameters.

Response Properties
countries
object
List of countries and distribution values
trafficTypes
object
List of traffic types and distribution values
creativeTypes
object
List of Creative types and distribution values
deviceTypes
object
List of device types and distribution values
object properties
label
string
Label
value
integer
Value
Response 200
{
"success": true,
"data": {
"countries": [
{
"label": "United States",
"value": 90.58
},
{
"label": "Brazil",
"value": 1.23
},
{
"label": "Germany",
"value": 0.79
},
{
"label": "France",
"value": 0.75
},
{
"label": "United Kingdom",
"value": 0.62
}
],
"trafficTypes": [
{
"label": "App",
"value": 62.85
},
{
"label": "Web",
"value": 37.15
}
],
"creativeTypes": [
{
"label": "Video",
"value": 47.47
},
{
"label": "Banner",
"value": 40.96
},
{
"label": "Native",
"value": 6.38
},
{
"label": "Audio",
"value": 5.19
}
],
"deviceTypes": [
{
"label": "Mobile",
"value": 43.53
},
{
"label": "Connected TV",
"value": 37.69
},
{
"label": "Desktop",
"value": 15.08
},
{
"label": "Tablet",
"value": 3.57
},
{
"label": "Unknown",
"value": 0.13
}
]
}
}

Get Inventories Count

GET

Get count of unique Inventories, unique publishers, total number of impressions, and total reach of all Inventories.

Response Properties
reach
integer
The number of unique individuals reached by an Inventory, does not count repeat views
publishers
integer
Publishers count
impressions
object
Impressions count
inventories
object
Inventories count
Response 200
{
"success": true,
"data": {
"reach": 7983863253,
"publishers": 2010,
"impressions": 119273056646,
"inventories": 1387184
}
}
More Responses
Response 403
{
"success": false,
"errorObjects": [
{
"error": "User is not allowed to access provided Inventory group."
}
]
}

Get Inventory Group Types

GET

Get list of Inventory group types.

Response Properties
inventoryGroupTypeList
integer
Inventory group type list details
inventoryGroupTypeList object properties
name
string
Inventory group name
id
integer
Inventory group ID
order
integer
Order
Response 200
{
"success": true,
"data": {
"inventoryGroupTypeList": [
{
"name": "Open Exchange",
"id": 1,
"order": 1
},
{
"name": "CTV",
"id": 4,
"order": 2
},
{
"name": "PMP",
"id": 2,
"order": 3
},
{
"name": "Contextual",
"id": 3,
"order": 4
}
],
"totalRecords": 4,
"filteredRecords": 4
}
}

Get List of Blocked Inventories

GET

Blocklisted Inventories refer to digital media placements or websites that are deemed inappropriate (adult content, hate speech, misleading information) or of low quality (low engagement, poor user experience).

Query Parameters
searchField
string
Filter results by search field
inventoryIds
string
Filter Inventories by Inventory ID
noOfEntries
integer
Number of entries returned per page, default: 200
pageNo
integer
Page number of retrieved data, default: 1
Response Properties
globalBlockedInventoryData
object
Global blocked inventory data details
globalBlockedInventoryData object properties
id
integer
Inventory ID
name
string
Inventory name
publisher
string
Publisher
appId
string
The bundle ID (for app request) or domain (for web request)
inventoryType
string
Inventory type
impressions
integer
Impressions count
reach
integer
The number of unique individuals reached by an Inventory, does not count repeat views
videoPercentage
integer
Percentage of total ad impressions that are video-based
globalBlockedInventoryIds
integer
Global blocked inventory IDs
Response 200
{
"success": true,
"data": {
"globalBlockedInventoryData": [
{
"id": 35109,
"name": "Pluto TV - It's Free TV",
"publisher": "UNKNOWN",
"appId": "74519",
"inventoryType": "Other App",
"comment": "This is the comment for this Inventory",
"impressions": 0,
"uniques": 0,
"videoPercentage": 0,
"displayPercentage": 0
}
]
},
"globalBlockedInventoryIds": 1,
"filteredRecords": 13
}

Inventory Management

Optimize Inventories for specific Campaigns, download detailed Inventory files, or block Inventories.

Campaign Inventory Targeting

POST

Include or exclude Inventories for Campaign targeting.

Request Schema
campaignId
integer
Campaign ID to target for optimization
ids
string
Comma separated strings of Inventory IDs to include in or exclude from specified Campaign
isExcluded
integer
Include in Campaign: 0
Exclude from Campaign: 1
Response Properties
message
string
Success message
Request Sample
{
"campaignId": 168622,
"ids": "1,2,3,4",
"isExcluded": 0
}
Response 200
{
"statusCode": 200,
"responseObject": {
"message": "Inventories Included."
}
}

Block Inventories

POST

Inventories can be blocked at the account level by ID or search field.

Request Schema
inventoryIds
array of integers
Inventory IDs to block
searchField
string
Block Inventories by search field
Response Properties
data
string
Success message
Request Sample
{
"inventoryIds": [
0,
1,
5
]
}
Response 200
{
"success": true,
"data": "Inventories blocked successfully."
}

Unblock Inventories

POST

Remove inventories from the blocked list by ID or search field.

Request Schema
inventoryIds
array of integers
Inventory IDs to unblock
searchField
string
Unblock Inventories by search field
Response Properties
data
string
Success message
Request Sample
{
"inventoryIds": [
1,
2,
3
]
}
Response 200
{
"success": true,
"data": "Inventories unblocked successfully."
}

Add Comment for Blocked Inventory

POST

Add a comment to a blocked inventory item.

Request Schema
inventoryId
integer
The Inventory ID to add a comment to (minimum: 1)
comment
string
Comment text (required)
Response Properties
data
string
Success message
Request Sample
{
"inventoryId": 1234,
"comment": "Blocking due to brand safety concerns"
}
Response 200
{
"success": true,
"data": "Comment added successfully."
}

Block Inventory File

POST

Block Inventories by uploading a CSV file containing Inventory IDs. The CSV file should have domains and bundles as columns.

Query Parameters
blocklistFile
file
CSV file containing Inventory IDs to block
fileTypeId
integer
File type ID: 1 for CSV
Request Schema
blocklistFile
file
CSV file containing Inventory IDs to block

Download CSV Inventory List

POST

Get a CSV Inventory list based on desired filters.

Query Parameters
keywords
string
Filters by list of keywords
countries
string
Filter by Country ID
categories
string
Filter by IAB Category ID
inventoryTypes
string
Filter by Inventory Group Type
creativeSizes
string
Filters by Creative Size IDs
creativeDurations
string
Filters by Creative Duration ID
trafficTypes
string
Filters by Traffic Type ID
deviceTypes
string
Filters by Device Type ID
exchanges
string
Filters by Exchange IDs
videoPlayerSizes
string
Filters by Video Player Size ID
isCsvSearch
boolean
true if CSV file uploaded for query, otherwise false
fileType
string
File type to download: csv or xlsx
Response Properties
data
string
Download URL
Request Sample
{
"multipartFile": "string"
}
Response 200
{
"success": true,
"data": "https://iqm-ephemeral-2aca615e13f8-stage.s3.amazonaws.com/inventory/download/csv/Yash%20org%202_1720435555550.csv?response-expires-Amz-Credential"
}

Get Inventory Based on CSV File

POST

Get paginated list of Inventory based on provided CSV file.

Response Properties
matchedInventories
object
Matched inventories list
globalBlockedInventoryData object properties
id
integer
Inventory ID
name
string
Inventory name
publisher
string
Publisher
appId
string
The bundle ID (for app request) or domain (for web request)
inventoryType
string
Inventory type
impressions
integer
Impressions count
reach
integer
The number of unique individuals reached by an Inventory, does not count repeat views
videoPercentage
integer
Percentage of total ad impressions that are video-based
Request Sample
{
"domainsFile": "string"
}
Response 200
{
"success": true,
"data": {
"matchedInventories": [
{
"id": 3510,
"name": "Test Inv 1234",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Other App",
"impressions": 7397885,
"reach": 5257,
"videoPercentage": 100,
"displayPercentage": 0
},
{
"id": 4746,
"name": "Test Old TV 345",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Other App",
"impressions": 428882,
"reach": 31291,
"videoPercentage": 100,
"displayPercentage": 0
}
]
}
}

Get Distribution of Inventory Based on CSV File

POST

Get distribution of Inventory available to user across countries, Creative types, device types, traffic types, based on provided CSV file.

Response Properties
countries
object
List of countries and distribution values
trafficTypes
object
List of traffic types and distribution values
creativeTypes
object
List of Creative types and distribution values
deviceTypes
object
List of device types and distribution values
object properties
label
string
Label
value
integer
Value
Request Sample
{
"domainsFile": "string"
}
Response 200
{
"success": true,
"data": {
"countries": [
{
"label": "United States",
"value": 90.58
},
{
"label": "Brazil",
"value": 1.23
},
{
"label": "Germany",
"value": 0.79
},
{
"label": "France",
"value": 0.75
},
{
"label": "United Kingdom",
"value": 0.62
}
],
"trafficTypes": [
{
"label": "App",
"value": 62.85
},
{
"label": "Web",
"value": 37.15
}
],
"creativeTypes": [
{
"label": "Video",
"value": 47.47
},
{
"label": "Banner",
"value": 40.96
},
{
"label": "Native",
"value": 6.38
},
{
"label": "Audio",
"value": 5.19
}
],
"deviceTypes": [
{
"label": "Mobile",
"value": 43.53
},
{
"label": "Connected TV",
"value": 37.69
},
{
"label": "Desktop",
"value": 15.08
},
{
"label": "Tablet",
"value": 3.57
},
{
"label": "Unknown",
"value": 0.13
}
]
}
}

Get Inventory Count Based on CSV File

POST

Get Inventory count based on provided CSV file.

Response Properties
reach
integer
The number of unique individuals reached by an Inventory, does not count repeat views
publishers
integer
Publishers count
impressions
object
Impressions count
inventories
object
Inventories count
Request Sample
{
"domainsFile": "string"
}
Response 200
{
"success": true,
"data": {
"reach": 7983863253,
"publishers": 2010,
"impressions": 119273056646,
"inventories": 1387184
}
}

Fetch Contextual Inventories

GET

Retrieve a paginated list of contextual inventories.

Query Parameters
searchField
string
Search filter (default: empty string)
noOfEntries
integer
Number of entries per page (default: 10)
pageNo
integer
Page number (default: 1)
Response Properties
data
object
Paginated list of contextual inventories
data.data
array
Array of contextual inventory objects
data.data[].id
integer
Contextual inventory ID
data.data[].inventory
string
Inventory name or URL
data.data[].contextualType
integer
Contextual type identifier
data.totalRecords
integer
Total number of records
data.filteredRecords
integer
Number of filtered records
Response 200
{
"success": true,
"data": {
"data": [
{
"id": 1,
"inventory": "example.com",
"contextualType": 2
}
],
"totalRecords": 50,
"filteredRecords": 10
}
}

Add Contextual Inventories

POST

Create new contextual inventories by providing a group name with associated keywords and/or URLs.

Request Schema
groupName
string
Name for the contextual inventory group
keywords
array of strings
List of keywords to associate
urls
array of strings
List of URLs to associate
Response Properties
data
string
Success message
Request Sample
{
"groupName": "Sports Contextual",
"keywords": ["basketball", "football"],
"urls": ["https://espn.com", "https://sports.yahoo.com"]
}
Response 200
{
"success": true,
"data": "Contextual inventories added successfully."
}

Remove Contextual Inventories

DELETE

Permanently delete contextual inventories from the user's global contextual inventory pool.

Request Schema
contextualInventoryIds
array of integers
IDs of contextual inventories to remove
Response Properties
data
string
Success message
Request Sample
{
"contextualInventoryIds": [101, 102, 103]
}
Response 200
{
"success": true,
"data": "Contextual inventories removed successfully."
}

Add Contextual Inventories to Inventory Groups

POST

Associate contextual inventories with one or more inventory groups. The authenticated user must be authorized to access all provided group IDs.

Request Schema
groupIds
array of integers
Inventory Group IDs to add contextual inventories to
contextualIds
array of integers
Contextual inventory IDs to associate
Response Properties
data
string
Success message
Request Sample
{
"groupIds": [
170800,
170801
],
"contextualIds": [
42386,
42387
]
}
Response 200
{
"success": true,
"data": "Contextual Inventories added to groups successfully."
}
Response 403
{
"success": false,
"errorObjects": [
{
"error": "Unauthorized"
}
]
}

CTV Inventories

Connected TV (CTV) Inventories are app-based inventory sources available on smart TVs and streaming devices.

Get CTV Inventory List

GET

Get a paginated list of CTV inventories available to the authenticated user.

Query Parameters
searchField
string
Search term matching publisher name or inventory name
countries
string
Filter by Country ID
categories
string
Filter by IAB Category
creativeTypes
string
Filter by Creative Type ID
creativeDurations
string
Filter by Creative Duration ID (video/audio)
exchanges
string
Filter by Exchange ID
videoPlayerSizes
string
Filter by Video Player Size ID
noOfEntries
integer
Number of entries per page (default: 10)
pageNo
integer
Page number (default: 1)
Response Properties
inventoryDataList
array
List of CTV inventory objects
inventoryDataList object properties
id
integer
Inventory ID
name
string
Inventory name
publisherName
string
Publisher name
appId
string
Bundle ID (app) or domain (web)
inventoryType
string
Inventory type (e.g., Android App)
impressions
integer
Impressions count
reach
integer
Unique individuals reached
videoPercentage
number
Percentage of video impressions
displayPercentage
number
Percentage of display impressions
inventoryLogoUrl
string
URL of the inventory logo
ctv
boolean
Indicates CTV inventory: true
totalRecords
integer
Total number of records
filteredRecords
integer
Number of records matching the current filter
Response 200
{
"success": true,
"data": {
"filteredRecords": 2,
"totalRecords": 100,
"inventoryDataList": [
{
"id": 10035129,
"name": "HISTORY Vault",
"publisherName": "A&E (A+E Networks)",
"appId": "com.svod",
"inventoryType": "Android App",
"impressions": 120,
"reach": 180,
"videoPercentage": 100.0,
"displayPercentage": 0.0,
"inventoryLogoUrl": "https://cdn.com/adhoc/ctv-logos/1003514129",
"ctv": true
},
{
"id": 10014132,
"name": "FYI",
"publisherName": "ATC",
"appId": "com.watch",
"inventoryType": "Android App",
"impressions": 1100,
"reach": 1079,
"videoPercentage": 100.0,
"displayPercentage": 0.0,
"inventoryLogoUrl": "https://cdn.com/adhoc/ctv-logos/1003514132",
"ctv": true
}
]
}
}
Response 403
{
"success": false,
"errorObjects": [
{
"error": "User is not allowed to access provided inventory group."
}
]
}

Get CTV Inventories Count

GET

Get the count of unique CTV inventories, total impressions, and total reach available to the authenticated user.

Query Parameters
searchField
string
Search term matching publisher name or inventory name
countries
string
Filter by Country ID
categories
string
Filter by IAB Category ID
creativeTypes
string
Filter by Creative Type ID
creativeDurations
string
Filter by Creative Duration ID (video/audio)
exchanges
string
Filter by Exchange ID
videoPlayerSizes
string
Filter by Video Player Size ID
Response Properties
reach
integer
Total unique individuals reached
impressions
integer
Total impressions count
inventories
integer
Count of unique CTV inventories
Response 200
{
"success": true,
"data": {
"reach": 7983253,
"impressions": 119256646,
"inventories": 13870
}
}

Get CTV Inventories Distribution

GET

Get the distribution of CTV inventories across countries, creative types, and traffic types.

Query Parameters
searchField
string
Search term matching publisher name or inventory name
countries
string
Filter by Country ID
categories
string
Filter by IAB Category ID
creativeTypes
string
Filter by Creative Type ID
creativeDurations
string
Filter by Creative Duration ID (video/audio)
exchanges
string
Filter by Exchange ID
videoPlayerSizes
string
Filter by Video Player Size ID
Response Properties
trafficTypes
object
Distribution across traffic types
countries
object
Distribution across countries
creativeTypes
object
Distribution across creative types
object properties
label
string
Label
value
number
Percentage value
Response 200
{
"success": true,
"data": {
"trafficTypes": [
{ "label": "App", "value": 100.0 },
{ "label": "Web", "value": 0.0 }
],
"countries": [
{ "label": "United States", "value": 99.6 },
{ "label": "Dominican Republic", "value": 0.12 },
{ "label": "Canada", "value": 0.11 },
{ "label": "United Kingdom", "value": 0.02 },
{ "label": "Brazil", "value": 0.02 }
],
"creativeTypes": [
{ "label": "Video", "value": 99.57 },
{ "label": "Audio", "value": 0.42 },
{ "label": "Banner", "value": 0.02 },
{ "label": "Native", "value": 0.0 }
]
}
}

Download CTV Inventory List

POST

Download a CSV or XLSX file of the CTV inventory list based on requested filters.

Query Parameters
searchField
string
Search term matching publisher name or inventory name
countries
string
Filter by Country ID
categories
string
Filter by IAB Category ID
creativeTypes
string
Filter by Creative Type ID
creativeDurations
string
Filter by Creative Duration ID
exchanges
string
Filter by Exchange ID
videoPlayerSizes
string
Filter by Video Player Size ID
fileType
string required
Output file format: csv or xlsx
Response Properties
data
string
Download URL for the generated file
Response 200
{
"success": true,
"data": "https://sample-download-url.com/CTVInventories_ctv.csv"
}

Inventory Groups

Get List of Inventory Groups

GET

Get a list of Inventory groups based on various filters and parameters.

An Inventory group id can be use to perform various actions in Inventory Group Management endpoints.

Query Parameters
groupFilterId
integer
Filters groups list. Supported values:
All Groups [default]: 0
Share by Admin: 1
Own Groups: 2
groupTypeIds
string
Filters groups list. Supported values:
Open Exchange: 1
PMP: 2
Contextual: 3
CTV: 4
ids
string
Comma separated IDs
provideAccountLevelExcludedGroup
boolean
Flag to indicate whether to include account-level excluded group in response or not, default: false
includeStatistics
boolean
Flag to indicate whether to include statistics in response or not, default: true
excludeEmptyGroups
boolean
Flag to indicate whether to include empty groups in response or not, default: false
searchField
string
Filter results by search field
pageSize
integer
Number of entries returned per page
pageNo
integer
Page number of retrieved data
owId
integer
Organization Workspace ID
sortBy
string
Sort entries by ascending (+) or descending (-)
Response Properties
inventoryGroupList
integer
Inventory group type list details
inventoryGroupList object properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
Response 200
{
"success": true,
"data": {
"totalRecords": 371,
"filteredRecords": 6,
"inventoryGroupList": [
{
"groupTypeId": 1,
"created": 1720032375,
"modifiedDate": "2024-07-03T13:18:26.935+0000",
"owId": 201427,
"impressions": 0,
"isAccountLevelExcluded": null,
"campaignWhitelistCount": 0,
"campaignBlacklistCount": 0,
"whiteListedCampaignIds": [
503885,
486112,
478890
],
"blackListedCampaignIds": [],
"publishers": 0,
"sharedCount": 0,
"uniques": 0,
"reach": 0,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 0,
"id": 176178,
"name": "Inventory Group - Open exchange - 3 campaign",
"isShared": false
}
]
}
}

Get List of Shared Group Customer Details

GET
Path Parameter
groupIdGroup ID
Response Properties
owId
integer
Organization workspace ID
organizationName
string
Organization name
status
string
Customer status
ownerUserEmail
string
Owner user email
logoUrl
string
Organization logo URL
campaignCount
integer
Total campaign count
runningCampaignCount
integer
Running campaign count
Response 200
{
"success": true,
"data": [
{
"owId": 201427,
"organizationName": "Acme Advertising",
"status": "active",
"ownerUserEmail": "owner@example.com",
"logoUrl": "https://example.com/logo.png",
"campaignCount": 5,
"runningCampaignCount": 2
}
]
}

Get List of Inventory Groups Statistics

GET
Response Properties
totalInventoryGroups
integer
Inventory groups count
includedGroups
integer
Included groups count
excludedGroups
integer
Excluded groups count
unUsedGroups
integer
Unused groups count
Response 200
{
"success": true,
"data": {
"totalInventoryGroups": 371,
"includedGroups": 296,
"excludedGroups": 92,
"unUsedGroups": 75
}
}

Get List of PMP Deals In an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
noOfEntriesNumber of entries returned per page, default: 50
pageNoPage number of retrieved data
sortBySorts by ascending (+) or descending (-)
Response Properties
pmpDealData
integer
PMP deals list details
pmpDealData object properties
id
integer
PMP deal ID
dealId
string
Deal ID
dealName
string
PMP deal name
description
string
Deal description
cpm
integer
Cost per mille
dealTypeId
integer
Deal Type ID
creativeTypes
array of string
List of Creative types
exchanges
array of strings
List of Exchanges
active
boolean
Indicates that deal is active: true
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
string
Modified date
applicableTo
array of integers
Customer OW IDs to whom this deal is assigned and have access rights
userName
string
User name
isPublic
boolean
Indicates that this deal is shared, not private: true
Response 200
{
"success": true,
"data": {
"pmpDealData": [
{
"id": 345,
"dealId": "070621-Test Deal-MS@15",
"dealName": "0670621 Test Deal 15",
"description": "test desc",
"cpm": 2,
"dealTypeId": 2,
"creativeTypes": [
"HTML",
"Audio"
],
"exchanges": [
"Rubicon"
],
"active": true,
"created": 1623076958,
"modifiedDate": "2021-06-08T11:27:30.549+0000",
"applicableTo": [],
"userName": null,
"isPublic": true
}
],
"totalRecords": 6,
"filteredRecords": 6
}
}

Get CSV List of PMP Deals In an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
sortOrderSorts by ascending (asc) or, default: descending (desc)
sortBySort by parameter, default: created

See TypeScript Prerequisites for usage.

import {
getInstance
} from "prerequisites"

const axios = getInstance();

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

function generateGroupPMPDealsFile(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/inv/group/{groupId}/pmp-deals/csv',
params: {
path: {
groupId: `number`
},
query: {
searchField?: `string`,
sortOrder?: `string`,
sortBy?: `string`
}
}
};

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

Get List of Open Exchange Inventories In an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
noOfEntriesNumber of entries returned per page, default: 50
pageNoPage number of retrieved data
Response Properties
openExchangeInventoryData
object
Open exchange Inventory data details list
openExchangeInventoryData object properties
id
integer
Inventory ID
name
string
Inventory name
publisher
string
Publisher
appId
string
The bundle ID (for app request) or domain (for web request)
inventoryType
string
Inventory type
impressions
integer
Impressions count
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
videoPercentage
integer
Percentage of total ad impressions that are video-based
Response 200
{
"success": true,
"data": {
"totalRecords": 3,
"filteredRecords": 3,
"openExchangeInventoryData": [
{
"id": 52982,
"name": "gazeta.pl",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Site",
"impressions": 25738,
"reach": 2128,
"videoPercentage": 18.29979,
"displayPercentage": 77.989743
},
{
"id": 52983,
"name": "protopage.com",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Site",
"impressions": 4315,
"reach": 322,
"videoPercentage": 0,
"displayPercentage": 100
},
{
"id": 52986,
"name": "gwiazdy.wp.pl",
"publisher": "UNKNOWN",
"appId": "INVENTORY",
"inventoryType": "Site",
"impressions": 516,
"reach": 58,
"videoPercentage": 4.651163,
"displayPercentage": 87.596899
}
],
"uniqueRecords": 3
}
}

Get Distributions of Open Exchange Inventories In an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
Response Properties
countries
object
List of countries and distribution values
trafficTypes
object
List of traffic types and distribution values
creativeTypes
object
List of Creative types and distribution values
deviceTypes
object
List of device types and distribution values
object properties
label
string
Label
value
integer
Value
Response 200
{
"success": true,
"data": {
"trafficTypes": [
{
"label": "Web",
"value": 100
}
],
"countries": [
{
"label": "United States",
"value": 98.86
},
{
"label": "Netherlands",
"value": 0.98
},
{
"label": "Canada",
"value": 0.08
},
{
"label": "Ecuador",
"value": 0.03
},
{
"label": "Virgin Islands, U.S.",
"value": 0.03
}
],
"deviceTypes": [
{
"label": "Desktop",
"value": 87.68
},
{
"label": "Mobile",
"value": 9.27
},
{
"label": "Tablet",
"value": 3.06
}
],
"creativeTypes": [
{
"label": "Banner",
"value": 81.26
},
{
"label": "Video",
"value": 15.49
},
{
"label": "Native",
"value": 3.25
}
]
}
}

Get Count of Open Exchange Inventories In an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
Response Properties
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
publishers
integer
Publishers count
impressions
object
Impressions count
inventories
object
Inventories count
Response 200
{
"success": true,
"data": {
"inventories": 3,
"reach": 2689,
"publishers": 1,
"impressions": 30569
}
}

Get List of Contextual Inventories For an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
noOfEntriesNumber of entries returned per page, default: 50
pageNoPage number of retrieved data
Response Properties
id
integer
Inventory ID
inventory
string
Inventory name
contextualType
integer
Contextual type ID
1: keyword
2: URL
Response 200
{
"success": true,
"data": {
"data": [
{
"id": 42486,
"inventory": "law business",
"contextualType": 1
}
],
"totalRecords": 2,
"filteredRecords": 1
}
}

Get Count of Contextual Inventories For an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name
Response Properties
contextualUrlCount
integer
Contextual URL count
contextualKeywordCount
integer
Contextual keyword count
Response 200
{
"success": true,
"data": {
"contextualUrlCount": 0,
"contextualKeywordCount": 1
}
}

Get CSV File of Contextual Inventories For an Inventory Group

GET
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldFilter Inventory by group name

See TypeScript Prerequisites for usage.

import {
getInstance
} from "prerequisites"

const axios = getInstance();

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

function generateGroupContextualInventoriesFile(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/inv/group/{groupId}/contextual/inventories/csv',
params: {
path: {
groupId: `number`
},
query: {
searchField?: `string`,
}
}
};

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

Contextual Inventory

GET
GET

Get recommended keywords or autocompleted keywords.

Query Parameters
keyword
string
Suggestion or Recommendation will be made based on this keyword
Response Properties
data
array of strings
Contextual keywords list
Response 200
{
"success": true,
"data": [
"sport",
"business",
"play"
]
}

Get Inventory Groups Count

GET

Get the total count of inventory groups for the authenticated user.

Response Properties
data
object
Count data
data.inventoryGroupsCount
integer
Total number of inventory groups
Response 200
{
"success": true,
"data": {
"inventoryGroupsCount": 26
}
}

Download Open Exchange Inventories for Group

POST

Download open exchange inventory details for a specific group as a file.

Path Parameters
groupId
integer
Inventory Group ID (required)
Query Parameters
fileType
string
File type for download (required), e.g., csv
searchField
string
Search filter for inventories
Response Properties
data
string
S3 download URL for the generated file
Response 200
{
"success": true,
"data": "https://s3.amazonaws.com/bucket/inventories-export.csv"
}

Get CTV Inventories for an Inventory Group

GET

Get a paginated list of CTV inventories belonging to a specific inventory group.

Path Parameter
groupId
integer required
Group ID
Query Parameters
searchField
string
Filter inventories by name
noOfEntries
integer
Number of entries per page (default: 50)
pageNo
integer
Page number (default: 0)
Response Properties
inventoryDataList
array
List of CTV inventory objects
inventoryDataList object properties
id
integer
Inventory ID
name
string
Inventory name
publisherName
string
Publisher name
appId
string
Bundle ID (app) or domain (web)
inventoryType
string
Inventory type
impressions
integer
Impressions count
reach
integer
Unique individuals reached
videoPercentage
number
Percentage of video impressions
displayPercentage
number
Percentage of display impressions
inventoryLogoUrl
string
URL of the inventory logo
ctv
boolean
Indicates CTV inventory: true
totalRecords
integer
Total number of records
filteredRecords
integer
Number of records matching the current filter
Response 200
{
"success": true,
"data": {
"totalRecords": 24397208,
"filteredRecords": 2,
"inventoryDataList": [
{
"id": 3408578,
"name": "Tubi (Roku)",
"publisherName": "Roku",
"appId": "41468",
"inventoryType": "Other App",
"impressions": 3928807709,
"reach": 36173425,
"videoPercentage": 99.999869,
"displayPercentage": 0.0,
"inventoryLogoUrl": "https://iqm-data-lake-stage.s3.us-east-1.amazonaws.com/adhoc/ctv-logos/3408578",
"ctv": true
},
{
"id": 68028,
"name": "NewsON (Android TV)",
"publisherName": "NewsON",
"appId": "com.newson.vinson",
"inventoryType": "Android App",
"impressions": 962565737,
"reach": 859260,
"videoPercentage": 100.0,
"displayPercentage": 0.0,
"inventoryLogoUrl": "https://iqm-data-lake-stage.s3.us-east-1.amazonaws.com/adhoc/ctv-logos/68028",
"ctv": true
}
]
}
}

Get CTV Inventories Statistics for an Inventory Group

GET

Get inventory count, total reach, and total impressions for CTV inventories in a specific inventory group.

Path Parameter
groupId
integer required
Group ID
Response Properties
inventories
integer
Count of CTV inventories in the group
reach
integer
Total unique individuals reached
impressions
integer
Total impressions count
Response 200
{
"success": true,
"data": {
"inventories": 3,
"reach": 37657018,
"impressions": 5031212348
}
}

Get CTV Inventories Distributions for an Inventory Group

GET

Get the distribution of CTV inventories in a specific inventory group across countries, device types, traffic types, and creative types.

Path Parameter
groupId
integer required
Group ID
Response Properties
countries
object
Distribution across countries
deviceTypes
object
Distribution across device types
trafficTypes
object
Distribution across traffic types
creativeTypes
object
Distribution across creative types
object properties
label
string
Label
value
number
Percentage value
Response 200
{
"success": true,
"data": {
"countries": [
{ "label": "United States", "value": 99.99 },
{ "label": "Canada", "value": 0.01 },
{ "label": "Mexico", "value": 0.0 }
],
"deviceTypes": [
{ "label": "Connected TV", "value": 99.96 },
{ "label": "Mobile", "value": 0.04 },
{ "label": "Tablet", "value": 0.0 },
{ "label": "Desktop", "value": 0.0 }
],
"trafficTypes": [
{ "label": "App", "value": 100.0 }
],
"creativeTypes": [
{ "label": "Video", "value": 100.0 },
{ "label": "Audio", "value": 0.0 }
]
}
}

Download CTV Inventories for an Inventory Group

POST

Download CTV inventory details for a specific inventory group as a CSV or XLSX file.

Path Parameter
groupId
integer required
Group ID
Query Parameters
fileType
string required
File type for download: csv or xlsx
searchField
string
Filter inventories by name
Response Properties
data
string
S3 download URL for the generated file
Response 200
{
"success": true,
"data": "https://iqm-ephemeral-2ach617e13f8-stage.s3.amazonaws.com/inventory/download/csv/Yash%20org%202_1720435555550.csv?response-expires-Amz-Credential"
}

Inventory Group Management

Update details or delete group Inventories.

Create a New Inventory Group

POST

Create an Open Exchange Inventory Group with inventoryIds
Request Schema
groupName
integer
Desired name for group
groupTypeId
integer
Group type. Supported values:
Open Exchange: 1
PMP: 2
Contextual: 3
inventoryIds
array of integers
Inventory IDs to include in group
Response Properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
Request Sample
{
"groupName": "Inventory Group - Open exchange",
"groupTypeId": 1,
"inventoryIds": [
35132,
4107192
]
}
Response 200
{
"success": true,
"data": {
"groupTypeId": 1,
"created": 1719836234,
"modifiedDate": "2024-07-01T12:17:20.295+0000",
"owId": 201427,
"impressions": 2334725782,
"isAccountLevelExcluded": false,
"campaignWhitelistCount": 0,
"campaignBlacklistCount": 0,
"whiteListedCampaignIds": [],
"blackListedCampaignIds": [],
"publishers": 56,
"sharedCount": 0,
"uniques": 0,
"reach": 154976228,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 2,
"id": 174594,
"name": "Inventory Group - Open exchange",
"isShared": false
}
}

Create an Open Exchange Inventory Group with Search Filters
Request Schema
groupName
integer
Desired name for group
groupTypeId
integer
Group type. Supported values:
Open Exchange: 1
PMP: 2
Contextual: 3
excludedInventoryIds
array of integers
Inventory IDs to exclude from group
countries
array of integers
Country IDs
categories
array of strings
IAB Categories to include in group
inventoryTypes
array of integers
Inventory Type ID
creativeTypes
array of integers
Creative Type IDs
trafficTypes
array of integers
Traffic Type IDs
deviceTypes
array of integers
Device Type IDs
exchanges
array of integers
Exchange IDs
Response Properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
Request Sample
{
"groupTypeId": 1,
"groupName": "Inventory Group - Open exchange - search",
"excludedInventoryIds": [],
"countries": [
30100001
],
"categories": [
"IAB1-1",
"IAB1-2",
"IAB1-3",
"IAB1-4",
"IAB1-5",
"IAB1-6"
],
"inventoryTypes": [
2,
3
],
"creativeTypes": [
1
],
"trafficTypes": [
11
],
"deviceTypes": [
20300001
],
"exchanges": [
71,
75,
41,
80,
39,
47,
76,
1,
78,
69,
88,
19,
73
]
}
Response 200
{
"success": true,
"data": {
"groupTypeId": 1,
"created": 1720030003,
"modifiedDate": "2024-07-03T18:06:45.627+0000",
"owId": 201427,
"impressions": 5298817,
"isAccountLevelExcluded": false,
"campaignWhitelistCount": 0,
"campaignBlacklistCount": 0,
"whiteListedCampaignIds": [],
"blackListedCampaignIds": [],
"publishers": 9,
"sharedCount": 0,
"uniques": 0,
"reach": 458855,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 24,
"id": 176177,
"name": "Inventory Group - Open exchange - search",
"isShared": false
}
}

Create a PMP Inventory Group with dealIds
Request Schema
groupName
integer
Desired name for group
groupTypeId
integer
Group type. Supported values:
Open Exchange: 1
PMP: 2
Contextual: 3
dealIds
array of integers
PMP Deal IDs to include in group
Response Properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
Request Sample
{
"groupName": "Inventory Group - PMP",
"groupTypeId": 2,
"dealIds": [
204
]
}
Response 200
{
"success": true,
"data": {
"groupTypeId": 2,
"created": 1719836290,
"modifiedDate": "2024-07-01T12:18:10.397+0000",
"owId": 201427,
"impressions": 0,
"isAccountLevelExcluded": false,
"campaignWhitelistCount": 0,
"campaignBlacklistCount": 0,
"whiteListedCampaignIds": [],
"blackListedCampaignIds": [],
"publishers": 0,
"sharedCount": 0,
"uniques": 0,
"reach": 0,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 1,
"id": 174599,
"name": "Inventory Group - PMP",
"isShared": false
}
}

Create a PMP Inventory Group with Keywords and/or URLs
Request Schema
groupName
integer
Desired name for group
groupTypeId
integer
Group type. Supported values:
Open Exchange: 1
PMP: 2
Contextual: 3
contextualUrls
array of strings
Contextual URLs to include in group
contextualKeywords
array of strings
Contextual keywords to include in group
Response Properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
Request Sample
{
"groupName": "Inventory Group - PMP",
"groupTypeId": 2,
"contextualKeywords": [
"mcd",
"coke",
"cola"
],
"contextualUrls": [
"https://mcdindia.com/",
"https://www.coca-colacompany.com/"
]
}
Response 200
{
"success": true,
"data": {
"groupTypeId": 3,
"created": 1719836633,
"modifiedDate": "2024-07-01T12:23:52.829+0000",
"owId": 201427,
"impressions": 0,
"isAccountLevelExcluded": false,
"campaignWhitelistCount": 0,
"campaignBlacklistCount": 0,
"whiteListedCampaignIds": [],
"blackListedCampaignIds": [],
"publishers": 0,
"sharedCount": 0,
"uniques": 0,
"reach": 0,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 5,
"id": 174880,
"name": "Inventory Group - Contextual keywords and URLs",
"isShared": false
}
}


Add or Remove Mappings to an Inventory Group

POST
POST

Add or Remove Inventories (open exchange, private deals, Contextual) to a group or multiple groups.

Inventories can be added/removed by filtering for results, inputting dealIds, contextual details, or inventoryIds.

Add/Remove by Filter
Request Schema
groupIds
array of integers
Group IDs to add/remove mappings to/from
keywords
array of strings
Filters by keyword
countries
array of integers
Filters by Country IDs
categories
array of strings
Filter by IAB Category
inventoryTypes
array of integers
Filter by Inventory Types
creativeSizes
array of strings
Filter by Creative Size IDs
creativeTypes
array of integers
Filter by Creative Type IDs
trafficTypes
array of integers
Filter by Traffic Type IDs
deviceTypes
array of integers
Filter by Device Type IDs
videoPlayerSizes
array of integers
Filter by Video Player Size IDs
isAllInventories
boolean
Indicates Inventory IDs will be retrieved from the database instead of the UI: true

Add/Remove by Deal ID
Request Schema
groupIds
array of integers
Group IDs to add/remove mappings to/from
dealIds
array of integers
Deal IDs to add/remove to/from group

Add/Remove by Contextual Inventories
Request Schema
groupIds
array of integers
Group IDs to add/remove mappings to/from
contextualKeywords
array of strings
Names of Contextual Inventories
contextualUrls
array of strings
URLs of Contextual Inventories

Add/Remove by Inventory ID
Request Schema
groupIds
array of integers
Group IDs to add/remove mappings to/from
inventoryIds
array of integers
Inventory IDs to add/remove to/from group

Response Properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count after add/remove mapping
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
{
"groupIds": [
100462
],
"keywords": [
"foxnews",
"CNN",
"com.sleeeeepfly.knife.io"
],
"countries": [
30100001,
30100002
],
"categories": [
"IAB1",
"IAB14"
],
"inventoryTypes": [
1,
2,
3
],
"creativeSizes": [
"574x323",
"288x162"
],
"creativeTypes": [
1,
2,
3
],
"creativeDurations": [
1,
2,
-1
],
"trafficTypes": [
11,
12
],
"deviceTypes": [
20300001
],
"exchanges": [
47,
48
],
"videoPlayerSizes": [
1,
3,
4,
-1
],
"isAllInventories": true
}
{
"groupIds": [
100462,
100463
],
"dealIds": [
10
]
}
{
"groupIds": [
100462,
100463
],
"contextualKeywords": [
"testing1",
"testing2"
],
"contextualUrls": [
"http://google.com",
"http://google1.com"
]
}
{
"groupIds": [
100462,
100463
],
"inventoryIds": [
200462,
200463
]
}
Response 200
{
"success": true,
"data": [
{
"groupTypeId": 1,
"created": 1719983099,
"modifiedDate": "2024-07-03T07:35:45.800+0000",
"owId": 202017,
"impressions": 7927783118,
"isAccountLevelExcluded": false,
"whiteListedCampaignIds": null,
"blackListedCampaignIds": null,
"publishers": 59,
"sharedCount": 1,
"uniques": 0,
"reach": 558137549,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 2,
"id": 176130,
"name": "Open Exchange Inventories Group",
"isShared": true
}
]
}

Add or Remove Customers From a Shared Inventory Group

PATCH

Add or remove Customers from an Inventory group by group ID with the following endpoint:

Path Parameters
groupId
integer
Group ID
Request Schema
addOwIds
array of integers
Organization Workspace IDs to add to Inventory group
removeOwIds
array of integers
Organization Workspace IDs to remove from Inventory group
Response Properties
data
array of strings
Success message
Request Sample
{
"addOWIds": [
200425,
200495,
200496
],
"removeOWIds": [
200929,
200931,
200963,
200964
]
}
{
"success": true,
"data": "Your changes have been successfully saved."
}

Edit Inventory Group

PATCH

Edit an Inventory group.

Path Parameters
groupId
integer
Group ID
Request Schema
groupName
string
Name of group
Response Properties
groupTypeId
integer
Inventory Group Type ID
created
integer
Unix epoch creation date, in milliseconds
modifiedDate
integer
Modified date
owID
integer
Organization Workspace ID
impressions
integer
Impressions count
isAccountLevelExcluded
boolean
Indicates that account-level excluded group is included
whiteListedCampaignIds
array of integers
Campaign IDs where this Inventory group is whitelisted
blackListedCampaignIds
array of integers
Campaign IDs where this Inventory group is blacklisted
publishers
integer
Publishers count
uniques
integer
Total number of unique impressions of the Inventories in a group
reach
integer
The number of unique individuals reached by an Inventory group, does not count repeat views
deals
integer
Deals count
contextualInventories
integer
Contextual Inventories count
count
integer
Inventories count
id
integer
Inventory group ID
name
integer
Inventory group name
isShared
boolean
Indicates the Inventory group is shared from the Workspace: true
Request Sample
{
"groupName": "Open exchange Group - updated"
}
Response 200
{
"success": true,
"data": {
"groupTypeId": null,
"created": null,
"modifiedDate": null,
"owId": 0,
"impressions": 0,
"isAccountLevelExcluded": null,
"campaignWhitelistCount": 0,
"campaignBlacklistCount": 0,
"whiteListedCampaignIds": null,
"blackListedCampaignIds": null,
"publishers": 0,
"sharedCount": 0,
"uniques": 0,
"reach": 0,
"inventories": 0,
"deals": 0,
"contextualInventories": 0,
"count": 0,
"id": 176168,
"name": "Open exchange Group - updated",
"isShared": false
}
}
More Responses
Response 403
{
"success": false,
"errorObjects": [
{
"error": "Forbidden!"
}
]
}
Response 422
{
"success": false,
"errorObjects": [
{
"error": "Inventory group name can not have more than 255 characters.",
"field": "groupName"
}
]
}
Response 500
{
"success": false,
"errorObjects": [
{
"error": "server encountered an error !"
}
]
}

Delete Inventory Group

DELETE

Delete an existing Inventory group.

Path Parameters
groupId
integer
Group ID
Response Properties
data
array of strings
Success message
Response 200
{
"success": true,
"data": "Inventory group deleted successfully."
}

Add Contextual Inventories to Group

POST

Add contextual inventories to one or more inventory groups.

Request Schema
groupIds
array of integers
Group IDs to add contextual inventories to (required)
contextualIds
array of integers
Contextual inventory IDs to add (required)
Response Properties
data
string
Success message
Request Body
{
"groupIds": [1, 2, 3],
"contextualIds": [101, 102]
}
Response 200
{
"success": true,
"data": "Contextual Inventories added to group successfully."
}

Remove Contextual Inventories from Group

DELETE

Remove contextual inventories from an inventory group.

Request Schema
groupId
integer
Group ID to remove contextual inventories from
contextualIds
array of integers
Contextual inventory IDs to remove (required)
Response Properties
data
string
Success message
Request Body
{
"groupId": 1,
"contextualIds": [101, 102]
}
Response 200
{
"success": true,
"data": "Contextual Inventories removed from group successfully."
}

Validate Inventory Group

POST

Validate whether the authenticated user is authorized to access the specified inventory groups.

Request Schema
groupIds
array of integers
Group IDs to validate
Response Properties
data
boolean
Whether the user is authorized for the specified groups
Request Body
{
"groupIds": [1, 2, 3]
}
Response 200
{
"success": true,
"data": true
}

Deals Details

List of Deals

POST

Get a list of deals based on desired filters available for user.

You can also get more detailed lists of PMP Deals or PG Deals, in their respective list endpoints.

Request Schema
deal
object
Contains key-value pairs of PG/PMP and an array of their IDs to filter results by
owIds
array of integers
Organization Workspace IDs
dealStatus
array of strings
Deal statuses, allowed values: Active, Inactive
searchField
string
Filter deals by entity specified with searchBy
searchBy
array of strings
Search by dealId, dealName, or exchangeName
pageNo
integer
Page number of retrieved data, default: 1
noOfEntries
integer
Number of deals to retrieve per page, default: 50
sortBy
string
Sort entries
Response Properties
id
integer
Deal ID
dealId
string
Deal identifier
dealStatus
string
Deal status
dealName
string
Deal name
exchangeName
string
Exchange name
dealType
string
Deal type, either PG or PMP
campaignCount
integer
Number of campaigns associated with the deal
Request Sample
{
"deal": {
"PG": [
3
],
"PMP": [
378
]
},
"owIds": [
201427
],
"dealStatus": [
"Active"
],
"searchField": "Smaato ",
"searchBy": [
"dealId",
"dealName",
"exchangeName"
],
"pageNo": 1,
"noOfEntries": 50,
"sortBy": "dealId"
}
Response 200
{
"success": true,
"data": {
"totalRecords": 2511,
"filteredRecords": 2,
"dealList": [
{
"id": 3,
"dealId": "PM-Ny3ey3-2",
"dealStatus": "Active",
"dealName": "Test deal IV91",
"exchangeName": "Smaato",
"dealType": "PG",
"campaignCount": 3
},
{
"id": 378,
"dealId": "gp8n",
"dealStatus": "Active",
"dealName": "Smaato CTV Deal",
"exchangeName": "Smaato",
"dealType": "PMP",
"campaignCount": 22
}
]
}
}

Get List of Deal Types

GET
Response Properties
dealTypeList
object
Deal type details list
dealTypeList object properties
displayName
integer
Display name
name
string
Name
id
string
ID
order
string
Order
Response 200
{
"success": true,
"data": {
"totalRecords": 2,
"filteredRecords": 2,
"dealTypeList": [
{
"displayName": "PMP Deal",
"name": "PMP deal",
"id": 1,
"order": 1
},
{
"displayName": "PG Deal",
"name": "PG deal",
"id": 2,
"order": 2
}
]
}
}

Get List of Deal Statuses

GET
Response Properties
dealStatuses
object
Deal type details list
dealStatuses object properties
displayName
integer
Display name
name
string
Name
id
string
ID
order
string
Order
Response 200
{
"success": true,
"data": {
"dealStatuses": [
{
"name": "active",
"id": 1,
"label": "Active",
"order": 1
},
{
"name": "inactive",
"id": 2,
"label": "Inactive",
"order": 2
}
],
"totalRecords": 2,
"filteredRecords": 2
}
}

Private Marketplace (PMP) Deals Details

Get PMP Deals List

POST

Get a list of PMP deals based on desired filters available for user.

A PMP deal id can be used in the Create a New Inventory Group endpoint or to perform various actions in PMP Management endpoints.

Request Schema
groupId
integer
Filters PMP deals by Group ID
activeboolean
searchKeywords
array of strings
Strings used to search by dealId, dealName, or description
creativeTypes
array of integers
Creative Type IDs
exchanges
array of integers
Exchange IDs
ids
array of integers
PMP Deal IDs
dealStatuses
array of strings
Deal statuses, allowed values: inUse, unUsed, and inActive
owIds
array of integers
Organization Workspace IDs
pageNo
integer
Page number of retrieved data, default: 1
noOfEntries
integer
Number of deals to retrieve per page, default: 50
sortBy
string
Sort entries by ascending (+dealId) or descending (-dealId)
Response Properties
pmpDealData
integer
PMP deals list details
pmpDealData object properties
id
integer
PMP deal ID
dealId
string
Deal ID
dealName
string
PMP deal name
description
string
Deal description
cpm
integer
Cost per mille
dealCurationTypeId
integer
Curation Type ID
creativeTypes
array of string
List of Creative types
exchanges
array of strings
List of Exchanges
active
boolean
Indicates that deal is active: true
shared
boolean
Indicates that this deal is shared, not private: true
created
integer
Unix epoch creation date, in milliseconds
assignedToCustomers
array of integers
List of Customer deal is assigned to
assignedToCampaigns
array of integers
List of Campaigns deal is assigned to
Request Sample
{
"groupId": 1,
"active": true,
"searchKeywords": [
"keyword1",
"keyword2"
],
"creativeTypes": [
1,
2,
3
],
"exchanges": [
1,
2,
3,
4
],
"ids": [
1,
2,
3,
4
],
"dealStatuses": [
"inUse",
"unUsed",
"inActive"
],
"sortBy": "-dealId",
"noOfEntries": 2,
"pageNo": 1
}
Response 200
{
"success": true,
"data": {
"filteredRecords": 1,
"filteredList": [
{
"id": 115,
"dealId": "1476907757380667148",
"dealName": "85%+ Completion",
"description": "85%+ Completion",
"cpm": 20,
"dealCurationTypeId": 1,
"creativeTypes": [
"video"
],
"exchanges": [
"Oath"
],
"active": true,
"shared": false,
"created": 1597658148,
"assignedToCustomers": [
1,
2
],
"assignedToCampaigns": [
11223,
65333
]
}
]
}
}
More Responses
Response 422
{
"success": false,
"errorObjects": [
{
"error": "Invalid sortBy value."
}
]
}
Response 500
{
"success": false,
"errorObjects": [
{
"error": "server encountered an error !"
}
]
}

Get PMP Deal Details by IDs

GET
Path Parameters
id
integer
PMP Deal ID
Response Properties
pmpDealData
integer
PMP deals list details
pmpDealData object properties
id
integer
PMP deal ID
dealId
string
Deal ID
dealName
string
PMP deal name
description
string
Deal description
cpm
integer
Cost per mille
dealCurationTypeId
integer
Curation Type ID
creativeTypes
array of string
List of Creative types
exchanges
array of strings
List of Exchanges
active
boolean
Indicates that deal is active: true
shared
boolean
Indicates that this deal is shared, not private: true
created
integer
Unix epoch creation date, in milliseconds
assignedToCustomers
array of integers
List of Customer deal is assigned to
assignedToCampaigns
array of integers
List of Campaigns deal is assigned to
Response 200
{
"success": true,
"data": {
"id": 459,
"dealId": "BySuper_toAdvertiser",
"dealName": "BySuper_toAdvertiser_stageSharedOnly",
"description": "BySuper_toAdvertiser",
"cpm": 10,
"dealCurationTypeId": 2,
"creativeTypes": [
"html",
"video",
"native"
],
"exchanges": [
"Equativ"
],
"active": true,
"created": 1716877559,
"assignedToCustomers": [
201427
],
"assignedToCampaigns": [
2046372,
2053221
]
}
}

Get List of Customers Associated with Campaigns for a PMP Deal

GET
Path Parameters
dealId
integer
PMP Deal ID
Query Parameters
owIds
integer
Organization Workspace IDs
Response Properties
data
array of integers
Customer OW IDs
Response 200
{
"success": true,
"data": [
201427
]
}

Get Count of PMP Deals for All statuses

GET
Response Properties
All
integer
Total count
inActive
integer
Inactive count
inUse
integer
In use count
unUsed
integer
Unused count
Response 200
{
"success": true,
"data": {
"All": 351,
"inActive": 48,
"inUse": 266,
"unUsed": 37
}
}

PMP Management

Create, update, or delete PMP deals using the methods and endpoints outlined in this section.

Resource Properties

Create or update PMP deals using the following properties in the Request Body Schema.

Properties
dealId
string
PMP deal ID
dealName
string
PMP deal name
description
string
PMP deal description
cpm
integer
PMP deal Cost Per Mille (CPM) value
dealCurationTypeId
integer
Curation Type ID
creativeTypes
array of integers
Creative type IDs
exchangeId
integer
Exchange associated with PMP deal
assignToCustomers
array of integers
Customer Organization Workspace IDs
active
boolean
Deal status, active (true) or inactive (false)

Create PMP Deal

POST

Create a new PMP deal referencing the resource properties for the request schema.

Required fields:

  • dealId
  • dealName
  • exchangeId
  • active

Response Properties
id
integer
PMP deal ID
message
string
Success message
Request Sample
{
"dealId": "DIewkFZALX1taoLjQg6Gge1dD6YvZYO4RChUKmOLk",
"dealName": "Deal test123",
"description": "test deal description",
"cpm": 10,
"creativeTypes": [
11,
12
],
"exchangeId": 39,
"active": true
}
Response 200
{
"success": true,
"data": {
"id": 461,
"message": "Deal test123 created successfully"
}
}
More Responses
Response 400
{
"success": false,
"errorObjects": [
{
"error": "Deal id can not be longer than 500 characters",
"field": "dealId"
}
]
}
Response 422
{
"success": false,
"errorObjects": [
{
"error": "Invalid exchange id/ids provided"
}
]
}
Response 500
{
"success": false,
"errorObjects": [
{
"error": "server encountered an error !"
}
]
}

Update PMP Deal

PATCH

Update an existing PMP deal.

Path Parameters
id
integer
PMP Deal ID

Response Properties
id
integer
PMP deal ID
message
string
Success message
Request Sample
{
"dealName": "New Deal Name"
}

Response 200
{
"success": true,
"data": {
"id": 461,
"message": "New Deal Name updated successfully"
}
}

Delete PMP Deal

DELETE

Delete an existing PMP deal.

Query Parameters
ids
list of integers
PMP Deal IDs to delete
Response Properties
id
array of integers
PMP deal IDs
message
string
Success message
Response 200
{
"success": true,
"data": {
"id": [
470,
471
],
"message": "Deal/s deleted successfully"
}
}

Programmatic Guaranteed (PG) Deals Details

Get PG Deals List

GET

Get a list of PG deals available for user.

A PG deal id can be used in the Get PG Deals by ID endpoint or to perform various actions in PG Management endpoints.

Query Parameters
searchField
string
Filter results by search field
noOfEntries
integer
Number of deals to retrieve per page, default: 20
pageNo
integer
Page number of retrieved data, default: 1
sortBy
string
Sort results by ascending (+) or descending (-), supported values: id, dealName, cmp
Default: -id
ids
array of integers
IDs of the primary key of PG deals
paymentTypeIds
array of integers
Payment type ID
2: platform-based payment
statusIds
array of integers
Status IDs
exchangeIds
array of integers
Exchange IDs
Response Properties
pgDealData
integer
PG deals list details
pgDealData object properties
id
integer
PG deal ID
dealId
string
Deal ID
dealName
string
PG deal name
statusId
integer
Status ID
description
string
Deal description
paymentTypeId
integer
Payment type ID
2: platform-based payment
exchangeId
integer
Exchange ID
created
integer
Unix epoch creation date, in milliseconds
activeCampaignIds
array of integers
List of active Campaigns deal is assigned to
otherCampaignIds
array of integers
List of all other status Campaigns deal is assigned to
deleteAllowed
boolean
Indicates deal can be deleted: true
Response 200
{
"success": true,
"data": {
"totalRecords": 61,
"filteredRecords": 4,
"pgDealData": [
{
"id": 873,
"dealId": "PM-RTY-98765",
"dealName": "Demo Deal D4",
"statusId": 1,
"description": "Demo deal description D4",
"paymentTypeId": 2,
"exchangeId": 11,
"created": 1719723041347,
"activeCampaignIds": [],
"otherCampaignIds": [
506172,
506173,
506174,
506175,
506176,
506177,
506178
],
"deleteAllowed": true
},
{
"id": 872,
"dealId": "PM-QWE-54321",
"dealName": "Sample Deal C3",
"statusId": 1,
"description": "Sample deal description C3",
"paymentTypeId": 2,
"exchangeId": 78,
"created": 1719722247192,
"activeCampaignIds": [
506162,
506161,
506160
],
"otherCampaignIds": [
506163,
506166,
506165,
506164
],
"deleteAllowed": false
},
...
]
}
}
More Responses
Response 401
{
"success": false,
"errorObjects": [
{
"error": "Unauthorized"
}
]
}
Response 422
{
"success": false,
"errorObjects": [
{
"error": "Invalid sortBy value."
}
]
}
Response 500
{
"success": false,
"errorObjects": [
{
"error": "server encountered an error !"
}
]
}

Get PG Deals Details by ID

GET

Get PG deal details by specified ID including its associated Campaign IDs.

Path Parameters
id
integer
PG Deal ID
Response Properties
pgDealData
integer
PG deals list details
pgDealData object properties
id
integer
PG deal ID
dealId
string
Deal ID
statusId
integer
Status ID
dealName
string
PG deal name
description
string
Deal description
paymentTypeId
integer
Payment type ID
2: platform-based payment
exchangeId
integer
Exchange ID
created
integer
Unix epoch creation date, in milliseconds
activeCampaignIds
array of integers
List of active Campaigns deal is assigned to
otherCampaignIds
array of integers
List of all other status Campaigns deal is assigned to
Response 200
{
"success": true,
"data": {
"id": 872,
"dealId": "PM-QWE-54321",
"dealName": "Sample Deal C3",
"statusId": 1,
"description": "Sample deal description C3",
"paymentTypeId": 2,
"exchangeId": 78,
"created": 1719722247192,
"activeCampaignIds": [
506160,
506161,
506162
],
"otherCampaignIds": [
506163,
506164,
506165,
506166
]
}
}

PG Management

Create, update, or delete PG deals using the methods and endpoints outlined in this section.

Resource Properties

Create or update PG deals using the following properties in the Request Body Schema.

Properties
dealId
string
PG deal ID
dealName
string
PG deal name
exchangeId
integer
Exchange ID associated with PG deal
cpm
integer
Cost Per Mille (CPM) value
statusId
integer
Status ID of PG deal
description
string
Description or notes about the deal
paymentTypeId
integer
Payment type ID
2: platform-based payment

Create PG Deal

POST

Create a new PG deal referencing the resource properties for the request schema.

Required fields:

  • dealId
  • dealName
  • exchangeId
  • statusId

Response Properties
id
integer
PG deal ID
message
string
Success message
Request Sample
{
"dealId": "YT-Test-1234",
"dealName": "Test deal YT31",
"exchangeId": 11,
"statusId": 2,
"paymentTypeId": 1,
"description": "Test Deal"
}
Response 200
{
"success": true,
"data": {
"message": "Deal Test deal YT31 created successfully",
"id": 2
}
}

Update PG Deal Details

PATCH

Update a PG deal.

Path Parameters
id
integer
PG Deal ID

Response Properties
data
string
Success message
Request Sample
{
"dealId": "PM-ABC-12345",
"dealName": "Premium Advertising Package",
"statusId": 2,
"description": "Comprehensive advertising package including display, video, and social media placements for maximum exposure.",
"cpm": 40,
"paymentTypeId": 2,
"exchangeId": 11
}
Response 200
{
"success": true,
"data": "PG deal updated successfully"
}

Delete PG Deal

DELETE

Delete an existing PG deal.

Query Parameters
ids
integer required
Comma separated PG Deal IDs to delete
Response Properties
data
string
Success message
Response 200
{
"success": true,
"data": "PG Deal deleted successfully"
}

Have a question?
Was this page helpful?