Creative API
The Creative API allows you to upload images, videos, audio, or HTML files to the Creative library.
You can also get Creative details and manage Creatives, Creative groups and associated Conversions. This page covers the common endpoints and methods associated with the Creative API.
File requirements for Creative file:
- 2MB for JPG, JPEG, PNG
- 750KB for GIF
- 400MB for MOV, MP4
- 100MB for MP3, WAV, OGG, MPEG
For more information on VAST and DAAST XML format specifications, please see IAB Tech Lab's Documentation.
Sample CSV file: https://api.iqm.com/creatives/example-files/sample_html_creatives.csv
More Resources
- Upload a Creative Quickstart Guide
- Creative and Specifications Help Center article
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 |
Creative Details
Creative Details by ID
GETGet Creative details by ID.
| Path Parameters | |
|---|---|
creativeId integer | Creative ID |
Response Properties
creativeId integer | Creative ID | |||||||||||
creativeName string | Creative name | |||||||||||
rtbCreativeTypeIdinteger | RTB Creative Type ID | |||||||||||
platformCreativeTypeIdinteger | Platform Creative Type ID | |||||||||||
creativeStatusId integer | Creative Status ID | |||||||||||
creativeSource string | Creative source | |||||||||||
creativeCardSource string | Creative card source | |||||||||||
clickUrl string | Click URL | |||||||||||
imageDetails object | Image details | |||||||||||
| ||||||||||||
pixelUrl string | Pixel URL |
creativeWidth integer | Creative width (px) |
creativeHeight integer | Creative height (px) |
creativeSourceType string
Supported values: file, HTML, vast-xml
creativePreviewFlag integer
createdAt integer
modifiedAt string
userDetails object
userDetails object properties
uowId integer | User Organization Workspace ID |
userName string | User name |
userEmail string | User email |
hasApprovalAccess boolean | Indicates if user has access to approve |
hasEditAccess boolean | Indicates if user has edit access for the requested resources |
organizationDetails object
organizationDetails object properties
owId integer | Organization Workspace ID |
organizationName string | Organization name |
- JSON
- TypeScript
{
"success": true,
"data": {
"creativeId": 686855,
"creativeName": "300x600-w23-01",
"rtbCreativeTypeId": 1,
"platformCreativeTypeId": 11,
"creativeStatusId": 2,
"creativeSource": "https://d3jme5si7t6llb.cloudfront.net/image/202760/efk0sUk_1730201855013.jpg",
"creativeCardSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/202760/278x220/efk0sUk_1730201855013.jpg",
"clickUrl": "http://iqm.com",
"imageDetails": {
"pixelUrl": "http://pixel.com",
"creativeWidth": 300,
"creativeHeight": 600
},
"creativeSourceType": "file",
"creativePreviewFlag": 1,
"createdAt": 1730201855165,
"modifiedAt": "2024-10-29T06:10:15.000+00:00",
"userDetails": {
"uowId": 175891,
"userName": "Hardik",
"userEmail": "hardik.v+iqmsuper@iqm.com",
"hasApprovalAccess": true,
"hasEditAccess": true
},
"organizationDetails": {
"owId": 202760,
"organizationName": "AdWing"
}
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
creativeId: number;
creativeName: string;
rtbCreativeTypeId: number;
platformCreativeTypeId: number;
creativeStatusId: number;
creativeSource: string;
creativeCardSource: string;
clickUrl: string;
imageDetails: {
pixelUrl: string;
creativeWidth: number;
creativeHeight: number;
};
creativeSourceType: string;
creativePreviewFlag: number;
createdAt: number;
modifiedAt: number;
userDetails: {
uowId: number;
userName: string;
userEmail: string;
hasApprovalAccess: boolean;
hasEditAccess: boolean;
};
organizationDetails: {
owId: number;
organizationName: string
}
}
};
};
};
}
function getCreative(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/crt/creatives/{creativeId}',
params: {
path: {
creativeId: `number`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get List of Creatives and Details
POSTGet a list of Creatives with their details.
A Creative id can be used to Get Creative Details by ID and to perform various actions in Creative Managment endpoints.
| Request Schema | |
|---|---|
pageNointeger | Page number of retrieved data |
noOfEntriesinteger | Number of entries returned per page |
sortBystring | Sorts by ascending (+) or descending (-) |
searchFieldstring | Filter results by search field |
platformCreativeTypeIdsarray of integers | Creative Type IDs |
creativeStatusIdsarray of integers | Creative Status IDs |
creativeIdsarray of integers | Creative IDs |
creativeGroupIdinteger | Filter results by Creative Group ID |
campaignIdsarray of integers | Filter results by Campaign IDs |
startTimeinteger | Unix epoch timestamp (in milliseconds) of start time |
endTimeinteger | Unix epoch timestamp (in milliseconds) of end time |
owIdsinteger | (Super/Workspace only) Organization Workspace IDs |
allOwIdsboolean | (Super/Workspace only) Filters records with all allowed OW IDs if true, prioritizes records over owIds |
includeCreativeSourceDetailsboolean | (Advertiser only) Flag indicating whether to include Creative source details (true) or not (false) |
includeOrgnizationDetailsboolean | Flag indicating whether to include Organization details (true) or not (false) |
includeUserDetailsboolean | Flag indicating whether to include user details (true) or not (false) |
Response Properties
creativeId integer | Creative ID | |||
creativeName string | Creative name | |||
platformCreativeTypeIdinteger | Platform Creative Type ID | |||
creativeStatusId integer | Creative Status ID | |||
creativeSourceType string | Creative source type Supported values: file, HTML, vast-xml | |||
creativePreviewFlag integer | Indicates if a Creative has a thumbnail/preview available for users or systems before finalization: true | |||
creativeCardSource string | Creative card source | |||
createdAt integer | Unix epoch timestamp of Campaign creation date, in milliseconds | |||
modifiedAt string | Last modified date | |||
clickUrl string | Click URL | |||
pixelUrl string | Pixel URL | |||
creativeWidth integer | Creative width (px) | |||
creativeHeight integer | Creative height (px) | |||
subMediaType integer | Subcategory of media type | |||
approvalRequiredPostUrlUpdate boolean | Indicates that an update to a Creative's port or URL requires approvel: true | |||
campaignDetails object | Campaign details | |||
| ||||
campaignIds array of integer | Campaign IDs |
userDetails object
userDetails object properties
uowId integer | User Organization Workspace ID |
organizationDetails object
organizationDetails object properties
owId integer | Organization Workspace ID |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 2,
"sortBy": "-creativeId",
"searchField": "creative",
"platformCreativeTypeIds": [
11,
13,
14,
15,
17
],
"creativeStatusIds": [
1,
2,
3,
4
],
"creativeIds": [
130141,
130142
],
"creativeGroupId": null,
"campaignIds": [
20141
],
"startTime": 1734998399000,
"endTime": 1735206867000,
"includeCreativeSourceDetails": true,
"includeOrganizationDetails": false,
"includeUserDetails": false
}
{
"success": true,
"data": {
"totalRecords": 120,
"filteredRecords": 2,
"filteredList": [
{
"creativeId": 130141,
"creativeName": "Creative 1",
"platformCreativeTypeId": 11,
"creativeStatusId": 2,
"creativePreviewFlag": 1,
"creativeSourceType": "file",
"creativeSource": "https://cdn-cfy-p0.iqm.com/image/457/3W8FRdl_1671813949060.gif",
"creativeThumbnailSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/136x82/3W8FRdl_1671813949060.gif",
"creativeCardSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/278x220/3W8FRdl_1671813949060.gif",
"createdAt": 1671813949233,
"modifiedAt": 1671819653000,
"clickUrl": "https://example.com/id=130141",
"creativeHeight": 50,
"creativeWidth": 320,
"campaignDetails": {
"campaignIds": [
20141
]
},
"userDetails": {
"uowId": 981
},
"organizationDetails": {
"owId": 201353
}
},
{
"creativeId": 130142,
"creativeName": "Creative 2",
"platformCreativeTypeId": 14,
"creativeStatusId": 2,
"creativePreviewFlag": 1,
"creativeSourceType": "file",
"creativeSource": "<VAST xmlns="http://www.iab.com/VAST" version="4.0"> <Ad conditionalAd="false" id="{IAA_CREATIVE_ID}" sequence="1"> <InLine> <AdSystem version="4.0">4.0</AdSystem> <Impression id="Impression-ID"> <![CDATA[http://example.com/track/impression]]> </Impression> </InLine> </Ad> </VAST>",
"creativeThumbnailSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/136x82/EQ4SWN1_1671813949262.png",
"creativeCardSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/278x220/EQ4SWN1_1671813949262.png",
"createdAt": 1671813949351,
"modifiedAt": 1671819653000,
"clickUrl": "https://example.com/id=130142",
"duration": 16,
"campaignDetails": {
"campaignIds": [
20141
]
},
"userDetails": {
"uowId": 981
},
"organizationDetails": {
"owId": 201353
}
}
]
}
}
{
"success": true,
"data": {
"totalRecords": 120,
"filteredRecords": 2,
"filteredList": [
{
"creativeId": 130141,
"creativeName": "Creative 1",
"platformCreativeTypeId": 11,
"creativeStatusId": 2,
"creativePreviewFlag": 1,
"creativeSourceType": "file",
"creativeThumbnailSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/136x82/3W8FRdl_1671813949060.gif",
"creativeCardSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/278x220/3W8FRdl_1671813949060.gif",
"createdAt": 1671813949233,
"modifiedAt": 1671819653000,
"clickUrl": "https://example.com/id=130141",
"pixelUrl": "http://app.iqm.com",
"creativeHeight": 50,
"creativeWidth": 320,
"subMediaType": "Image",
"approvalRequiredPostUrlUpdate": true,
"campaignDetails": {
"campaignIds": [
20141
]
},
"userDetails": {
"uowId": 981,
"userName": "User Name",
"userEmail": "email@domain.com",
"hasEditAccess": true,
"hasApprovalAccess": true
},
"organizationDetails": {
"owId": 201353,
"organizationName": "Organization Name",
"organizationLogo": "https://iqm-web-assets-c92d6b6cbde1-stage.s3.amazonaws.com/avatar/ON.png"
}
},
{
"creativeId": 130142,
"creativeName": "Creative 2",
"platformCreativeTypeId": 14,
"creativeStatusId": 2,
"creativePreviewFlag": 1,
"creativeSourceType": "file",
"creativeThumbnailSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/136x82/EQ4SWN1_1671813949262.png",
"creativeCardSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201353/278x220/EQ4SWN1_1671813949262.png",
"createdAt": 1671813949351,
"modifiedAt": 1671819653000,
"clickUrl": "https://example.com/id=130142",
"duration": 16,
"subMediaType": "Video",
"approvalRequiredPostUrlUpdate": false,
"campaignDetails": {
"campaignIds": [
20141
]
},
"userDetails": {
"uowId": 981,
"userName": "User Name",
"userEmail": "email@domain.com",
"hasEditAccess": true,
"hasApprovalAccess": true
},
"organizationDetails": {
"owId": 201353,
"organizationName": "Organization Name",
"organizationLogo": "https://iqm-web-assets-c92d6b6cbde1-stage.s3.amazonaws.com/avatar/ON.png"
}
}
]
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
filteredList: {
creativeId: number;
creativeName: string;
platformCreativeTypeId: number;
creativeStatusId: number;
creativePreviewFlag: number;
creativeSourceType: string;
creativeSource: string;
creativeThumbnailSource: string;
creativeCardSource: string;
createdAt: number;
modifiedAt: number;
clickUrl: string;
creativeWidth: number;
creativeHeight: number;
campaignDetails: {
campaignIds: number[]
};
userDetails: {
uowId: number;
userName: string;
userEmail: string;
hasApprovalAccess: boolean;
hasEditAccess: boolean;
};
organizationDetails: {
owId: number;
organizationName: string
}
}[];
}
};
};
};
}
function getCreatives_1(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives/list',
requestBody: {
content: {
"application/json": {
sortCriteriaMap?: {
[key: string]: `string`,
},
creativeStatusIds?: `array of numbers`,
platformCreativeTypeIds?: `array of numbers`,
creativeIds?: `array of numbers`,
creativeGroupId?: `number`,
campaignIds?: `array of numbers`,
owIds?: `array of numbers`,
allOwIds?: `boolean`,
includeCreativeSourceDetails?: `boolean`,
includeOrganizationDetails?: `boolean`,
includeUserDetails?: `boolean`,
startTime?: `number`,
endTime?: `number`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: 'SortOrderEnum[id=1, name='asc', symbol='+']" | "SortOrderEnum[id=2, name='desc', symbol='-']'
};
};
};
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get Associated Campaigns
GETGet details of a Creative by ID along with its associated Campaigns. Includes the option of retrieving modeling details.
| Path Parameters | |
|---|---|
creativeIdinteger | Creative ID |
| Query Parameters | |
|---|---|
includeModelingInfoboolean | Indicates whether modeling details should be included (true) or not, default (false) |
Response Properties
creativeId integer | Creative ID | |||||||||||
creativeName string | Creative name | |||||||||||
rtbCreativeTypeIdinteger | RTB Creative Type ID | |||||||||||
platformCreativeTypeIdinteger | Platform Creative Type ID | |||||||||||
creativeStatusId integer | Creative Status ID | |||||||||||
creativeSource string | Creative source | |||||||||||
creativeCardSource string | Creative card source | |||||||||||
clickUrl string | Click URL | |||||||||||
videoDetails object | Image details | |||||||||||
| ||||||||||||
duration integer | Video duration |
xmlType string | XML type Supported values: vastWrapper, vastInline |
creativeSourceUrl string | Creative source URL |
availableXmlVersions string | Available XML versions Supported values: v1.0, v1.1, v2.0 |
transformed boolean | Indicates that a video or audio Creative has been successfully been converted to other formats or compressed Default: false, updated to true once post-processing by AWS Lambda is completed |
creativeSourceType string
Supported values: file, HTML, vast-xml
creativePreviewFlag integer
createdAt integer
modifiedAt string
userDetails object
userDetails object properties
uowId integer | User Organization Workspace ID |
userName string | User name |
userEmail string | User email |
organizationDetails object
organizationDetails object properties
owId integer | Organization Workspace ID |
organizationName string | Organization name |
campaignDetails array of objects
campaignDetails object properties
id integer | Campaign ID |
name string | Campaign name |
status string | Campaign status |
totalCreativesCount integer | Count of Creatives associated with Campaign |
isModelled boolean | Indicates that a Creative has been assigned Bid Modelling: true |
- JSON
- TypeScript
{
"success": true,
"data": {
"creativeId": 604675,
"creativeName": "ad-45s",
"rtbCreativeTypeId": 3,
"platformCreativeTypeId": 14,
"creativeStatusId": 2,
"creativeSource": "VAST...",
"creativeCardSource": "https://d3jme5si7t6llb.cloudfront.net/Screenshots/201427/278x220/fgx01xo_1701846672033.jpg",
"clickUrl": "https://iqm.com/?utm_medium=rtb&utm_campaign=wreckathon-2022-play-4",
"videoDetails": {
"duration": 45,
"xmlType": "inline",
"creativeSourceUrl": "https://cdn-cfy-p0.iqm.com/wreckathon/Videos/iqm-video-202206-45s-720p.mp4",
"availableXmlVersions": "2.0,3.0,4.0,4.1",
"transformed": true
},
"creativeSourceType": "vast-xml",
"creativePreviewFlag": 1,
"createdAt": 1701846671694,
"modifiedAt": "2023-12-13T02:23:26.000+00:00",
"userDetails": {
"uowId": 9483,
"userName": "Hardik Vagadia",
"userEmail": "hardik.v+stageadv@iqm.com"
},
"organizationDetails": {
"owId": 201427,
"organizationName": "Stage Shared Advertiser"
},
"approvalRequiredPostUrlUpdate": true,
"campaignDetails": [
{
"id": 452308,
"name": "Test Campaign - Pre-bid segment not attched",
"status": "pending",
"totalCreativesCount": 3,
"isModelled": false
},
{
"id": 452330,
"name": "checking video campaign",
"status": "expired",
"totalCreativesCount": 7,
"isModelled": true
}
]
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
creativeId: number;
creativeName: string;
rtbCreativeTypeId: number;
platformCreativeTypeId: number;
creativeStatusId: number;
creativeSource: string;
creativeCardSource: string;
clickUrl: string;
videoDetails: {
duration: number;
xmlType: string;
creativeSourceUrl: string;
availableXmlVersions: number;
transformed: boolean;
};
creativeSourceType: string;
creativePreviewFlag: number;
createdAt: number;
modifiedAt: number;
userDetails: {
uowId: number;
userName: string;
userEmail: string;
};
organizationDetails: {
owId: number;
organizationName: string
};
approvalRequiredPostUrlUpdate: boolean;
campaignDetails: {
id: number;
name: string;
status: string;
totalCreativesCount: number;
isModelled: boolean;
}[];
}
};
};
};
}
function getCreativeAndCampaignDetails(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/crt/creatives/{creativeId}/creative-campaign-details',
params: {
path: {
creativeId: `number`
},
query?: {
includingModelingInfo?: `boolean`
}
},
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get List of Creative Groups
POSTGet a list of Creative groups by desired filters.
A Creative group id can be used to filter the results of Get Creative Details by ID and to perform various actions in Creative Managment endpoints.
| Request Schema | |
|---|---|
pageNointeger | Page number of retrieved data, default value: 1 |
noOfEntriesinteger | Number of entries returned per page, default value: 20 |
sortBystring | Sorts by ascending (+) or descending (-), default value: -creativeGroupId |
searchFieldstring | Filter results by search field: groupId, groupName, creativeId, name, or 3rd party ID |
platformCreativeTypeIds array of integers | Creative Type IDs |
creativeStatusIdsarray of integers | Creative Status IDs |
creativeGroupIdsarray of integers | Creative Group IDs |
startTimeinteger | Unix epoch timestamp (in milliseconds) of start time |
endTimeinteger | Unix epoch timestamp (in milliseconds) of end time |
allOwIds boolean | (Super/Workspace only) Filters records with all allowed OW IDs if true, prioritizes records over owIds |
Response Properties
creativeGroupList array of objects | Creative group details | |||||||||
| ||||||||||
creativeGroupId integer | Creative group ID |
creativeGroupName string | Creative group name |
creativeTypeId integer | Creative Type ID |
creativesCount integer | Count of Creatives in group |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 2,
"searchField": "test",
"creativeGroupIds": [
46652,
46639
],
"startTime": 1737023769000,
"endTime": 1737369441000,
"sortBy": "-creativeGroupId",
"platformCreativeTypeIds": [
11,
13,
14,
15,
17
],
"creativeStatusIds": [
1,
2,
3,
4
]
}
{
"success": true,
"data": {
"totalRecords": 203,
"filteredRecords": 12,
"creativeGroupList": [
{
"creativeGroupId": 17524,
"creativeGroupName": "Group_08",
"creativeTypeId": 11,
"createdAt": 1651570373395,
"creativesCount": 6
},
{
"creativeGroupId": 17522,
"creativeGroupName": "Group_06",
"creativeTypeId": 13,
"createdAt": 1651570273015,
"creativesCount": 5
}
]
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
creativeGroupList: {
creativeGroupId: number;
creativeGroupName: string;
creativeTypeId: number;
createdAt: number;
creativesCount: number;
}[];
}
};
};
};
}
function getCreativeGroupList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives/groups/list',
requestBody: {
content: {
"application/json": {
sortCriteriaMap?: {
[key: string]: `string`
},
platformCreativeTypeIds?: `array of numbers`,
creativeStatusIds?: `array of numbers`,
creativeGroupIds?: `array of numbers`,
startTime?: `number`,
endTime?: `number`,
owIds?: `array of numbers`,
allOwIds?: `boolean`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: 'SortOrderEnum[id=1, name='asc', symbol='+']" | "SortOrderEnum[id=2, name='desc', symbol='-']'
}
}
};
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get Creative Count by Type
POSTGet a count of Creatives by Creative type.
| Request Schema | |
|---|---|
searchField string | Filter results by search field |
Response Properties
creativeTypeList array of objects | Creative type list and counts | |||||
| ||||||
id integer | Creative Type ID |
creativeCount integer | Count of Creatives by type |
- JSON
- TypeScript
{
"searchField": "creative"
}
{
"success": true,
"data": {
"totalRecords": 6,
"creativeTypeList": [
{
"id": 0,
"creativeCount": 88829
},
{
"id": 11,
"creativeCount": 52951
},
{
"id": 13,
"creativeCount": 7520
},
{
"id": 14,
"creativeCount": 15004
},
{
"id": 17,
"creativeCount": 1732
},
{
"id": 15,
"creativeCount": 11622
}
],
"filteredRecords": 6
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
creativeTypeList: {
id: number;
creativeCount: number;
}[]
}
};
};
};
}
function getCreativeTypeCount(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives/count-by-type',
requestBody: {
content: {
"application/json": {
searchField?: `string`,
owIds?: `array of numbers`,
allOwIds?: `boolean`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get Creative Count by Status
POSTGet count of Creatives by Creative status.
| Request Schema | |
|---|---|
searchFieldstring | Filter results by search field: groupId, groupName, creativeId, name, or 3rd party ID |
platformCreativeTypeIds array of integers | Creative Type IDs |
creativeStatusIdsarray of integers | Creative Status IDs |
creativeIdsarray of integers | Creative IDs |
allCreatives boolean | Flag indicating whether to include all Creatives in results (true) |
groupedCreatives boolean | Flag indicating whether to include grouped Creaties (true) |
startTimeinteger | Unix epoch timestamp (in milliseconds) of start time |
endTimeinteger | Unix epoch timestamp (in milliseconds) of end time |
campaignIds array of integers | Filter reesults by Campaign IDs |
owIds array of integers | (Super/Workspace only) Organization Workspace IDs |
allOwIds boolean | (Super/Workspace only) Filters records with all allowed OW IDs if true, prioritizes records over owIds |
Response Properties
creativeStatusList array of objects | Creative type list and counts | |||||
| ||||||
id integer | Creative Status ID |
creativeCount integer | Count of Creatives by status |
- JSON
- TypeScript
{
"searchField": "creative",
"creativeStatusIds": [
1,
2,
3,
4
],
"platformCreativeTypeIds": [
11,
13,
14,
15,
17
],
"creativeIds": [
123,
456
],
"allCreatives": true,
"groupedCreatives": false,
"startTime": 1734998399000,
"endTime": 1735206867000,
"owIds": [],
"allOwIds": true,
"campaignIds": [
123456
]
}
{
"success": true,
"data": {
"creativeStatusList": [
{
"id": 0,
"creativeCount": 587
},
{
"id": 1,
"creativeCount": 212
},
{
"id": 2,
"creativeCount": 281
},
{
"id": 3,
"creativeCount": 6
},
{
"id": 5,
"creativeCount": 13
},
{
"id": 4,
"creativeCount": 75
}
],
"totalRecords": 6,
"filteredRecords": 6
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
creativeStatusList: {
id: number;
creativeCount: number;
}[]
}
};
};
};
}
function getCreativeStatusCount(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives/count-by-status',
requestBody: {
content: {
"application/json": {
searchField?: `string`,
creativeStatusIds?: `array of numbers`,
platformCreativeTypeIds?: `array of numbers`,
allCreatives?: `boolean`,
groupedCreatives?: `boolean`,
owIds?: `array of numbers`,
allOwIds?: `boolean`,
campaignIds?: `array of numbers`,
startTime?: `number`,
endTime?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Creative Management
Add New Creative
POSTAdd a new Creative by providing the Creative metadata and files. Endpoint accepts a JSON payload with Creative details and supports file uploads in multipart form data. The API handles both the metadata and Creative file uploads simultaneously.
Please refer to MDN Documentation on form data format.
| Query Parameters | |
|---|---|
creativeRequeststring | This parameter accepts a Map of UUIDs to Creative details. Each UUID corresponds to a single Creative. |
creativeFilesarray of strings | Array of Creative files uploaded as multipart files. These files will be used for creating the Creatives. Each file is processed according to its type (image, video, etc.) |
- JSON
- TypeScript
{
"H001": {
"creativeName": "html",
"externalCreativeId": "google_421_dcm_435",
"platformCreativeTypeId": 13,
"creativeSourceType": "HTML",
"creativeSource": "<a href=https://iqm.com/political?utm_medium=rtb&utm_campaign=wreckathon-2024-play-1><img src=https://cdn-cfy-p0.iqm.com/wreckathon/2024/Images/w24-728x90-P.jpg></a>",
"clickUrl": "www.example.com",
"htmlDetails": {
"creativeWidth": 500,
"creativeHeight": 1200
}
}
}
{
"success": true,
"data": {
"successData": {
"PS": "701388"
},
"failedData": {
"PF": "Creative file missing. Please attach the required file. : null"
}
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
successData: {
PS: string;
};
failedData: {
PF: string;
}
}
};
};
};
}
function createCreatives(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives',
params: {
query: {
creativeRequest: `string`,
creativeFiles?: `array of strings`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Request Schema
H001 object | HTML Creative | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I001 object | Image file Creative | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
I002 object | Image URL Creative | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
creativeName string | Creative name | |||||||
externalCreativeId string | External Creative ID | |||||||
platformCreativeTypeId string | Creative Type ID | |||||||
creativeSourceType string | Creative source type Supported values: HTML, FILE, URL | |||||||
creativeSource string | Creative source | |||||||
clickUrl string | Click URL | |||||||
htmlDetails object | HTML details | |||||||
| ||||||||
creativeWidth integer | Creative width (px) |
creativeHeight integer | Creative height (px) |
imageDetails object
imageDetails object properties
pixelUrl string | Pixel URL |
creativeWidth integer | Creative width (px) |
creativeHeight integer | Creative height (px) |
A001 object
A002 object
A003 object
A004 object
A005 object
A006 object
A001, A002, A003, A004, A005, A006 object properties
creativeName string | Creative name | ||||||||||||||||||||||
externalCreativeId string | External Creative ID | ||||||||||||||||||||||
platformCreativeTypeId string | Creative Type ID | ||||||||||||||||||||||
creativeSourceType string | Creative source type Supported values: FILE, URL, VAST_URL, VAST_XML, DAAST_URL, DAAST_XML | ||||||||||||||||||||||
creativeSource string | Creative source | ||||||||||||||||||||||
clickUrl string | Click URL | ||||||||||||||||||||||
audioDetails object | HTML details | ||||||||||||||||||||||
| |||||||||||||||||||||||
duration integer | Audio duration (s) | |||||||||||||
customTracking object | Custom tracking details | |||||||||||||
| ||||||||||||||
startUrl string | Start URL |
firstQuartileUrl string | First quartile URL |
midPointUrl string | Midpoint URL |
thirdQuartileUrl string | Third quartile URL |
completeUrl string | Complete URL |
impressionUrl string | Impression URL |
logoSource string
V001 object
V002 object
V003 object
V004 object
V001, V002, V003, V004, object properties
creativeName string | Creative name | ||||||||||||||||||||||||
externalCreativeId string | External Creative ID | ||||||||||||||||||||||||
platformCreativeTypeId string | Creative Type ID | ||||||||||||||||||||||||
creativeSourceType string | Creative source type Supported values: FILE, URL, VAST_URL, VAST_XML, | ||||||||||||||||||||||||
creativeSource string | Creative source | ||||||||||||||||||||||||
clickUrl string | Click URL | ||||||||||||||||||||||||
videoDetails object | Video details | ||||||||||||||||||||||||
| |||||||||||||||||||||||||
creativeWidth integer | Creative width (px) | |||||||||||||
creativeHeight integer | Creative height (px) | |||||||||||||
duration integer | Video duration (s) | |||||||||||||
customTracking object | Custom tracking details | |||||||||||||
| ||||||||||||||
startUrl string | Start URL |
firstQuartileUrl string | First quartile URL |
midPointUrl string | Midpoint URL |
thirdQuartileUrl string | Third quartile URL |
completeUrl string | Complete URL |
impressionUrl string | Impression URL |
NI001 object
NI002 object
NI001, NI002 object properties
creativeName string | Creative name | |||||||||||||
externalCreativeId string | External Creative ID | |||||||||||||
platformCreativeTypeId string | Creative Type ID | |||||||||||||
creativeSourceType string | Creative source type Supported values: HTML, FILE, URL | |||||||||||||
creativeSource string | Creative source | |||||||||||||
clickUrl string | Click URL | |||||||||||||
imageDetails object | Image details | |||||||||||||
| ||||||||||||||
pixelUrl string | Pixel URL |
nativeDetails object
nativeDetails object properties
title string | Title |
description string | Description |
brandName string | Brand name |
brandIconSourceUrl string | Brand icon source URL |
brandIconHeight integer | Brand icon height (px) |
brandIconWidth integer | Brand icon width (px) |
NV001 object
NV002 object
NV003 object
NV004 object
NV001, NV002, NV003, NV004, object properties
creativeName string | Creative name | ||||||||||||||||||||||||||||||
externalCreativeId string | External Creative ID | ||||||||||||||||||||||||||||||
subMediaType integer | Subcategory of media type | ||||||||||||||||||||||||||||||
platformCreativeTypeId string | Creative Type ID | ||||||||||||||||||||||||||||||
creativeSourceType string | Creative source type Supported values: FILE, URL, VAST_URL, VAST_XML, | ||||||||||||||||||||||||||||||
creativeSource string | Creative source | ||||||||||||||||||||||||||||||
clickUrl string | Click URL | ||||||||||||||||||||||||||||||
videoDetails object | Video details | ||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||
creativeWidth integer | Creative width (px) | |||||||||||||
creativeHeight integer | Creative height (px) | |||||||||||||
duration integer | Video duration (s) | |||||||||||||
customTracking object | Custom tracking details | |||||||||||||
| ||||||||||||||
startUrl string | Start URL |
firstQuartileUrl string | First quartile URL |
midPointUrl string | Midpoint URL |
thirdQuartileUrl string | Third quartile URL |
completeUrl string | Complete URL |
impressionUrl string | Impression URL |
nativeDetails object
nativeDetails object properties
title string | Title | |||||||
description string | Description | |||||||
cta object | Call-to-Action object details | |||||||
| ||||||||
id integer | CTA ID |
ctaText string | CTA display text |
defaultCta boolean | Default CTA for associated Creative |
brandName string
brandIconSourceUrl string
brandIconHeight integer
brandIconWidth integer
thumbnailSourceUrl string
thumbnailHeight integer
thumbnailWidth integer
Response Properties
successData object | Success data | |||
| ||||
PS string | Partial success |
failedData object
failedData object properties
PF string | Partial failure |
Update Creative Details
PATCHUpdate the details of an existing Creative. Users authorized to modify a Creative's properties are: Advertisers, workspaces, or super users. Ownership and edit permissions are validated to ensure request is authorized.
| Path Parameters | |
|---|---|
creativeId integer | Creative ID |
| Request Schema | |
|---|---|
creativeName string | Creative name |
externalCreativeId string | 3rd party ID for Creative |
creativeRejectionReason string | Reason for rejecting Creative if applicable |
creativeRemarksstring | Adds remarks to Creative |
Response Properties
id integer | Creative ID |
message string | Success message |
- JSON
- TypeScript
{
"creativeName": "New creative name",
"externalCreativeId": "3rd party id"
}
{
"success": true,
"data": {
"id": 68798,
"message": "New creative name updated successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
id: number;
message: string;
}
};
};
};
}
function updateCreative(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/crt/creatives/{creativeId}',
params: {
path: {
creativeId: `number`
}
},
requestBody: {
content: {
"application/json": {
creativeName?: `string`,
externalCreativeId?: `string`,
clickUrl?: `string`,
pixelUrl?: `string`,
creativeRemarks?: `string`,
creativeSource?: `string`,
title?: `string`,
description?: `string`,
cta?: {
id?: `number`,
ctaText?: `string`,
defaultCta?: `boolean`,
},
brandName?: `string`,
brandIconSourceUrl?: `string`,
brandIconHeight?: `number`,
brandIconWidth?: `number`,
thumbnailSourceUrl?: `string`,
thumbnailWidth?: `number`,
thumbnailHeight?: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update Creative Status
PATCHUpdate the status of an existing Creative. Users authorized to modify a Creative's properties are: Advertisers, workspaces, or super users. Ownership and edit permissions are validated to ensure request is authorized.
| Request Schema | |
|---|---|
creativeIds array of integers | Creative IDs |
creativeStatusId integer | Creative Status ID |
creativeRejectionReason string | Reason for rejecting Creative if applicable |
Response Properties
message string | Success message |
- JSON
- TypeScript
{
"creativeIds": [
688549
],
"creativeStatusId": 4
}
{
"success": true,
"data": {
"message": "asdf creative updated successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function updateCreativeStatus(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/crt/creatives/update-status',
params: {
path: {
creativeId: `number`
}
},
requestBody: {
content: {
"application/json": {
creativeIds: `array of numbers`,
creativeStatusId: `number`,
creativeRejectionReason?: `string`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Create New Creative Group
POSTCreate a new Creative group and add desired Creatives to the group.
| Request Schema | |
|---|---|
creativeGroupName string | Creative Group Name |
creativeTypeId integer | Creative Type ID |
creativeIds array of integers | Creative IDs |
Response Properties
creativeGroupId integer | Creative group ID |
message string | Success message |
- JSON
- TypeScript
{
"creativeGroupName": "Group Name",
"creativeTypeId": 1,
"creativeIds": [
1,
2,
3
]
}
{
"success": true,
"data": {
"creativeGroupId": 45089,
"message": "testCreatives group created successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
creativeGroupId: number;
message: string;
}
};
};
};
}
function createCreativeGroup(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives/groups',
requestBody: {
content: {
"application/json": {
creativeGroupName: `string`,
creativeIds: `array of numbers`,
creativeTypeId: `number`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Delete Creative Group
DELETEDelete Creative group(s) by ID. Also removes mapping of Creatives from deleted group(s).
| Request Schema | |
|---|---|
creativeGroupIds string | Comma separated Creative Group IDs to delete |
Response Properties
message string | Success message |
- JSON
- TypeScript
{
"success": true,
"data": {
"message": "creativeGroup group deleted successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function deleteCreativeGroups(): Promise<Responses> {
const options = {
method: 'DELETE',
url: 'https://api.iqm.com/api/v3/crt/creatives/groups',
params: {
query: {
creativeGroupIds: `string`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update Creative Groups
POSTAdd or remove Creatives from Creative groups.
| Request Schema | |
|---|---|
creativeIds array of integers | Creative IDs to add or remove from group |
creativeGroupIds array of integers | Creative Group ID to add Creatives to or remove Creatives from |
actionType string | Supported values: add or remove |
Response Properties
message string | Success message |
- JSON
- TypeScript
{
"creativeIds": [
123456,
123457
],
"creativeGroupIds": [
1,
2
],
"actionType": "ADD"
}
{
"success": true,
"data": {
"message": "2 creatives added to Group_06 group successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function modifyCreativesInGroups(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/crt/creatives/groups/modify-creatives',
requestBody: {
content: {
"application/json": {
creativeIds: `array of numbers`,
creativeGroupIds: `array of numbers`,
actionType: "ADD" | "REMOVE";
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}