Audience API
The Audience API allows you to create different types of Audiences for Healthcare Campaigns.
The following table describes some of the Audience types:
| Type | Description |
|---|---|
| Matched Audience | Upload a CSV or XLSX file with Audience details which is then matched with IQM's user database to create a custom Audience segment. |
| ABM Audience | Account-Based Marketing for healthcare Campaigns. |
| ICT Audience | Integrated Care Team Audience are a type of Matched Audience intended for healthcare-audience expansion. |
| Geofarmed Audience | Define an Audience by a custom geographical area. |
| Contextual Audience | IQM adds users to an Audience when they visit sites featuring specified keywords or URLs. |
More Resources
See our full Audience API documentation or review these Help Center articles for more information on how to use Audiences for your healthcare Campaigns:
- What is NPI Matching?
- Matched Audience
- Account Based Marketing (ABM) Audience
- Integrated Care Team (ICT) Audience Overview
- Create a Contextual Audience (Healthcare)
- Create a Geofarmed Audience (Healthcare)
- Audience Targeting
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 |
Healthcare Data Details
Healthcare Titles List
GETGet a list of healthcare titles.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
searchField string | Filter results by search field |
Response Properties
id integer | Title ID |
displayName string | Title name |
displayOrder integer | Display order |
- JSON
- TypeScript
{
"success": true,
"data": {
"titleList": [
{
"id": 1,
"displayName": "Healthcare Title 1",
"displayOrder": 1
},
{
"id": 2,
"displayName": "Healthcare Title 2",
"displayOrder": 20
}
],
"filteredRecords": 5,
"totalRecords": 3294
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
titleList: {
id: number;
displayName: string;
displayOrder: number;
}[];
filterRecords: number;
totalRecords: number;
}
};
};
};
}
function getHealthcareTitleList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/titles',
params: {
query: {
dataProviderIds: `number[]`,
pageNo?: `number`,
noOfEntries?: `number`,
searchField?: `string`,
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Specialties List
GETGet a list of healthcare specialties.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
searchField string | Filter results by search field |
Response Properties
id integer | Specialty ID |
displayName string | Specialty name |
displayOrder integer | Display order |
- JSON
- TypeScript
{
"success": true,
"data": {
"specialityList": [
{
"id": 1,
"displayName": "Healthcare Speciality 1",
"displayOrder": 1
},
{
"id": 2,
"displayName": "Healthcare Speciality 2",
"displayOrder": 20
}
],
"filteredRecords": 5,
"totalRecords": 3294
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
specialityList: {
id: number;
displayName: string;
displayOrder: number;
}[];
filterRecords: number;
totalRecords: number;
}
};
};
};
}
function getHealthcareSpecialityList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/specialities',
params: {
query: {
dataProviderIds: `number[]`,
pageNo?: `number`,
noOfEntries?: `number`,
searchField?: `string`,
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Systems List
GETGet a list of healthcare systems.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
searchField string | Filter results by search field |
Response Properties
id integer | System ID |
displayName string | System name |
displayOrder integer | Display order |
- JSON
- TypeScript
{
"success": true,
"data": {
"healthcareSystemList": [
{
"id": 1,
"displayName": "Healthcare System 1",
"displayOrder": 1
},
{
"id": 2,
"displayName": "Healthcare System 2",
"displayOrder": 20
}
],
"filteredRecords": 5,
"totalRecords": 3294
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
healthcareSystemList: {
id: number;
displayName: string;
displayOrder: number;
}[];
filterRecords: number;
totalRecords: number;
}
};
};
};
}
function getHealthcareSystemList(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/healthcare-systems',
params: {
query: {
dataProviderIds: `number[]`,
pageNo?: `number`,
noOfEntries?: `number`,
searchField?: `string`,
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Data
POSTGet a healthcare data list by specified filters.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
healthCareSystemIds array of integers | Healthcare system IDs |
accountNameIds array of integers | Account name IDs |
accountTypeIds array of integers | Healthcare Account Type IDs |
accountSubTypeIds array of integers | Account subtype IDs |
countryIds array of integers | Country IDs |
stateIds array of integers | State IDs |
cityIds array of integers | City IDs |
titleIds array of integers | Title IDs |
specialityIds array of integers | Healthcare Specialty IDs |
ids array of integers | IDs |
Response Properties
id integer | Audience ID |
cost integer | Charges for a specific segment |
reach integer | Unique reach of segments (i.e. Audience reach) |
healthCareSystemId integer | Healthcare System ID |
healthCareSystemName string | Healthcare System name |
accountId integer | Healthcare Account ID |
accountName string | Healthcare account name |
accountTypeId integer | Healthcare Account Type ID |
accountTypeName string | Healthcare Account type name |
accountSubTypeId integer | Healthcare Account Subtype ID |
accountSubTypeName string | Healthcare Account subtype name |
titleId integer | Healthcare Title ID |
titleName string | Healthcare title name |
specialityId integer | Healthcare Specialty ID |
specialityName string | Healthcare specialty name |
countryId integer | Country ID |
countryName string | Country name |
stateId integer | State ID |
stateName string | State name |
cityId integer | City ID |
cityName string | City name |
dataProviderId integer | Data Provider ID |
dataProviderName string | Data provider name |
- JSON
- TypeScript
{
"dataProviderIds": [
1
],
"healthCareSystemIds": [
40100004,
40100007
],
"accountIds": [
40208104,
40628423
],
"accountTypeIds": [
40300003
],
"accountSubTypeIds": [
40400001,
40400010
],
"countryIds": [
30100001
],
"stateIds": [
30200028,
30200043
],
"cityIds": [
30430356,
30447825,
30447952,
30448122
],
"titleIds": [
40500099
],
"specialityIds": [
40500014,
40500086
],
"ids": [
1,
2,
3
],
"pageNo": 1,
"noOfEntries": 2
}
{
"success": true,
"data": {
"totalRecords": 52265,
"filteredRecords": 5,
"healthCareData": [
{
"id": 1,
"cost": 10,
"reach": 1,
"healthCareSystemId": 40100004,
"healthCareSystemName": "ABCD PEDIATRICS",
"accountId": 40628423,
"accountName": "Stepping Stone Pediatrics PA",
"accountTypeId": 40300003,
"accountTypeName": "Group Practice",
"accountSubTypeId": 40400010,
"accountSubTypeName": "Telephone/E-Mail Order Pharmacy",
"titleId": 40500099,
"titleName": "MD",
"specialityId": 40500086,
"specialityName": "Gastroenterology",
"countryId": 30100001,
"countryName": "United States",
"stateId": 30200043,
"stateName": "Tennessee",
"cityId": 30447952,
"cityName": "Franklin, TN",
"dataProviderId": 1,
"dataProviderName": "HealthCarelink"
},
{
"id": 2,
"cost": 10,
"reach": 1,
"healthCareSystemId": 40100004,
"healthCareSystemName": "ABCD PEDIATRICS",
"accountId": 40628423,
"accountName": "Stepping Stone Pediatrics PA",
"accountTypeId": 40300003,
"accountTypeName": "Group Practice",
"accountSubTypeId": 40400010,
"accountSubTypeName": "Telephone/E-Mail Order Pharmacy",
"titleId": 40500099,
"titleName": "MD",
"specialityId": 40500086,
"specialityName": "Gastroenterology",
"countryId": 30100001,
"countryName": "United States",
"stateId": 30200043,
"stateName": "Tennessee",
"cityId": 30447825,
"cityName": "Brentwood, TN",
"dataProviderId": 1,
"dataProviderName": "HealthCarelink"
}
]
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
totalRecords: number;
filteredRecords: number;
healthCareData: {
id: number;
cost: number;
reach: number;
healthCareSystemId: number;
healthCareSystemName: string;
accountId: number;
accountName: string;
accountTypeId: number;
accountTypeName: string;
accountSubTypeId: number;
accountSubTypeName: string;
titleId: number;
titleName: string;
specialityId: number;
specialityName: string;
countryId: number;
countryName: string;
stateId: number;
stateName: string;
cityId: number;
cityName: string;
dataProviderId: number;
dataProviderName: string;
}[];
}
};
};
};
}
function getHealthCareData(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data',
requestBody: {
content: {
"application/json": {
searchBy?: `string[]`,
ids?: `number[]`,
dataProviderIds?: `number[]`,
healthCareSystemIds?: `number[]`,
accountIds?: `number[]`,
accountTypeIds?: `number[]`,
accountSubTypeIds?: `number[]`,
titleIds?: `number[]`,
specialityIds?: `number[]`,
countryIds?: `number[]`,
stateIds?: `number[]`,
cityIds?: `number[]`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: `ASC` | `DESC`,
offset?: `number`,
}
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Statistics
POSTGet healthcare statistics details.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
healthCareSystemIds array of integers | Healthcare system IDs |
accountNameIds array of integers | Account name IDs |
accountTypeIds array of integers | Healthcare Account Type IDs |
accountSubTypeIds array of integers | Account subtype IDs |
countryIds array of integers | Country IDs |
stateIds array of integers | State IDs |
cityIds array of integers | City IDs |
titleIds array of integers | Title IDs |
specialityIds array of integers | Healthcare Specialty IDs |
ids array of integers | IDs |
Response Properties
healthSystem integer | Healthcare System ID |
account integer | Healthcare Account ID |
accountType integer | Healthcare Account Type ID |
npiReach integer | NPI reach |
speciality integer | Healthcare Specialty ID |
- JSON
- TypeScript
{
"dataProviderIds": [
1
],
"healthCareSystemIds": [
40100004,
40100007
],
"accountIds": [
40208104,
40628423
],
"accountTypeIds": [
40300003
],
"accountSubTypeIds": [
40400001,
40400010
],
"countryIds": [
30100001
],
"stateIds": [
30200028,
30200043
],
"cityIds": [
30430356,
30447825,
30447952,
30448122
],
"titleIds": [
40500099
],
"specialityIds": [
40500014,
40500086
],
"ids": [
1,
2,
3
],
"pageNo": 1,
"noOfEntries": 2
}
{
"success": true,
"data": {
"healthSystem": 2,
"account": 4,
"accountType": 8,
"npiReach": 25513,
"speciality": 3
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
healthSystem: number;
account: number;
accountType: number;
npiReach: number;
speciality: number;
}
};
};
};
}
function getHealthCareDataStatistics(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/statistics',
requestBody: {
content: {
"application/json": {
searchBy?: `string[]`,
ids?: `number[]`,
dataProviderIds?: `number[]`,
healthCareSystemIds?: `number[]`,
accountIds?: `number[]`,
accountTypeIds?: `number[]`,
accountSubTypeIds?: `number[]`,
titleIds?: `number[]`,
specialityIds?: `number[]`,
countryIds?: `number[]`,
stateIds?: `number[]`,
cityIds?: `number[]`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: `ASC` | `DESC`,
offset?: `number`,
}
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Account Types
POSTGet a list of healthcare account types.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
healthCareSystemIds array of integers | Healthcare system IDs |
accountNameIds array of integers | Account name IDs |
searchField string | Filter results by search field |
Response Properties
id integer | Account ID |
displayName string | Account name |
displayOrder integer | Display order |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 20,
"searchField": "Sample Text",
"dataProviderIds": [
1
],
"healthcareSystemIds": [
1,
2,
3
],
"accountNameIds": [
4,
5,
6
]
}
{
"success": true,
"data": {
"accountTypeList": [
{
"id": 1,
"displayName": "Account Type 1",
"displayOrder": 1
},
{
"id": 2,
"displayName": "Account Type 2",
"displayOrder": 2
}
],
"filteredRecords": 5,
"totalRecords": 3294
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
accountTypeList: {
id: number;
displayName: string;
displayOrder: number;
}[];
filteredRecords: number;
totalRecords: number;
}
};
};
};
}
function getAccountTypeList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/account-types',
requestBody: {
content: {
"application/json": {
searchBy?: `string[]`,
ids?: `number[]`,
dataProviderIds?: `number[]`,
verticalId: `number`,
healthCareSystemIds?: `number[]`,
accountNameIds?: `number[]`,
accountTypeIds?: `number[]`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: `ASC` | `DESC`,
offset?: `number`,
}
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Account Subtypes
POSTGet a list of healthcare account subtypes.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
healthCareSystemIds array of integers | Healthcare system IDs |
accountNameIds array of integers | Account name IDs |
searchField string | Filter results by search field |
accountTypeIds array of integers | Healthcare Account Type IDss |
Response Properties
id integer | Account subtype ID |
displayName string | Account sub name |
displayOrder integer | Display order |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 20,
"searchField": "Sample Text",
"dataProviderIds": [
1
],
"healthcareSystemIds": [
1,
2,
3
],
"accountNameIds": [
4,
5,
6
],
"accountTypeIds": [
7,
8,
9
]
}
{
"success": true,
"data": {
"accountSubTypeList": [
{
"id": 1,
"displayName": "Account Subtype 1",
"displayOrder": 1
},
{
"id": 2,
"displayName": "Account Subtype 2",
"displayOrder": 2
}
],
"filteredRecords": 5,
"totalRecords": 3294
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
accountSubTypeList: {
id: number;
displayName: string;
displayOrder: number;
}[];
filteredRecords: number;
totalRecords: number;
}
};
};
};
}
function getAccountSubTypeList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/account-subtypes',
requestBody: {
content: {
"application/json": {
searchBy?: `string[]`,
ids?: `number[]`,
dataProviderIds?: `number[]`,
verticalId: `number`,
healthCareSystemIds?: `number[]`,
accountNameIds?: `number[]`,
accountTypeIds?: `number[]`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: `ASC` | `DESC`,
offset?: `number`,
}
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Healthcare Account Names
POSTGet a list of healthcare account names.
| Query Parameters | |
|---|---|
dataProviderIds array of integers | Data Provider IDs |
pageNo integer | Page number of retrieved data, default: 0 |
noOfEntries integer | Number of entries returned per page, default: 50 |
healthCareSystemIds array of integers | Healthcare system IDs |
searchField string | Filter results by search field |
Response Properties
id integer | Account name ID |
displayName string | Account name |
displayOrder integer | Display order |
- JSON
- TypeScript
{
"pageNo": 1,
"noOfEntries": 20,
"searchField": "Sample text",
"dataProviderIds": [
1
],
"healthcareSystemIds": [
1,
2,
3
]
}
{
"success": true,
"data": {
"accountNameList": [
{
"id": 1,
"displayName": "Account Name 1",
"displayOrder": 1
},
{
"id": 2,
"displayName": "Account Name 2",
"displayOrder": 20
}
],
"filteredRecords": 5,
"totalRecords": 3294
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
accountNameList: {
id: number;
displayName: string;
displayOrder: number;
}[];
filteredRecords: number;
totalRecords: number;
}
};
};
};
}
function getAccountNameList(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/abm/healthcare-data/account-names',
requestBody: {
content: {
"application/json": {
searchBy?: `string[]`,
ids?: `number[]`,
dataProviderIds?: `number[]`,
verticalId: `number`,
healthCareSystemIds?: `number[]`,
accountNameIds?: `number[]`,
accountTypeIds?: `number[]`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: `ASC` | `DESC`,
offset?: `number`,
}
}
}
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Matched Audiences
Matched Audience Details
GETGet Matched Audience details by ID.
| Path Parameter | |
|---|---|
audienceId string | Matched Audience ID |
| Query Parameters | |
|---|---|
campaignTargetingRequired boolean | (Optional) Flag to indicate if campaign targeting details are returned, default: false |
userDetailsRequired boolean | (Optional) Flag to indicate if user details are returned, default: false |
Response Properties
audienceId integer | Audience ID |
audienceName string | Audience name |
audienceSubtypeId integer | Audience subtype ID |
audienceStatusId integer | Audience status ID |
cpm number | Cost per thousand impressions |
owId integer | Organization Workspace ID |
createdByUowId integer | Created by User Organization Workspace ID |
createdAt integer | Unix epoch creation date (milliseconds) |
reach integer | Audience reach |
s3FileName string | Audience file name |
s3Url string | S3 URL of the audience file |
fileRowCount integer | Number of rows in the file |
matchRate number | The percentage of matched records compared to a reference set |
dataPartnerId integer | Data partner ID |
modifiedAt string | Modified date (ISO 8601 format) |
approvalAccess boolean | Indicates if user has access to approve |
editAccess boolean | Indicates if user has edit access for the requested resource |
whitelistedCampaignIds array | Array of whitelisted Campaign IDs |
blacklistedCampaignIds array | Array of blacklisted Campaign IDs |
- JSON
- TypeScript
{
"success": true,
"data": {
"audienceId": 1143824,
"audienceName": "Download - Impression _NPI Nurse_iqvia_Filtered",
"audienceSubtypeId": 4,
"audienceStatusId": 3,
"cpm": 25,
"owId": 20489,
"createdByUowId": 0,
"createdAt": 1762502664000,
"reach": 242,
"s3FileName": "17_iltered9644451186956185605.csv",
"s3Url": "s3://test-Client=204389/Audience=1143824/1762502664252_3524Download___Impression__NPI_Nurse_iqvia_Filtered9644451186956185605.csv",
"fileRowCount": 1829,
"matchRate": 13.23,
"dataPartnerId": 5,
"modifiedAt": "2025-11-07T02:42:33.000+00:00",
"approvalAccess": false,
"editAccess": true
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
audienceId: number;
audienceName: string;
audienceSubtypeId: number;
audienceStatusId: number;
cpm: number;
owId: number;
createdByUowId: number;
createdAt: number;
reach: number;
s3FileName: string;
s3Url: string;
fileRowCount: number;
matchRate: number;
dataPartnerId: number;
modifiedAt: string;
approvalAccess: boolean;
editAccess: boolean;
whitelistedCampaignIds: number[];
blacklistedCampaignIds: number[];
};
};
};
};
}
function getMatchedAudienceDetails(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/matched/{audienceId}',
params: {
path: {
audienceId: `number`
},
query: {
campaignTargetingRequired: `boolean`,
userDetailsRequired: `boolean`,
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Create Matched Audience
POSTCreate a Matched Audience by uploading a file with user data. The metadata is sent as a JSON string in the audienceRequest form data field, and the file is uploaded as multipart/form-data in the file form data field.
For more information on Matched Audiences and how they can serve your Healthcare, Political, or specialty needs, refer to our Help Center articles.
| Request Schema | |
|---|---|
audienceRequest form data required | Audience metadata details |
file multipart/form-data required | File to be uploaded |
audienceRequest Properties
audienceName string | Audience Name | |||||||
fileRowCount integer | Number of rows in the file | |||||||
fileColumnCount integer | Number of columns in the file | |||||||
audienceSubtypeId integer | Audience Subtype ID | |||||||
columnMappings array | Array of column mapping objects | |||||||
| ||||||||
columnId integer | Column ID |
fileColumnName string | File column name |
dataFormatId integer | Data Format ID |
dataPartnerId integer
columnCombinationId integer
consentGiven boolean
audienceRequest sample object for Political Matched Audience
{
"audienceName": "matched-audience-example-fs",
"fileRowCount": 5,
"fileColumnCount": 10,
"columnMappings": [
{
"columnId": 5,
"fileColumnName": "l2-voter-id",
"dataFormatId": null
},
{
"columnId": 6,
"fileColumnName": "email",
"dataFormatId": 1
}
],
"dataPartnerId": 2,
"columnCombinationId": 11
}
audienceRequest sample object for Healthcare Matched Audience
{
"audienceName": "Revamped Healthcare Matched Audience 02",
"dataPartnerId": 7,
"audienceSubtypeId": 3,
"columnMappings": [
{
"columnId": 18,
"fileColumnName": "NPI_ID"
}
],
"fileRowCount": 19,
"fileColumnCount": 1,
"columnCombinationId": 14,
"consentGiven": true
}
POST /api/v3/audience/matched HTTP/1.1
Host: api.iqm.com
Authorization: Bearer 0ed52da8-24ab-44b1-bc88-7ea03a090d24
X-IAA-OW-ID: 1
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary7MA4YWxkTrZu0gW
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="audienceRequest"
Content-Type: application/json
{"audienceName":"Healthcare Patient Audience 2025","dataPartnerId":7,"audienceSubtypeId":3,"columnCombinationId":14,"fileRowCount":1200,"fileColumnCount":3,"consentGiven":true,"columnMappings":[{"columnId":18,"fileColumnName":"NPI_ID"},{"columnId":19,"fileColumnName":"first_name"},{"columnId":20,"fileColumnName":"last_name"}]}
------WebKitFormBoundary7MA4YWxkTrZu0gW
Content-Disposition: form-data; name="file"; filename="patient-data.csv"
Content-Type: text/csv
[Binary CSV file data]
------WebKitFormBoundary7MA4YWxkTrZu0gW--
{
"success": true,
"data": {
"matchedAudienceId": 12345,
"message": "Matched audience created successfully"
}
}
Update Matched Audience
PATCHUpdate a Matched Audience.
| Path Parameter | |
|---|---|
audienceId integer | Matched Audience ID |
| Request Schema | |
|---|---|
dataCost number | Data cost |
audienceStatusId integer | Audience Status ID |
rejectionReason string | Reason for rejection if updating status to Rejected |
Response Properties
id integer | Audience ID |
message string | Success message |
- JSON
- TypeScript
{
"dataCost": 10,
"audienceStatusId": 4,
"rejectionReason": "Insufficient data quality."
}
{
"statusCode": 200,
"responseObject": {
"id": 1,
"message": "Your changes have been saved successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
statusCode: number;
responseObject: {
id: number;
message: string;
};
};
};
};
}
function EditMatchedAudience(): Promise<Responses> {
const options = {
method: 'PATCH',
url: 'https://api.iqm.com/api/v3/audience/matched/{audienceId}',
params: {
path: {
audienceId: `string`
}
},
requestBody: {
content: {
"application/json": {
dataCost: `number`,
audienceStatusId: `number`,
rejectionReason: `string`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Refresh Matched Audience
PUTRematch/refresh an existing Matched Audience's data. Rematching will retrigger the Audience matching process, updating the Audience's reach and matchRate details. The Audience must be eligible for rematch based on its status, last rematch time, and other criteria.
Refer to our Help Center articles for more information.
Rematching an Audience and changing its reach can impact Campaign performance. Exercise caution when rematching an active Audience.
| Path Parameter | |
|---|---|
audienceId integer | Matched Audience ID to be rematched |
Response Properties
audienceId integer | Audience ID |
message string | Success message |
{
"success": true,
"data": {
"audienceId": 1119083,
"message": "Test audience rematched successfully via Re-Match"
}
}
{
"success": false,
"errorObjects": [
{
"error": "No active audience found with the given Id.",
"field": "audienceId"
}
]
}
Data Partners List for Matched Audience
GETReturns a list of data partners relevant for Audiences based on vertical and optional subtype.
- For advertiser users, vertical is derived from the logged-in user's OWID.
- For workspace/super users, a vertical ID should be passed explicitly.
- Audience type ID is mandatory to fetch data partners.
- If a subtype ID is passed, it must be valid for the vertical.
- Data partners shown are based on active configurations.
| Query Parameters | |
|---|---|
audienceTypeId integer required | Audience Type ID |
audienceSubtypeId integer | Audience Subtype ID |
verticalId integer | Vertical ID |
Response Properties
id integer | Data partner ID |
name string | Data partner name |
order integer | Display order |
displayName string | Data partner display name |
cpm integer | Cost per mille (CPM) |
logoUrl string | URL to data partner logo |
- JSON
- TypeScript
{
"success": true,
"data": [
{
"id": 7,
"name": "hl_npi_id",
"order": 6,
"displayName": "Healthlink ID",
"cpm": 10,
"logoUrl": "https://cdn.com/data_partner/hld.png"
},
{
"id": 8,
"name": "data360_npi_id",
"order": 7,
"displayName": "Data360 ID",
"cpm": 15,
"logoUrl": "https://cdn.com/data_partner/D360.png"
}
]
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json;charset=UTF-8": {
success: boolean;
data: {
id: number;
label: string;
keyName: string;
audienceColumnId: number;
}[];
};
};
};
}
function getMatchedAudienceDataPartner(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/static/matched/data-partner',
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
ABM Audiences
ABM Audience Details
GETGet ABM Audience details by ID.
| Path Parameter | |
|---|---|
audienceId integer | ABM Audience ID |
Response Properties
id integer | Audience ID | |||||||||||||||||||||||||
name string | Audience name | |||||||||||||||||||||||||
status string | Audience status | |||||||||||||||||||||||||
audienceTypeId integer | Audience Type ID | |||||||||||||||||||||||||
createdAt integer | Unix epoch timestamp of Audience creation | |||||||||||||||||||||||||
partnerName string | Partner name | |||||||||||||||||||||||||
partnerLogoUrl string | Partner logo URL | |||||||||||||||||||||||||
uniques integer | Count of unique Audiences reached | |||||||||||||||||||||||||
dataCost integer | Fees charged by the platform if the Audience is used in any Campaign | |||||||||||||||||||||||||
filters object | Frequency type | |||||||||||||||||||||||||
| ||||||||||||||||||||||||||
dataProviderIds array of integers | Data Provider IDs |
accountIdsarray of integers | Account IDs |
accountTypeIdsarray of integers | Healthcare Account Type IDs |
accountSubTypeIdsarray of integers | Healthcare Account Subtype IDss |
countryIdsarray of integers | Country IDs |
stateIdsarray of integers | State IDs |
cityIdsarray of integers | City IDs |
titleIdsarray of integers | Title IDs |
specialityIdsarray of integers | Speciality IDs |
idsarray of integers | IDs |
pageNoarray of integers | Page number of retrieved data |
noOfEntriesarray of integers | Number of entries returned per page |
- JSON
- TypeScript
{
"success": true,
"data": {
"id": 1124243,
"name": "Test ABM audience",
"status": "Processing",
"audienceTypeId": 9,
"createdAt": 1739261114,
"partnerName": "Healthlink",
"partnerLogoUrl": "www.sample.com",
"uniques": 1000,
"dataCost": 10,
"healthCareDataMappingIds": [
13572,
13575,
32777
],
"filters": {
"ids": [
13572,
13575,
32777
],
"dataProviderIds": [
1
],
"healthCareSystemIds": [
1,
2,
3
],
"accountIds": [
1,
2,
3
],
"accountTypeIds": [
1,
2,
3
],
"accountSubTypeIds": [
1,
2,
3
],
"titleIds": [
1,
2,
3
],
"specialityIds": [
1,
2,
3
],
"countryIds": [
30100001
],
"stateIds": [
1,
2,
3
],
"cityIds": [
1,
2,
3
],
"pageNo": 1,
"noOfEntries": 10000
}
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
id: number;
name: string;
status: string;
audienceTypeId: number;
createdAt: number;
partnerName: string;
partnerLogoUrl: string;
uniques: number;
dataCost: number;
healthCareDataMappings: number[];
filters: {
id: number[];
dataProviderIds: number[];
healthCareSystemIds: number[];
accountIds: number[];
accountTypeIds: number[];
accountSubTypeIds: number[];
titleIds: number[];
specialtyIds: number[];
countryIds: number[];
stateIds: number[];
cityIds: number[];
pageNo: number;
noOfEntries: number;
}
}
};
};
};
}
function getAccountBasedAudienceDetailsByAudienceId(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/abm/{audienceId}',
params: {
path: {
audienceId: `number`
}
},
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
ABM Audience statistics
GETGet ABM Audience statistics by ID.
| Path Parameter | |
|---|---|
audienceId integer | ABM Audience ID |
Response Properties
healthSystem integer | Healthcare System ID |
account integer | Healthcare Account ID |
accountType integer | Healthcare Account Type ID |
npiReach integer | NPI reach |
speciality integer | Healthcare Specialty ID |
- JSON
- TypeScript
{
"success": true,
"data": {
"healthSystem": 2,
"account": 4,
"accountType": 8,
"npiReach": 25513,
"speciality": 3
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
healthSystem: number;
account: number;
accountType: number;
npiReach: number;
specialty: number;
}
};
};
};
}
function getABMAudienceHealthCareStatisticsByAudienceId(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/abm/{audienceId}/healthcare-data-statistics',
params: {
path: {
audienceId: `number`
}
},
}
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Create ABM Audience
POSTCreate an ABM Audience.
| Request Schema | ||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
audienceName string | Audience name | |||||||||||||||||||||||||
healthCareDataMappingIds array of integers | Frequency | |||||||||||||||||||||||||
dataProviderId integer | Data provider ID | |||||||||||||||||||||||||
filters object | Filters | |||||||||||||||||||||||||
| ||||||||||||||||||||||||||
dataProviderIds array of integers | Data Provider IDs |
accountIdsarray of integers | Account IDs |
accountTypeIdsarray of integers | Healthcare Account Type IDs |
accountSubTypeIdsarray of integers | Healthcare Account Subtype IDss |
countryIdsarray of integers | Country IDs |
stateIdsarray of integers | State IDs |
cityIdsarray of integers | City IDs |
titleIdsarray of integers | Title IDs |
specialityIdsarray of integers | Specialty IDs |
idsarray of integers | IDs |
pageNoarray of integers | Page number of retrieved data |
noOfEntriesarray of integers | Number of entries returned per page |
Response Properties
message string | Success message |
- JSON
- TypeScript
{
"audienceName": "HealthCare Innovators",
"healthCareDataMappingIds": [
1,
2,
3
],
"dataProviderId": 1,
"filters": {
"dataProviderIds": [
1
],
"healthCareSystemIds": [
40100004,
40100007
],
"accountIds": [
40208104,
40628423
],
"accountTypeIds": [
40300003
],
"accountSubTypeIds": [
40400001,
40400010
],
"countryIds": [
30100001
],
"stateIds": [
30200028,
30200043
],
"cityIds": [
30430356,
30447825,
30447952,
30448122
],
"titleIds": [
40500099
],
"specialityIds": [
40500014,
40500086
],
"ids": [
1,
2,
3
],
"pageNo": 1,
"noOfEntries": 2
}
}
{
"success": true,
"data": {
"message": "HealthCare Innovators audience created successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
message: string;
}
};
};
};
}
function saveAbmAudience(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/abm',
requestBody: {
content: {
"application/json": {
audienceName?: `string`,
healthCareDataMappingIds?: `number[]`,
filters?: {
searchBy?: `string[]`,
ids?: `number[]`,
dataProviderIds?: `number[]`,
healthCareSystemIds?: `number[]`,
accountIds?: `number[]`,
accountTypeIds?: `number[]`,
accountSubTypeIds?: `number[]`,
titleIds?: `number[]`,
specialityIds?: `number[]`,
countryIds?: `number[]`,
stateIds?: `number[]`,
cityIds?: `number[]`,
pagination?: `string`,
pageNo?: `number`,
noOfEntries?: `number`,
sortBy?: `string`,
searchField?: `string`,
order?: `ASC` | `DESC`,
offset?: `number`,
},
dataProviderId?: `number`,
}
}
}
},
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
ICT Audiences
Get ICT Audience Details
GETGet ICT Audience details by ID.
| Path Parameter | |
|---|---|
audienceId integer | ICT Audience ID |
Response Properties
audienceId integer | Audience ID | |||||||
audienceName string | Audience name | |||||||
createdAt integer | Unix epoch timestamp of Audience creation | |||||||
audienceSubtypeId integer | Audience Subtype ID | |||||||
reach integer | Count of unique Audiences reached | |||||||
dataPartnerId integer | Data Partner ID | |||||||
fileRowCount integer | Number of rows in uploaded file | |||||||
matchRate integer | Percentage of matched records | |||||||
cpm integer | Cost per thousand impressions | |||||||
audienceStatusId integer | Audience status ID | |||||||
s3FileName string | S3 file name | |||||||
s3Url string | S3 file URL | |||||||
extensionAudiences array of objects | List of extension Audiences | |||||||
| ||||||||
audienceId integer | Extension Audience ID |
audienceName string | Extension Audience name |
audienceStatusId integer | Extension Audience status ID |
columnMappings array of objects
columnMappings object properties
columnId integer | Column ID |
fileColumnName string | Column name from uploaded file |
dataFormatId integer | Data format ID |
owId integer
createdByUowId integer
{
"success": true,
"data": {
"audienceId": 110110,
"audienceName": "ictm-123",
"createdAt": 1767803546490,
"audienceSubtypeId": 3,
"reach": 3,
"dataPartnerId": 7,
"fileRowCount": 5,
"matchRate": 20,
"cpm": 10,
"audienceStatusId": 3,
"s3FileName": "1767803546585_healthcare_ictm_audience_example.csv",
"s3Url": "s3://ictm-aud-bucket/1767803546585_healthcare_ictm_audience_example.csv",
"extensionAudiences": [
{
"audienceId": 110111,
"audienceName": "ictm-123_Ext_Nurse",
"audienceStatusId": 1
},
{
"audienceId": 110112,
"audienceName": "ictm-123_Ext_Non-NPI Nurse",
"audienceStatusId": 3
}
],
"columnMappings": [
{
"columnId": 3,
"fileColumnName": "phone",
"dataFormatId": 1
}
],
"owId": 203615,
"createdByUowId": 200180
}
}
ICT Audience Subtypes and Extensions
GETGet list of ICT Audience subtypes and their supported extension subtypes.
| Query Parameters | |
|---|---|
audienceTypeIds array of integers | Audience Type IDs |
Response Properties
audienceSubTypes array of objects | List of Audience subtypes | ||||||||||||||||||||||
| |||||||||||||||||||||||
id integer | Audience subtype ID | |||||||||
name string | Audience subtype name | |||||||||
order integer | Display order | |||||||||
displayName string | Audience subtype display name | |||||||||
extensionAudiencesSubtypes array of objects | List of supported extension Audience subtypes | |||||||||
| ||||||||||
id integer | Extension Audience subtype ID |
name string | Extension Audience subtype name |
order integer | Display order |
displayName string | Extension Audience subtype display name |
{
"success": true,
"data": {
"audienceSubTypes": [
{
"id": 1,
"name": "Healthcare",
"order": 1,
"displayName": "Healthcare",
"extensionAudiencesSubtypes": [
{
"id": 10,
"name": "Nurse Outreach",
"order": 1,
"displayName": "Nurse Outreach"
}
]
}
]
}
}
Create ICT Audience
POSTCreate a new ICT Audience.
| Request Schema | |||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
audienceRequest object | Audience request object | ||||||||||||||||||||||||||
| |||||||||||||||||||||||||||
audienceName string | Audience name | |||||||
fileRowCount integer | Number of rows in uploaded file | |||||||
fileColumnCount integer | Number of columns in uploaded file | |||||||
columnMappings array of objects | List of column mappings | |||||||
| ||||||||
columnId integer | Column ID |
fileColumnName string | Column name from uploaded file |
dataFormatId integer | Data Format ID |
dataPartnerId integer
columnCombinationId integer
audienceSubtypeId integer
extensionAudienceSubtypeIds array of integers
file binary
Response Properties
audienceId integer | Audience ID |
extensionAudienceIds array of integers | List of extension Audience IDs |
message string | Status message |
{
"audienceRequest": {
"audienceName": "Sample xyz",
"fileRowCount": 5,
"fileColumnCount": 10,
"columnMappings": [
{
"columnId": 18,
"fileColumnName": "npi-id",
"dataFormatId": null
},
{
"columnId": 2,
"fileColumnName": "email",
"dataFormatId": 1
},
{
"columnId": 3,
"fileColumnName": "phone-sha256",
"dataFormatId": 4
}
],
"dataPartnerId": 7,
"columnCombinationId": 32,
"audienceSubtypeId": 3,
"extensionAudienceSubtypeIds": [
4,
5
]
},
"file": "BINARY FILE"
}
{
"success": true,
"data": {
"audienceId": 12345,
"extensionAudienceIds": [
12346,
12347
],
"message": "Sample xyz and 2 extended audiences created successfully"
}
}
ICT Audience Count by Data Partner
POSTGet count of ICT Audiences by data partner ID.
| Request Schema | |
|---|---|
audienceTypeIds array of integers | Audience Type IDs |
owIds array of integers | Organization Workspace IDs |
searchField string | Search filter string |
Response Properties
dataPartnerId integer | Data Partner ID |
audienceCount integer | Count of Audiences for the data partner |
{
"audienceTypeIds": [
2,
4
],
"owIds": [
201427,
201865
],
"searchField": "DP"
}
{
"success": true,
"data": [
{
"dataPartnerId": 1,
"audienceCount": 111
},
{
"dataPartnerId": 2,
"audienceCount": 222
}
]
}
Geofarmed Audiences
Geofarmed Audience Details
GETGet Geofarmed Audience Details by ID.
| Path Parameter | |
|---|---|
audienceId string | Geofarmed Audience ID |
Response Properties
audienceId integer | Audience ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
audienceName string | Audience name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
audienceStatusId integer | Audience status ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
createdAt integer | Creation timestamp (epoch seconds) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
reach integer | Audience reach | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
cpm number | Cost per thousand impressions | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
audienceSubtypeId integer | Audience Subtype ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataPartnerId integer | Data partner ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
dataPartnerMetrics array of objects | Data partner metrics | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
id integer | Data partner ID |
reach integer | Reach for this data partner |
frequency integer
frequencyTypeId integer
startDate integer
endDate integer
timezoneId integer
timeRange object
locations object
locations object properties
country integer | Country ID | |||||||||||||||||||||||||||||||||||||||||||||
includedobject | Included locations object | |||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||
zipCodesarray of strings | Zip codes | ||||||||||||||||||||||||||||||||||||
customAreasarray of objects | Custom areas | ||||||||||||||||||||||||||||||||||||
locationIds array of integers | Location IDs | ||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
latitude integer | Latitude | |||||
longitudeinteger | Longitude | |||||
radiusinteger | Radius (miles) | |||||
addressstring | Addresses to add to custom area | |||||
locationIdinteger | Location ID | |||||
polypathobject | A set of coordinates defining the boundary of the custom area | |||||
| ||||||
lat integer | Latitude |
lnginteger | Longitude |
isIncludedboolean
cidstring
sidstring
typestring
unitstring
cdIdinteger
sdIdinteger
hdIdinteger
excludedobject
excluded object properties
zipCodesarray of strings | Zip codes | ||||||||||||||||||||||||||||||||||||
customAreasarray of objects | Custom areas | ||||||||||||||||||||||||||||||||||||
locationIds array of integers | Location IDs | ||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
latitude integer | Latitude | |||||
longitudeinteger | Longitude | |||||
radiusinteger | Radius (miles) | |||||
addressstring | Address | |||||
locationIdinteger | Location ID | |||||
polypathobject | A set of coordinates defining the boundary of the custom area | |||||
| ||||||
lat integer | Latitude |
lnginteger | Longitude |
isIncludedboolean
cidstring
sidstring
typestring
unitstring
cdIdinteger
sdIdinteger
hdIdinteger
locationFileIdsarray of integers
bulkLocationDetails object
bulkLocationDetails object properties
fileName string | File name | |||||||||||||||||||||||
fileType string | File type | |||||||||||||||||||||||
validLocations array of objects | Valid locations | |||||||||||||||||||||||
| ||||||||||||||||||||||||
latitude number | Latitude |
longitude number | Longitude |
radius number | Radius |
address string | Address |
locationId integer | Location ID |
cid string | Country ID |
sid string | State ID |
cdId integer | Congressional District ID |
sdId integer | Senate District ID |
hdId integer | House District ID |
isIncluded boolean | Is included flag |
invalidLocations null
locationRejectionReasons null
campaignId null
id integer
rowCount null
invalidLocationsCount null
duplicateLocationsCount null
- JSON
- TypeScript
{
"success": true,
"data": {
"audienceId": 1141873,
"audienceName": "my geo check 3",
"audienceStatusId": 1,
"createdAt": 1754997589,
"reach": 14300,
"cpm": 10,
"audienceSubtypeId": 3,
"dataPartnerId": 7,
"dataPartnerMetrics": [
{
"id": 7,
"reach": 14300
},
{
"id": 10,
"reach": 14142
},
{
"id": 8,
"reach": 4989
}
],
"frequency": 1,
"frequencyTypeId": 1,
"startDate": 1752465600,
"endDate": 1752552000,
"timezoneId": 29,
"timeRange": null,
"locations": {
"included": {
"zipCodes": [
"03060"
],
"customAreas": [
{
"latitude": 36.03264396648448,
"longitude": -119.88024262579326,
"radius": 0.5,
"address": "24M9+3W Kettleman City, CA, USA",
"locationId": 0,
"cid": "US",
"sid": "CA",
"type": "circle",
"unit": "mile",
"cdId": 0,
"sdId": 0,
"hdId": 0,
"isIncluded": true
},
{
"latitude": 36.030047897646504,
"longitude": -119.85904244573955,
"radius": 0.5,
"address": "24JR+29 Kettleman City, CA, USA",
"locationId": 0,
"cid": "US",
"sid": "CA",
"type": "circle",
"unit": "mile",
"cdId": 0,
"sdId": 0,
"hdId": 0,
"isIncluded": true
},
{
"latitude": 36.03107268797965,
"longitude": -79.36266450079326,
"radius": 31.99,
"address": "Graham, NC 27253, USA",
"locationId": 0,
"polypath": [
{
"lat": 36.38721903107804,
"lng": -79.62633637579326
},
{
"lat": 35.53354668242086,
"lng": -79.97789887579326
},
{
"lat": 35.67646553441582,
"lng": -78.83532075079326
},
{
"lat": 36.52859869353844,
"lng": -78.74743012579326
}
],
"cid": "US",
"sid": "NC",
"type": "custom",
"unit": "mile",
"cdId": 0,
"sdId": 0,
"hdId": 0,
"isIncluded": true
},
{
"latitude": 34.4534306784404,
"longitude": -80.72496918829326,
"radius": 20.21,
"address": "Camden, SC 29020, USA",
"locationId": 0,
"polypath": [
{
"lat": 34.59837718611232,
"lng": -80.41735200079326
},
{
"lat": 34.59837718611232,
"lng": -81.03258637579326
},
{
"lat": 34.30848417076847,
"lng": -81.03258637579326
},
{
"lat": 34.30848417076847,
"lng": -80.41735200079326
}
],
"cid": "US",
"sid": "SC",
"type": "square",
"unit": "mile",
"cdId": 0,
"sdId": 0,
"hdId": 0,
"isIncluded": true
}
],
"locationIds": [
1252824,
1252825
]
},
"excluded": {
"zipCodes": [],
"customAreas": [],
"locationIds": []
},
"locationFileIds": [
17063
],
"country": 30100001
},
"bulkLocationDetails": {
"17063": {
"fileName": "bulk-location-example.csv",
"fileType": "location",
"validLocations": [
{
"latitude": 40.7128,
"longitude": -74.006,
"radius": 0.5,
"address": "230 Broadway, New York, NY 10007, USA",
"locationId": 1252824,
"cid": "US",
"sid": "NY",
"cdId": 0,
"sdId": 0,
"hdId": 0,
"isIncluded": true
},
{
"latitude": 36.7783,
"longitude": -119.4179,
"radius": 1,
"address": "2630 Croydon Drive, Sanger, CA 93657, USA",
"locationId": 1252825,
"cid": "US",
"sid": "CA",
"cdId": 0,
"sdId": 0,
"hdId": 0,
"isIncluded": true
}
],
"invalidLocations": null,
"locationRejectionReasons": null,
"campaignId": null,
"id": 17063,
"rowCount": null,
"invalidLocationsCount": null,
"duplicateLocationsCount": null
}
}
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
audienceId: number;
audienceName: string;
audienceStatusId: number;
createdAt: number;
reach: number;
cpm: number;
audienceSubtypeId: number;
dataPartnerId: number;
dataPartnerMetrics: {
id: number;
reach: number;
}[];
frequency: number;
frequencyTypeId: number;
startDate: number;
endDate: number;
timezoneId: number;
timeRange: {
[key: string]: string;
} | null;
locations: {
included: {
zipCodes: string[];
customAreas: {
latitude: number;
longitude: number;
radius: number;
address: string;
locationId: number;
cid: string;
sid: string;
type: string;
unit: string;
cdId: number;
sdId: number;
hdId: number;
isIncluded: boolean;
polypath?: {
lat: number;
lng: number;
}[];
}[];
locationIds: number[];
};
excluded: {
zipCodes: string[];
customAreas: {
latitude: number;
longitude: number;
radius: number;
address: string;
locationId: number;
cid: string;
sid: string;
type: string;
unit: string;
cdId: number;
sdId: number;
hdId: number;
isIncluded: boolean;
polypath?: {
lat: number;
lng: number;
}[];
}[];
locationIds: number[];
};
locationFileIds: number[];
country: number;
};
bulkLocationDetails: {
[key: string]: {
fileName: string;
fileType: string;
validLocations: {
latitude: number;
longitude: number;
radius: number;
address: string;
locationId: number;
cid: string;
sid: string;
cdId: number;
sdId: number;
hdId: number;
isIncluded: boolean;
}[];
invalidLocations: null;
locationRejectionReasons: null;
campaignId: null;
id: number;
rowCount: null;
invalidLocationsCount: null;
duplicateLocationsCount: null;
};
};
};
};
};
};
}
function GetGeofarmedAudienceDetails(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/geo-farmed/{audienceId}',
params: {
path: {
audienceId: `string`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Create Geofarmed Audience
POSTCreate a Geofarmed Audience.
| Request Schema | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
audienceName string | Audience name | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
frequency integer | The frequency of visit to the geographical location (1-10), based on frequencyTypeId | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
frequencyTypeId integer | Frequency Type ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
timezoneId integer | Timezone ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate integer | Unix epoch start date, in milliseconds | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
endDate integer | Unix epoch end date, in milliseconds | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
timeRange object | Name-Value pairs of day of the week (e.g. Monday: 1, Tuesday: 2, etc.) and an object containing a time range (see example below this table) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
timeRangeWithTimezone object | Alternative time range configuration with timezone support | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
audienceSubtypeIds array of integers | Audience Subtype IDs | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
removedLocationsIds array of integers | Removed location IDs, as specified in the uploaded location file | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
locations object | Locations object | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
country integer | Country ID | |||||||||||||||||||||||||||||||||||||||||||||||||||||
includedobject | Included locations object | |||||||||||||||||||||||||||||||||||||||||||||||||||||
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||
zipCodesarray of strings | Zip codes | ||||||||||||||||||||||||||||||||||||||||||||
customAreasarray of objects | Custom areas | ||||||||||||||||||||||||||||||||||||||||||||
locationIds array of integers | Location IDs | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
latitude integer | Latitude | |||||
longitudeinteger | Longitude | |||||
radiusinteger | Radius | |||||
addressstring | Address | |||||
stateShortNamestring | State short name | |||||
countryShortNamestring | Country short name | |||||
locationIdinteger | Location ID | |||||
rejectionReasonstring | Rejection reason (if applicable) | |||||
polypathobject | A set of coordinates defining the boundary of the custom area | |||||
| ||||||
lat integer | Latitude |
lnginteger | Longitude |
placemarkNamestring
cidstring
sidstring
typestring
unitstring
cdIdinteger
sdIdinteger
hdIdinteger
isIncludedboolean
excludedobject
excluded object properties
zipCodesarray of strings | Zip codes | ||||||||||||||||||||||||||||||||||||||||||||
customAreasarray of objects | Custom areas | ||||||||||||||||||||||||||||||||||||||||||||
locationIds array of integers | Location IDs | ||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||
latitude integer | Latitude | |||||
longitudeinteger | Longitude | |||||
radiusinteger | Radius | |||||
addressstring | Address | |||||
stateShortNamestring | State short name | |||||
countryShortNamestring | Country short name | |||||
locationIdinteger | Location ID | |||||
rejectionReasonstring | Rejection reason (if applicable) | |||||
polypathobject | A set of coordinates defining the boundary of the custom area | |||||
| ||||||
lat integer | Latitude |
lnginteger | Longitude |
placemarkNamestring
cidstring
sidstring
typestring
unitstring
cdIdinteger
sdIdinteger
hdIdinteger
isIncludedboolean
locationFileIdsarray of integers
timeRange example
"timeRange": {
"0": [
[
"19:00:00",
"22:00:00"
]
],
"1": [
[
"09:00:00",
"12:00:00"
],
[
"15:00:00",
"18:00:00"
]
],
"2": [
[
"04:00:00",
"11:00:00"
]
],
"4": [
[
"06:00:00",
"12:00:00"
]
],
"6": [
[
"01:00:00",
"10:00:00"
]
]
},
Response Properties
id integer | Audience ID |
message string | Success message |
- JSON
- TypeScript
{
"audienceName": "Healthcare Professionals NYC",
"frequency": 5,
"frequencyTypeId": 2,
"startDate": 1697040000,
"endDate": 1699641600,
"timezoneId": 1,
"audienceSubtypeIds": [
3,
4
],
"timeRange": {
"0": [
[
"09:00:00",
"17:00:00"
]
],
"1": [
[
"10:00:00",
"18:00:00"
]
]
},
"locations": {
"country": 1,
"included": {
"zipCodes": [
"10001",
"10002",
"10003"
],
"customAreas": [
{
"type": "circle",
"latitude": 40.7128,
"longitude": -74.006,
"radius": 5,
"unit": "mile"
}
]
},
"locationFileIds": [
123
]
}
}
{
"success": true,
"data": {
"audienceIds": [
1142280
],
"message": "Test_aud audience created successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
id: number;
message: string;
};
};
};
};
}
function CreateGeofarmedAudience(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/geo-farmed/add',
requestBody: {
content: {
"application/json": {
audienceName: `string`,
frequency: `number`,
frequencyType: `number`,
startDate: `number`,
endDate: `number`,
timezone: `number`,
timeRange: {
[key: string]: `string`,
},
removedLocationsIds: `number[]`,
locations: {
country: `number`,
included: {
locationIds: `number[]`,
states: `number[]`,
counties: `number[]`,
cities: `number[]`,
stateSenates: `number[]`,
stateHouses: `number[]`,
congressionalDistricts: `number[]`,
zipCodes: `number[]`,
customAreas: {
latitude: `number`,
longitude: `number`,
radius: `number`,
address: `string`,
locationId: `number`,
isIncluded: `boolean`,
cid: `string`,
sid: `string`,
type: `string`,
unit: `string`,
cdId: `number`,
sdId: `number`,
hdId: `number`,
polypath?: {
lat: `number`,
lng: `number`,
}[],
}[],
},
excluded: {
locationIds: `number[]`,
cities: `number[]`,
counties: `number[]`,
stateSenates: `number[]`,
stateHouses: `number[]`,
congressionalDistricts: `number[]`,
zipCodes: `number[]`,
customAreas: {
latitude: `number`,
longitude: `number`,
radius: `number`,
address: `string`,
locationId: `number`,
isIncluded: `boolean`,
cid: `string`,
sid: `string`,
type: `string`,
unit: `string`,
cdId: `number`,
sdId: `number`,
hdId: `number`,
polypath?: {
lat: `number`,
lng: `number`,
}[],
}[],
},
locationFileIds: number[],
}
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Contextual Audience
Contextual Audience Details
GETGet Contextual Audience details by ID.
| Path Parameter | |
|---|---|
audienceId string | Audience ID |
Response Properties
audienceId integer | Audience ID | |||||
audienceName string | Audience name | |||||
audienceStatusId integer | Audience status ID | |||||
cpm number | Cost per thousand impressions | |||||
reach integer | Audience reach | |||||
createdAt integer | Unix epoch creation date (milliseconds) | |||||
keywords array of strings | Keywords | |||||
urls array of strings | URLs | |||||
dataCollectionMethodId integer | Data collection method ID | |||||
dataCollectionDays integer | Data collection days | |||||
frequency integer | Frequency | |||||
dataPartnerId integer | Data partner ID | |||||
dataPartnerMetrics array of objects | Data partner metrics | |||||
| ||||||
id integer | Data partner ID |
reach integer | Reach for this data partner |
- JSON
- TypeScript
{
"success": true,
"data": {
"audienceId": 1141259,
"audienceName": "Test_aud_contextual",
"audienceStatusId": 8,
"cpm": 1.5,
"reach": 0,
"createdAt": 1753773402000,
"keywords": [
"Test"
],
"urls": [
"http://iqm.com"
],
"dataCollectionMethodId": 2,
"dataCollectionDays": 10,
"frequency": 5,
"dataPartnerId": 1,
"dataPartnerMetrics": [
{
"id": 1,
"reach": 1000
},
{
"id": 2,
"reach": 1000
}
]
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
audienceId: number;
audienceName: string;
audienceStatusId: number;
cpm: number;
reach: number;
createdAt: number;
keywords: string[];
urls: string[];
dataCollectionMethodId: number;
dataCollectionDays: number;
frequency: number;
dataPartnerId: number;
dataPartnerMetrics: {
id: number;
reach: number;
}[];
};
};
};
};
}
function getContextualAudience(): Promise<Responses> {
const options = {
method: 'GET',
url: 'https://api.iqm.com/api/v3/audience/contextual/{audienceId}',
params: {
path: {
audienceId: `number`
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}
Create Contextual Audience
POSTCreate a Contextual Audience.
Data Collection Period: Timeframe during which a user visits the publisher(s) relevant to one or more keywords or URLs added to the contextual Audience.
The start date of a Contextual Audience must be within the last 180 days.
Contextual Audiences support a Static or Dynamic data collection period of up to 90 days.
| Request Schema | |
|---|---|
audienceName string | Audience name |
keywords array of strings | Keywords to generate contextual Audience |
startDate integer | Unix epoch start date, in milliseconds (required if data collection method is static) |
endDate integer | Unix epoch start date, in milliseconds (required if data collection method is static) |
frequency integer | The number of times a user visits the publisher(s) relevant to one or more keywords or URLs added to the contextual Audience. Integer between 1-10 |
urls array of strings | The publisher sites visited by a user |
timezoneId integer | Timezone ID specifies data collection start time |
dataCollectionMethodId integer | static (1) collection period in a fixed set of dates dynamic (2) data collection period over a rolling timeframe, with data refreshes every 24 hours |
dataCollectionDays integer | Number of days for data collection timeframe when data collection method is dynamic (maximum value: 90) |
audienceSubTypes integer | List of Audience Subtype IDs to further define the Contextual Audience |
Response Properties
audienceIds array of integers | Audience IDs |
message string | Success message |
- JSON
- TypeScript
{
"audienceName": "Test_aud",
"frequency": 5,
"startDate": 1750737600000,
"endDate": 1753329599000,
"keywords": [
"Test"
],
"urls": [
"http://iqm.com"
],
"timezoneId": 29,
"dataCollectionMethodId": 1,
"audienceSubtypes": [
2,
3
]
}
{
"success": true,
"data": {
"audienceIds": [
1142280
],
"message": "Test_aud audience created successfully"
}
}
See TypeScript Prerequisites for usage.
import {
getInstance
} from "prerequisites"
const axios = getInstance();
interface Responses {
200: {
content: {
"application/json": {
success: boolean;
data: {
id: number;
message: string;
};
};
};
};
}
function createContextualAudiences(): Promise<Responses> {
const options = {
method: 'POST',
url: 'https://api.iqm.com/api/v3/audience/contextual',
requestBody: {
content: {
"application/json": {
audienceName: `string`,
keywords?: `string[]`,
urls?: `string[]`,
frequency?: `number`,
startDate?: `number`,
endDate?: `number`,
timezoneId?: `number`,
dataCollectionMethodId: `number`,
dataCollectionDays?: `number`,
audienceSubtypes?: `number[]`
}
}
}
};
return axios.request(options).then(({ data }: { data: Responses }) => data);
}