Skip to main content

Inventory API

Overview

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. The Inventory API also allows you to create and manage advertising deals. 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 Guarantee (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 three types of Inventory group: Open Exchange, PMP Deals, and Contextual Inventory.

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

Learn more about Inventories with our Help Center articles.

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 Worskpace 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
categories
string
Filter by category
inventoryTypes
string
Filter by Inventory type
creativeSizes
string
Filter by Creative size
creativeTypes
string
Filter by Creative type
creativeDurations
string
Filter by Creative duration
trafficTypes
string
Filter by traffic type
deviceTypes
string
Filter by device type
exchanges
string
Filter by exchange
videoPlayerSizes
string
Filter by video player size
noOfEntries
integer
Maximum number of entries per page
pageNo
integer
Number of pages for retrieved data
groupId
integer
Group ID

Get List of Inventories

GET /api/v3/inv/inventories/list

Get a list of Inventories available to user.

See Supported Query Parameters.

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 /api/v3/inv/inventories/distributions

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

See Supported Query Parameters.

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 /api/v3/inv/inventories/count

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

See Supported Query Parameters.

Response 200
{
"success": true,
"data": {
"reach": 7983863253,
"publishers": 2010,
"impressions": 119273056646,
"inventories": 1387184
}
}
More Response Samples
Response 403
{
"success": false,
"errorObjects": [
{
"error": "User is not allowed to access provided Inventory group."
}
]
}

Get Inventory Group Types

GET /api/v3/inv/inventory-group-types

Get list of Inventory group types.

Response 200
{
"success": true,
"data": {
"inventoryGroupTypeList": [
{
"name": "Open Exchange",
"id": 1,
"order": 1
},
{
"name": "PMP Deals",
"id": 1,
"order": 1
},
{
"name": "Contextual Inventory",
"id": 2,
"order": 2
}
],
"totalRecords": 3,
"filteredRecords": 3
}
}

Get List of Blocked Inventories

GET api/v3/inv/blocked-inventories

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
Search result by keyword
inventoryIds
string
Filter Inventories by Inventory ID
noOfEntries
integer
Maximum number of entries per page, default: 200
pageNo
integer
Number of pages for retrieved data, default: 1
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 Optimization

POST /api/v2/inv/inventories/includeExclude

Inventories can be optimized for specific Campaign IDs.

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
Request Sample
{
"campaignId": 168622,
"ids": "1,2,3,4",
"isExcluded": 0
}
Response 200
{
"statusCode": 200,
"responseObject": {
"message": "Inventories Included."
}
}

Block Inventories

POST /api/v3/inv/inventories/block

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 searched keyword
Request Sample
{
"inventoryIds": [
0,
1,
5
]
}
Response 200
{
"success": true,
"data": "Inventories blocked successfully."
}

Download CSV Inventory List

POST api/v3/inv/inventories/open-exchange/download

Get a CSV Inventory list based on desired filters.

Query Parameters
keywords
string
Filters by list of keywords
countries
string
Filters by list of countries
categories
string
Filters by categories
inventoryTypes
string
Filters by Inventory type
creativeSizes
string
Filters by Creative sizes
creativeDurations
string
Filters by Creative durations
trafficTypes
string
Filters by traffic type
deviceTypes
string
Filters by device type
exchanges
string
Filters by exchanges
videoPlayerSizes
string
Filters by video player size
isCsvSearch
boolean
true if CSV file uploaded for query, otherwise false
fileType
string
File type to download: csv or xlsx
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 api/v3/inv/inventories/csv/list

Get paginated list of Inventory based on provided CSV file.

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 api/v3/inv/inventories/csv/distributions

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

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 api/v3/inv/inventories/csv/count

Get Inventory count based on provided CSV file.

Request Sample
{
"domainsFile": "string"
}
Response 200
{
"success": true,
"data": {
"reach": 7983863253,
"publishers": 2010,
"impressions": 119273056646,
"inventories": 1387184
}
}

Inventory Groups

Get List of Inventory Groups

GET /api/v3/inv/groups/list

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

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
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
Searches by name
pageSize
integer
Maximum number of entries per page
pageNo
integer
Number of pages for retrieved data
owId
integer
Organization Workspace ID
sortBy
string
Sort entries by ascending (+) or descending (-)
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 Inventory Groups Statistics

GET /api/v3/inv/groups/statistics
Response 200
{
"success": true,
"data": {
"totalInventoryGroups": 371,
"includedGroups": 296,
"excludedGroups": 92,
"unUsedGroups": 75
}
}

Get List of Campaigns Attached to Group

GET /api/v3/inv/groups/api/v3/group/{groupId}/shared/campaigns/list
Path Parameter
groupIdGroup ID
Response 200
{
"success": true,
"data": [
286107,
284229,
287201,
287202
]
}

Get List of PMP Deals In an Inventory Group

GET /api/v3/inv/groups/api/v3/group/{groupId}/pmp-deals
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
noOfEntriesMaximum number of entries per page, default: 50
pageNoPage number
sortBySorts by ascending (+) or descending (-)
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 /api/v3/inv/groups/api/v3/group/{groupId}/pmp-deals/csv
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
sortOrderSorts by ascending (asc) or, default: descending (desc)
sortBySort by parameter, default: created

Get List of Open Exchange Inventories In an Inventory Group

GET /api/v3/inv/groups/api/v3/group/{groupId}/open-exchange-inventories
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
noOfEntriesMaximum number of entries per page, default: 50
pageNoPage number
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 /api/v3/inv/groups/api/v3/group/{groupId}/open-exchange-inventories/distributions
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
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 /api/v3/inv/groups/api/v3/group/{groupId}/open-exchange-inventories/count
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
Response 200
{
"success": true,
"data": {
"inventories": 3,
"reach": 2689,
"publishers": 1,
"impressions": 30569
}
}

Get List of Contextual Inventories For an Inventory Group

GET /api/v3/inv/groups/api/v3/group/{groupId}/contextual-inventories
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
noOfEntriesMaximum number of entries per page, default: 50
pageNoPage number
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 /api/v3/inv/groups/api/v3/group/{groupId}/contextual-inventories/count
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name
Response 200
{
"success": true,
"data": {
"contextualUrlCount": 0,
"contextualKeywordCount": 1
}
}

Get CSV File of Contextual Inventories For an Inventory Group

GET /api/v3/inv/groups/api/v3/group/{groupId}/contextual-inventories/csv
Path Parameter
groupIdGroup ID
Query Parameter
searchFieldSearch Inventory by group name

Contextual Inventory

GET /api/v3/inv/contextual/recommend
GET /api/v3/inv/contextual/autosuggest

Get recommended keywords or autocompleted keywords.

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

Inventory Group Management

Update details or delete group Inventories.

Create a New Inventory Group

POST /api/v3/inv/groups

Add a new Inventory group based on the provided request body.

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 to include in group
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
}
}

