Creative API
Overview
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://app.iqm.com/creatives/example-files/sample_html_creatives.csv
Learn more about Creatives 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 |
Creative Details
Creative Details by ID
GET /api/v3/crt/creatives/{creativeId}Get Creative details by ID.
Path Parameters | |
---|---|
creativeId integer | Creative ID |
- 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 prerequisites
for TypeScript 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://app.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
POST /api/v3/crt/creatives/listGet a list of Creatives with their details.
Request Schema | |
---|---|
pageNo integer | Number of pages for retrieved data |
noOfEntries integer | Maximum number of entries per page |
sortBy string | Sorts by ascending (+) or descending (-) |
searchField string | Search results by keyword |
platformCreativeTypeIds array of integers | Creative type IDs |
creativeStatusIds array of integers | Creative status IDs |
creativeIds array of integers | Creative IDs |
creativeGroupId integer | Creative group ID |
campaignIds array of integers | Campaign IDs |
startTime integer | Unix epoch timestamp (in milliseconds) of start time |
endTime integer | Unix epoch timestamp (in milliseconds) of end time |
owIds integer | (Super/Workspace only) Organization Workspace IDs |
allOwIds boolean | (Super/Workspace only) Filters records with all allowed OW IDs if true, prioritizes records over owIds |
includeCreativeSourceDetails boolean | (Advertiser only) Flag indicating whether to include Creative source details (true) or not (false) |
includeOrgnizationDetails boolean | Flag indicating whether to include Organization details (true) or not (false) |
includeUserDetails boolean | Flag indicating whether to include user details (true) or not (false) |
- 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 prerequisites
for TypeScript 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://app.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
GET /api/v3/crt/creatives/{creativeId}/creative-campaign-detailsGet details of a Creative by ID along with its associated Campaigns. Includes the option of retrieving modeling details.
Path Parameters | |
---|---|
creativeId integer | Creative ID |
Query Parameters | |
---|---|
includeModelingInfo boolean | Indicates whether modeling details should be included (true) or not, default (false) |
- 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 prerequisites
for TypeScript 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://app.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
POST /api/v3/crt/creatives/groups/listGet a list of Creative groups by desired filters.
Request Schema | |
---|---|
pageNo integer | Number of pages for retrieved data, default value: 1 |
noOfEntries integer | Maximum number of entries per page, default value: 20 |
sortBy string | Sorts by ascending (+) or descending (-), default value: -creativeGroupId |
searchField string | Search results by keyword: groupId, groupName, creativeId, name, or 3rd party ID |
platformCreativeTypeIds array of integers | Creative type IDs |
creativeStatusIds array of integers | Creative status IDs |
creativeGroupIds array of integers | Creative group IDs |
startTime integer | Unix epoch timestamp (in milliseconds) of start time |
endTime integer | 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 |
- 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 prerequisites
for TypeScript 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://app.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
POST /api/v3/crt/creatives/count-by-typeGet a count of Creatives by Creative type.
Request Schema | |
---|---|
searchField string | Search results by keyword |
- 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 prerequisites
for TypeScript 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://app.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
POST /api/v3/crt/creatives/count-by-statusGet count of Creatives by Creative status.
Request Schema | |
---|---|
searchField string | Search results by keyword: groupId, groupName, creativeId, name, or 3rd party ID |
platformCreativeTypeIds array of integers | Creative type IDs |
creativeStatusIds array of integers | Creative status IDs |
creativeIds array 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) |
startTime integer | Unix epoch timestamp (in milliseconds) of start time |
endTime integer | Unix epoch timestamp (in milliseconds) of end time |
campaignIds array of integers | 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 |
- 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 prerequisites
for TypeScript 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://app.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
POST /api/v3/crt/creativesAdd 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 | |
---|---|
creativeRequest string | This parameter accepts a Map of UUIDs to Creative details. Each UUID corresponds to a single Creative. The metadata includes information such as Creative name, external Creative ID, Creative type, and click URL. Additionally, the Creative files are sent as multipart form data |
creativeFiles array 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
{
"success": true,
"data": {
"successData": {
"PS": "701388"
},
"failedData": {
"PF": "Creative file missing. Please attach the required file. : null"
}
}
}
See prerequisites
for TypeScript 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://app.iqm.com/api/v3/crt/creatives',
params: {
query: {
creativeRequest: `string`,
creativeFiles?: `array of strings`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update Creative Details
PATCH /api/v3/crt/creatives/{creativeId}Update 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 |
creativeRemarks string | Adds remarks to Creative |
- JSON
- TypeScript
{
"creativeName": "New creative name",
"externalCreativeId": "3rd party id"
}
{
"success": true,
"data": {
"id": 68798,
"message": "New creative name updated successfully"
}
}
See prerequisites
for TypeScript 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://app.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
PATCH /api/v3/crt/creatives/update-statusUpdate 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 |
- JSON
- TypeScript
{
"creativeIds": [
688549
],
"creativeStatusId": 4
}
{
"success": true,
"data": {
"message": "asdf creative updated successfully"
}
}
See prerequisites
for TypeScript 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://app.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
POST /api/v3/crt/creatives/groupsCreate 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 |
- JSON
- TypeScript
{
"creativeGroupName": "Group Name",
"creativeTypeId": 1,
"creativeIds": [
1,
2,
3
]
}
{
"success": true,
"data": {
"creativeGroupId": 45089,
"message": "testCreatives group created successfully"
}
}
See prerequisites
for TypeScript 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://app.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
DELETE /api/v3/crt/creatives/groupsDelete Creative group(s) by ID. Also removes mapping of Creatives from deleted group(s).
Request Schema | |
---|---|
creativeGroupIds string | Comma separated group IDs to be deleted |
- JSON
- TypeScript
{
"success": true,
"data": {
"message": "creativeGroup group deleted successfully"
}
}
See prerequisites
for TypeScript 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://app.iqm.com/api/v3/crt/creatives/groups',
params: {
query: {
creativeGroupIds: `string`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Modify Creatives
POST /api/v3/crt/creatives/group/modify-creativesAdd or remove Creatives from Creative groups.
Request Schema | |
---|---|
creativeIds array of integers | Creative IDs to add or remove from group |
creativeGroupIds array of integers | Group IDs to add Creatives to or remove Creatives from |
action string | Supported values: add or remove |
- JSON
- TypeScript
{
"creativeIds": [
123456,
123457
],
"creativeGroupIds": [
1,
2
],
"action": "ADD"
}
{
"success": true,
"data": {
"message": "2 creatives added to Group_06 group successfully"
}
}
See prerequisites
for TypeScript 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://app.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);
}
Update Creative Group Name
PATCH /api/v3/crt/creatives/groups/{creativeGroupId}Update a Creative group name.
Path Parameters | |
---|---|
creativeGroupId integer | Creative group ID |
Request Schema | |
---|---|
creativeGroupName string | Creative group name |
- JSON
- TypeScript
{
"creativeGroupName": "Group1"
}
{
"success": true,
"data": {
"message": "Group1 group renamed successfully"
}
}
See prerequisites
for TypeScript usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function updateCreativeGroupName(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://app.iqm.com/api/v3/crt/creatives/groups/{creativeGroupId}',
params: {
path: {
creativeGroupId: `number`
}
},
requestBody: {
content: {
"application/json": {
creativeGroupName: `string`,
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Duplicate Creatives
POST /api/v3/crt/creatives/duplicateDuplicate one or more Creatives. You may also include click URL Conversion in the duplication.
Request Schema | |
---|---|
creativeIds array of integers | Creative IDs to duplicate |
clickUrl string | Click URL to include in duplication |
- JSON
- TypeScript
{
"creativeIds": [
130141,
130142
],
"clickUrl": "www.example.com"
}
{
"success": true,
"data": {
"message": "Native image 3 creative duplicated successfully"
}
}
See prerequisites
for TypeScript usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function CreateDuplicateCreatives(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://app.iqm.com/api/v3/crt/creatives/duplicate',
requestBody: {
content: {
"application/json": {
creativeIds: `array of numbers`,
clickUrl?: `string`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Duplicate Creative Group
POST /api/v3/crt/creatives/groups/duplicate/{creativeGroupId}Duplicate Creative group by ID. Also duplicates existing Creatives within group.
Path Parameters | |
---|---|
creativeGroupId integer | Creative group ID to duplicate |
- JSON
- TypeScript
{
"success": true,
"data": {
"duplicatedCreativeGroupId": 45089,
"message": "testCreatives group duplicated successfully"
}
}
{
"success": true,
"data": {
"duplicatedCreativeGroupId": 45089,
"message": "testCreatives group duplicated successfully"
}
}
See prerequisites
for TypeScript usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
duplicatedCreativeGroupId: number;
message: string;
}
};
};
};
}
function duplicateCreativeGroup(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://app.iqm.com/api/v3/crt/creatives/groups/duplicate/{creativeGroupId}',
params: {
path: {
creativeGroupId: `number`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Compress Uploaded Image Creative
POST /api/v3/crt/image/compressCompress uploaded image Creatives. Also validates file types and size, and returns list of compressed image URLs.
Request Schema | |
---|---|
files array of strings | Image files to compress |
- JSON
- TypeScript
{
"success": true,
"data": [
{
"fileName": "sample_1MB_img1.jpg",
"originalSizeInBytes": 1042592,
"compressedSizeInBytes": 138572,
"compressedFileUrl": "https://tmpd3vsekqsh1zre3k8n-stage.s3.amazonaws.com/images/1730986298115-1730986300299.jpg"
},
{
"fileName": "Screenshot 2024-08-27 at 6.46.23 PM.png",
"originalSizeInBytes": 916933,
"compressedSizeInBytes": 230436,
"compressedFileUrl": "https://tmpd3vsekqsh1zre3k8n-stage.s3.amazonaws.com/images/1730986298110-1730986302423.png"
}
]
}
See prerequisites
for TypeScript usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success?: boolean;
errorObjects?: {
error?: string;
reason?: string;
field?: string;
}[];
data?: Record<string, never>;
};
};
};
}
function compressImages(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://app.iqm.com/api/v3/crt/image/compress',
params: {
path: {
files: `array of strings`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update Pixel URL
PATCH /api/v3/crt/creatives/pixel-urlUpdate pixel URL Conversion for Creative(s).
For further information see the complete documentation:
Request Schema | |
---|---|
creativeIds array of integers | Creative IDs to update Conversion |
pixelUrl string | Pixel URL |
- JSON
- TypeScript
{
"creativeIds": [
1,
2
],
"pixelUrl": "http://app.example.com"
}
{
"success": true,
"data": {
"message": "Pixel URL updated successfully for 2 creatives"
}
}
See prerequisites
for TypeScript usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function UpdatePixelUrl(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://app.iqm.com/api/v3/crt/creatives/pixel-url',
requestBody: {
content: {
"application/json": {
pixelUrl?: `string`,
creativeIds: `array of numbers`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Update Click URL
PATCH /api/v3/crt/creatives/click-urlUpdate click URL Conversion for Creative(s).
For further information see the complete documentation:
Request Schema | |
---|---|
creativeIds array of integers | Creative IDs to update Conversion |
clickUrl string | Pixel URL |
- JSON
- TypeScript
{
"creativeIds": [
639021
],
"clickUrl": "http://www.iqm.com"
}
{
"success": true,
"data": {
"message": "Click URL updated successfully for TEST creative"
}
}
See prerequisites
for TypeScript usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
headers: {
[name: string]: unknown;
};
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function updateCreativeClickUrl(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://app.iqm.com/api/v3/crt/creatives/click-url',
requestBody: {
content: {
"application/json": {
clickUrl?: `string`,
creativeIds: `array of numbers`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
More Creative Details
Get Creative Types List
GET /api/v3/crt/master/static/creative-typesGet a list of Creative types.
Query Parameters | |
---|---|
displayAllType boolean | Flag to add all Creative type in the results |
searchField string | Search results by keyword |
creativeTypeIds array of integers | Filter results by Creative type IDs |
- JSON
- TypeScript
{
"success": true,
"data": {
"totalRecords": 6,
"creativeTypeList": [
{
"id": 0,
"name": "all",
"order": 0,
"displayName": "All",
"rtbCreativeTypeId": null
},
{
"id": 11,
"name": "Image",
"order": 100,
"displayName": "Image",
"rtbCreativeTypeId": 1
},
{
"id": 13,
"name": "HTML",
"order": 100,
"displayName": "HTML",
"rtbCreativeTypeId": 1
},
{
"id": 14,
"name": "Video",
"order": 100,
"displayName": "Video",
"rtbCreativeTypeId": 3
},
{
"id": 15,
"name": "Native",
"order": 100,
"displayName": "Native",
"rtbCreativeTypeId": 4
},
{
"id": 17,
"name": "Audio",
"order": 100,
"displayName": "Audio",
"rtbCreativeTypeId": 2
}
],
"filteredRecords": 6
}
}
See prerequisites
for TypeScript 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;
name: string;
order: number;
displayName: string;
rtbCreativeTypeId: number;
}[];
}
};
};
};
}
function creativeTypeList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://app.iqm.com/api/v3/crt/master/static/creative-types',
params: {
query?: {
displayAllType?: `boolean`,
searchField?: `string`,
creativeTypeIds?: `string`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get Creative Status List
GET /api/v3/crt/master/static/creative-statusGet a list of Creative statuses.
Query Parameters | |
---|---|
displayAllStatusOption boolean | Flag to add all Creative status in the results |
- JSON
- TypeScript
{
"success": true,
"data": {
"creativeStatusList": [
{
"id": 1,
"name": "pending",
"order": 1,
"displayName": "Pending"
},
{
"id": 2,
"name": "running",
"order": 2,
"displayName": "Running"
},
{
"id": 3,
"name": "paused",
"order": 3,
"displayName": "Paused"
},
{
"id": 5,
"name": "rejected",
"order": 4,
"displayName": "Rejected"
},
{
"id": 4,
"name": "deleted",
"order": 5,
"displayName": "Deleted"
}
],
"totalRecords": 7,
"filteredRecords": 7
}
}
See prerequisites
for TypeScript 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;
name: string;
order: number;
displayName: string;
}[];
}
};
};
};
}
function creativeStatusList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://app.iqm.com/api/v3/crt/master/static/creative-status',
params: {
query?: {
displayAllStatusOption?: `boolean`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Get CTA Details
GET /api/v3/crt/master/cta/listGet list of CTA details from the database.
Query Parameters | |
---|---|
showOnlyDefault boolean required | Shows only default CTA if true, otherwise shows all CTA |
- JSON
- TypeScript
{
"success": true,
"data": {
"ctaDetailsList": [
{
"id": 1,
"ctaText": "Learn More",
"defaultCta": true
},
{
"id": 2,
"ctaText": "Buy Now",
"defaultCta": false
},
{
"id": 3,
"ctaText": "Sign Up",
"defaultCta": false
}
],
"totalRecords": 3,
"filteredRecords": 3
}
}
See prerequisites
for TypeScript 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;
ctaDetailsList: {
id: number;
ctaText: string;
defaultCta: boolean;
}[];
}
};
};
};
}
function ctaDetailsList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://app.iqm.com/api/v3/crt/master/cta/list',
params: {
query?: {
showOnlyDefault: `string`,
searchField?: `string`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}