Add or Remove Mappings to an Inventory Group

POST /api/v3/inv/group/addMappings
POST /api/v3/inv/group/removeMappings

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 integers
Filters by keyword
countries
array of integers
Filters by country
categories
array of integers
Filter by category
inventoryTypes
array of integers
Filter by Inventory type
creativeSizes
array of integers
Filter by Creative size
creativeTypes
array of integers
Filter by Creative types
trafficTypes
array of integers
Filter by traffic types
deviceTypes
array of integers
Filter by device types
videoPlayerSizes
array of integers
Filter by video player sizes
isAllInventories
boolean
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 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 /api/v3/inv/group/{groupId}/shared/customers/edit

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 Worskpace IDs to add to Inventory Group
removeOwIds
array of integers
Organization Workspace IDs to remove from Inventory Group
Request Sample
{
"addOWIds": [
200425,
200495,
200496
],
"removeOWIds": [
200929,
200931,
200963,
200964
]
}
{
"success": true,
"data": "Your changes have been successfully saved."
}

Edit Inventory Group

PATCH /api/v3/inv/groups/{groupId}

Edit an Inventory group.

Path Parameters
groupId
integer
Group ID
Request Schema
groupName
string
Name of group
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 /api/v3/inv/groups/{groupId}

Delete an existing Inventory group.

Path Parameters
groupId
integer
Group ID
Response 200
{
"success": true,
"data": "Inventory group deleted successfully."
}

Private Marketplace (PMP) Deals Details

Get PMP Deals List

POST /api/v3/pmp/deals/list

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

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
Exchanges 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
Pages of retrieved details desired, default: 1
noOfEntries
integer
Maximum number of deals to retrieve, default: 50
sortBy
string
Sort entries by ascending (+dealId) or descending (-dealId)
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 /api/v3/inv/pmp/deals/{id}
Path Parameters
id
integer
PMP Deal ID
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 /api/v3/inv/pmp/deals/{dealId}/associated-customers
Path Parameters
dealId
integer
PMP Deal ID
Query Parameters
owIds
integer
Organization Workspace IDs
Response 200
{
"success": true,
"data": [
201427
]
}

Get Count of PMP Deals for All statuses

GET /api/v3/inv/pmp/deals/count-by-status
Response 200
{
"success": true,
"data": {
"All": 351,
"inActive": 48,
"inUse": 266,
"unUsed": 37
}
}

Get List of Deal Types

GET /api/v3/inv/static/deal-types
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 /api/v3/inv/static/deal-status
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
}
}

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 api/v3/inv/pmp/deals/add

Create a new PMP Deal using the above Resource Properties as the request schema

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 /api/v3/inv/pmp/deals/{id}

Update any Resource Property of an existing PMP Deal with its ID.

Path Parameters
id
integer
PMP Deal ID
Request Sample
{
"dealName": "New Deal Name"
}

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

Delete PMP Deal

DELETE /api/v3/inv/pmp/deals

Delete an existing PMP Deal.

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

Programmatic Guarantee (PG) Deals Details

Get PG Deals List

GET /api/v3/inv/pg/deals/list

Get a list of PG deals available for user.

Query Parameters
searchField
string
Search results by keyword
noOfEntries
integer
Maximum number of deals to retrieve, default: 20
pageNo
integer
Pages of retrieved details desired, 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 IDs
statusIds
array of integers
Status IDs
exchangeIds
array of integers
Exchange IDs
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 /api/v3/inv/pg/deals/{id}

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

Path Parameters
id
integer
PG Deal ID
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 of PG Deal

Create PG Deal

POST /api/v3/inv/pg/deals/add

Create a new PG Deal with the following endpoint:

Refer to PG Deal Resource Properties above for schema.

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 /api/v3/inv/pg/deals/{id}

Update specific details of a PG Deal.

Path Parameters
id
integer
PG Deal ID

Refer to PG Deal Resource Properties above for request schema.

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 /api/v3/inv/pg/deals

Delete an existing PG Deal.

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