Planner API
This page covers the methods and endpoints associated with Political Proposal Planners. With the Planner API you can create, retrieve, update, and manage Proposal Planners for political Campaigns.
Political Proposal Planner Details
Political Planner Resource Properties
Plan Resource Properties
id integer | Plan ID | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
name string | Plan name | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
objectiveId integer | Plan Objective ID | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
totalBudget number | Total plan budget | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
details object | Plan details object | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
startDate integer | Unix epoch start date, in milliseconds |
endDate integer | Unix epoch end date, in milliseconds |
timezoneId integer | Timezone ID specifies data collection start time |
frequencyCap integer | Frequency cap |
statusId integer
cva object
cva object properties
id integer | CVA ID |
equation string | CVA segment equation |
stateIds array of integers | State IDs |
segmentIds array of integers | CVA Segment IDs |
reach integer | CVA reach |
targeting object
targeting object properties
whiteListedLocation object | Whitelisted location targeting | ||||||||||||||||||
| |||||||||||||||||||
country integer | Country ID |
states array of integers | State IDs |
dma array of integers | DMA IDs |
city array of integers | City IDs |
county array of integers | County IDs |
congressionalDistrict array of integers | Congressional District IDs |
stateHouse array of integers | State House IDs |
stateSenate array of integers | State Senate IDs |
zipCodes array of integers | Zip Codes |
blackListedLocation object
device object
device object properties
deviceTypeIds array of integers | Device Type IDs |
channelTypeIds array of integers | Channel Type IDs |
inventory object
inventory object properties
openExchange object | Open Exchange targeting |
inventoryGroupIds array of integers | Inventory Group IDs |
creative object
creative object properties
creativeTypeIds array of integers | Creative Type IDs |
isTvAutoBuying boolean | Indicates CTV auto-buying is enabled |
whitelistedAudiences array of integers
blacklistedAudiences array of integers
prebidSegments array of integers
audienceSegments array of integers
advanced object
advanced object properties
splitTypeId integer | Split Type ID |
locations array of integers | Targeting Type IDs for locations |
devices array of integers | Device Type IDs |
inventoryGroupIds array of integers | Inventory Group IDs |
audienceTypes array of integers | Audience Type IDs |
creatives array of integers | Creative Type IDs |
Proposal Resource Properties
id integer | Proposal ID | ||||||||||||||||||||||||||||||||||||
name string | Proposal name | ||||||||||||||||||||||||||||||||||||
startTime integer | Unix epoch start date, in milliseconds | ||||||||||||||||||||||||||||||||||||
endTime integer | Unix epoch end date, in milliseconds | ||||||||||||||||||||||||||||||||||||
statusId integer | Plan Status ID | ||||||||||||||||||||||||||||||||||||
ioId integer | Insertion Order ID | ||||||||||||||||||||||||||||||||||||
reach integer | Estimated reach | ||||||||||||||||||||||||||||||||||||
impressions integer | Estimated impressions | ||||||||||||||||||||||||||||||||||||
budget number | Proposal budget | ||||||||||||||||||||||||||||||||||||
frequencyCap integer | Frequency cap | ||||||||||||||||||||||||||||||||||||
maxReach integer | Maximum reach | ||||||||||||||||||||||||||||||||||||
maxImpressions integer | Maximum impressions | ||||||||||||||||||||||||||||||||||||
maxBudget number | Maximum budget | ||||||||||||||||||||||||||||||||||||
cpm number | Cost per thousand impressions | ||||||||||||||||||||||||||||||||||||
timeZoneId integer | Timezone ID | ||||||||||||||||||||||||||||||||||||
timeZoneName string | Timezone name | ||||||||||||||||||||||||||||||||||||
proposedCampaigns array of objects | Proposed Campaigns | ||||||||||||||||||||||||||||||||||||
| |||||||||||||||||||||||||||||||||||||
id integer | Campaign ID |
name string | Campaign name |
startTime integer | Unix epoch start date, in milliseconds |
endTime integer | Unix epoch end date, in milliseconds |
creativeTypeId integer | Creative Type ID |
duration integer | Duration in days |
modelType string | Bidding model type (e.g., CPM) |
targetedReach integer | Targeted reach |
maxTargetedReach integer | Maximum targeted reach |
frequencyCap integer | Campaign frequency cap |
targetedImpressions integer | Targeted impressions |
maxTargetedImpressions integer | Maximum targeted impressions |
cpm number | Cost per thousand impressions |
minCpm number | Minimum CPM |
maxCpm number | Maximum CPM |
budget number | Campaign budget |
maxBudget number | Maximum Campaign budget |
strategy string | Campaign strategy description |
Get Plan Details by ID
GET{
"success": true,
"data": {
"id": 1,
"name": "Pollies Political Planner",
"objectiveId": 3,
"totalBudget": 120000,
"details": {
"startDate": 1747195200000,
"endDate": 1777089600000,
"timezoneId": 29,
"frequencyCap": 3
},
"owId": 204366,
"statusId": 1,
"lastVisitedScreen": "Screen 1",
"cva": {
"id": 1,
"equation": "((IQMCVAAL017144|IQMCVAAL086142))",
"stateIds": [30200012, 30200013, 30200014, 30200015],
"segmentIds": [88432, 18589],
"reach": 293180
},
"targeting": {
"whiteListedLocation": {
"country": 30100001,
"states": [30200035],
"dma": [30900026],
"city": [30436781, 30436782],
"county": [30318981],
"congressionalDistrict": [30617273],
"stateHouse": [30803564],
"stateSenate": [30718340],
"zipCodes": ["10002"]
},
"blackListedLocation": {
"country": 30100001,
"states": [30200003],
"dma": [30900139],
"city": [30442811],
"county": [30321244],
"congressionalDistrict": [30601009],
"stateHouse": [30800263],
"stateSenate": [30701056],
"zipCodes": ["10002"]
},
"device": {
"deviceTypeIds": [20300004, 20300003],
"channelTypeIds": [11, 12]
},
"inventory": {
"openExchange": null,
"inventoryGroupIds": [3904859, 3897153]
},
"creative": {
"creativeTypeIds": [11, 13],
"isTvAutoBuying": true
},
"whitelistedAudiences": [1142625, 1143191, 1156665, 1144602, 1157452, 1159375],
"blacklistedAudiences": [1140931, 1142626, 1143189, 1144600, 1157451, 1159357, 1142239],
"prebidSegments": [32, 422],
"audienceSegments": [323, 232, 12],
"advanced": {
"splitTypeId": 1,
"locations": [8, 9, 10],
"devices": [20300004, 20300003],
"inventoryGroupIds": [3904859, 3897153],
"audienceTypes": [18, 19],
"creatives": [11, 13]
}
}
}
}
Get List of Political Plans
GETGet a paginated list of Political Plans.
A plan id can be used in the Get Plan Details by ID endpoint and to perform various actions in Political Proposal Planner Management endpoints.
| Query Parameters | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1 |
noOfEntries integer | Number of entries returned per page, default: 50 |
searchField string | Search by plan name, ID, or created by user name |
sortBy string | Sorts by ascending (+) or descending (-), default: -id Supported values: id, name, createdOn, createdBy, startDate, endDate, objectiveId, linkedProposals |
statusIds string | Comma-separated Status IDs |
objectiveIds string | Comma-separated Objective IDs |
Response Properties
id integer | Plan ID |
name string | Plan name |
statusId integer | Plan Status ID |
createdOn integer | Unix epoch created on date, in milliseconds |
createdBy string | Created by user name |
userAvatarUrl string | URL of the user avatar |
startDate integer | Unix epoch start date, in milliseconds |
endDate integer | Unix epoch end date, in milliseconds |
objectiveId integer | Plan Objective ID |
totalProposals integer | Number of linked proposals |
proposals array of integers | Linked Proposal IDs |
{
"success": true,
"data": {
"data": [
{
"id": 1001,
"name": "Q1 2026 Campaign Strategy",
"statusId": 1,
"createdOn": 1709654400000,
"createdByUowId": 5001,
"createdBy": "John Smith",
"userAvatarUrl": "https://example.com/avatars/john-smith.png",
"startDate": 1709654400000,
"endDate": 1717430400000,
"objectiveId": 1,
"totalProposals": 3,
"proposals": [12, 231, 245]
},
{
"id": 1002,
"name": "Voter Outreach Initiative",
"statusId": 2,
"createdOn": 1710259200000,
"createdByUowId": 5002,
"createdBy": "Jane Doe",
"userAvatarUrl": "https://example.com/avatars/jane-doe.png",
"startDate": 1710259200000,
"endDate": 1718640000000,
"objectiveId": 2,
"totalProposals": 5,
"proposals": [12, 231, 323, 445, 568]
}
],
"totalRecords": 25,
"filteredRecords": 2
}
}
Get List of Proposals
GETGet a paginated list of Political Proposals with comprehensive metadata including budget metrics, strategy type, creator details, and date ranges.
| Query Parameters | |
|---|---|
pageNo integer | Page number of retrieved data, default: 1 |
noOfEntries integer | Number of entries returned per page, default: 50 |
searchField string | Search by proposal name, ID, or created by user name |
sortBy string | Sorts by ascending (+) or descending (-), default: -id Supported values: id, name, createdOn, createdBy, startDate, endDate, reach, impressions, cpm, budget |
statusIds string | Comma-separated Status IDs |
planId integer | Filter proposals by Plan ID |
Response Properties
id integer | Proposal ID |
name string | Proposal name |
statusId integer | Status ID |
ioId integer | Insertion Order ID |
createdOn integer | Unix epoch created on date, in milliseconds |
createdBy string | Created by user name |
userAvatarUrl string | URL of the user avatar |
startDate integer | Unix epoch start date, in milliseconds |
endDate integer | Unix epoch end date, in milliseconds |
reach integer | Estimated reach |
impressions integer | Estimated impressions |
cpm number | Cost per thousand impressions |
budget number | Proposal budget |
frequency integer | Frequency cap |
strategyTypeId integer | Strategy Type ID |
{
"success": true,
"data": {
"data": [
{
"id": 2001,
"name": "Q1 2026 Digital Campaign",
"statusId": 1,
"ioId": 1,
"createdOn": 1709654400000,
"createdByUserId": 5001,
"createdBy": "John Smith",
"userAvatarUrl": "https://example.com/avatars/john-smith.png",
"startDate": 1709654400000,
"endDate": 1717430400000,
"reach": 500000,
"impressions": 2000000,
"cpm": 15.50,
"budget": 31000.00,
"frequency": 3,
"strategyTypeId": 1
},
{
"id": 2002,
"name": "Voter Engagement Initiative",
"statusId": 2,
"ioId": null,
"createdOn": 1710259200000,
"createdByUserId": 5002,
"createdBy": "Jane Doe",
"userAvatarUrl": "https://example.com/avatars/jane-doe.png",
"startDate": 1710259200000,
"endDate": 1718640000000,
"reach": 750000,
"impressions": 3000000,
"cpm": 12.75,
"budget": 38250.00,
"frequency": 4,
"strategyTypeId": 2
}
],
"totalRecords": 45,
"filteredRecords": 2,
"recordsAggregation": {
"totalBudget": 69250
}
}
}
Get Proposal Details
GETGet the complete details of a Political Proposal including budgeting metrics, timezone info, and proposed Campaigns.
| Path Parameters | |
|---|---|
proposalId integer | Proposal ID |
{
"success": true,
"data": {
"id": 14,
"name": "sample",
"startTime": 1730658720000,
"endTime": 1733250720000,
"owId": 202500,
"statusId": 1,
"ioId": 1,
"reach": 122344433,
"impressions": 12232323,
"budget": 1212233.23,
"frequencyCap": 3,
"maxReach": 200000000,
"maxImpressions": 25000000,
"maxBudget": 2500000,
"timeZoneId": 29,
"timeZoneName": "US/EASTERN",
"proposedCampaigns": [
{
"id": 101,
"name": "Sample Campaign",
"startTime": 1747195200000,
"endTime": 1777089600000,
"creativeTypeId": 13,
"duration": 30,
"modelType": "CPM",
"targetedReach": 500000,
"maxTargetedReach": 750000,
"frequencyCap": 3,
"targetedImpressions": 1500000,
"maxTargetedImpressions": 2000000,
"cpm": 2.5,
"minCpm": 1.5,
"maxCpm": 3.5,
"budget": 10000,
"maxBudget": 15000,
"strategy": "Device + Channel"
}
]
}
}
Download Proposal
GETGenerate a signed URL for downloading a Political Proposal report in CSV or XLSX format.
| Path Parameters | |
|---|---|
proposalId integer | Proposal ID |
| Query Parameters | |
|---|---|
fileType integer | File type: 1 (Excel), 2 (CSV) |
{
"success": true,
"data": {
"proposalReportUrl": "https://example.s3.amazonaws.com/planner/proposal/report/download/12345/proposal_report.xlsx"
}
}
Get Proposal Summary
GETGet a Proposal summary including reach/impressions, bid landscape, device graph, and channel graph data.
| Path Parameters | |
|---|---|
proposalId integer | Proposal ID |
Response Properties
reachImpressions object | Reach and impressions summary | ||||||
| |||||||
impressions integer | Total impressions |
reach integer | Total reach |
iqmReach integer | IQM estimated reach |
bidLandscape object
bidLandscape object properties
cpm number | CPM value |
percentile integer | Percentile |
impressions integer | Impressions at this CPM |
deviceGraph object
deviceGraph object properties
device string | Device type name |
impressions integer | Impressions for device type |
percentage number | Percentage of total |
channelGraph object
channelGraph object properties
channel string | Channel type name |
impressions integer | Impressions for channel type |
percentage number | Percentage of total |
{
"success": true,
"data": {
"reachImpressions": {
"impressions": 23213,
"reach": 10,
"iqmReach": 206567705
},
"bidLandscape": {
"Audio": [
{ "cpm": 0, "percentile": 0, "impressions": 0 },
{ "cpm": 2, "percentile": 10, "impressions": 1261382900 }
]
},
"deviceGraph": {
"deviceTypes": [
{ "device": "CTV", "impressions": 94828374242, "percentage": 50.53 }
]
},
"channelGraph": {
"channelTypes": [
{ "channel": "CTV", "impressions": 47780138694, "percentage": 25.46 }
]
}
}
}
Get List of Strategies
GETGet a list of Political Strategies for a specific plan with Campaign metrics, budgeting data, and targeting arrays.
| Query Parameters | |
|---|---|
planId integer required | The Plan ID to retrieve strategies for |
Response Properties
id integer | Strategy ID |
name string | Strategy name |
startDate integer | Unix epoch start date, in milliseconds |
endDate integer | Unix epoch end date, in milliseconds |
duration integer | Duration in days |
strategyTypeId integer | Strategy Type ID |
CampaignsCount integer | Number of Campaigns |
proposalId integer | Linked Proposal ID |
budget number | Strategy budget |
frequency integer | Frequency cap |
reach integer | Estimated reach |
impressions integer | Estimated impressions |
cpm number | Cost per thousand impressions |
creatives array of integers | Creative Type IDs |
devices array of integers | Device Type IDs |
channels array of integers | Channel Type IDs |
{
"success": true,
"data": [
{
"id": 3001,
"name": "sample strategy",
"startDate": 1709654400000,
"endDate": 1717430400000,
"duration": 10,
"strategyTypeId": 1,
"campaignsCount": 5,
"proposalId": 1,
"budget": 50000.00,
"frequency": 3,
"reach": 750000,
"impressions": 2250000,
"cpm": 22.22,
"creatives": [1, 2, 3],
"devices": [1, 2],
"channels": [5, 6, 7]
}
]
}
Get Strategy Details
GETGet the details of a single Political Strategy by ID.
| Path Parameters | |
|---|---|
strategyId integer | Strategy ID |
Response Properties
id integer | Strategy ID |
name string | Strategy name |
startDate integer | Unix epoch start date, in milliseconds |
endDate integer | Unix epoch end date, in milliseconds |
duration integer | Duration in days |
strategyTypeId integer | Strategy Type ID |
CampaignsCount integer | Number of Campaigns |
budget number | Strategy budget |
frequency integer | Frequency cap |
reach integer | Estimated reach |
impressions integer | Estimated impressions |
cpm number | Cost per thousand impressions |
creatives array of integers | Creative Type IDs |
devices array of integers | Device Type IDs |
channels array of integers | Channel Type IDs |
{
"success": true,
"data": {
"id": 3001,
"name": "sample strategy",
"startDate": 1709654400000,
"endDate": 1717430400000,
"duration": 10,
"strategyTypeId": 1,
"campaignsCount": 5,
"budget": 50000,
"frequency": 3,
"reach": 750000,
"impressions": 2250000,
"cpm": 22.22,
"creatives": [1, 2, 3],
"devices": [1, 2],
"channels": [5, 6, 7]
}
}
Estimate Plan Reach
POSTEstimate the reach for a Political Plan based on optional CVA details and targeting criteria. If a cvaId is provided, CVA details are fetched from the database. The targeting and CVA data are forwarded to the data API for reach estimation.
| Request Schema | |
|---|---|
cvaId integer | CVA ID (optional, fetches CVA details if provided) |
targeting object | Targeting object (see Plan Resource Properties) |
{
"cvaId": 12234,
"targeting": {
"whiteListedLocations": {
"country": 1,
"states": [30200035],
"dma": [30900026],
"city": [30436781],
"county": [30318981],
"congressionalDistrict": [30617273],
"stateHouse": [30803564],
"stateSenate": [30718340],
"zipCodes": [10002]
},
"blackListedLocations": {
"country": 1,
"states": [30200003],
"dma": [30900139],
"city": [30442811],
"county": [30321244],
"congressionalDistrict": [30601009],
"stateHouse": [30800263],
"stateSenate": [30701056],
"zipCodes": [10001]
},
"whiteListedAudienceIds": [1101831, 1101829],
"blackListedAudienceIds": [1101826],
"prebidSegmentIds": [323212],
"audienceSegments": [2133],
"creative": {
"creativeTypeIds": [11, 13, 14],
"isTvAutoBuying": true
},
"device": {
"deviceTypeIds": [20300001, 20300002],
"channelTypeIds": [11]
},
"inventory": {
"openExchange": {
"iabCategories": [123],
"exchanges": [90, 93]
},
"inventoryGroupIds": []
}
}
}
{
"success": true,
"data": {
"reach": 10
}
}
Political Proposal Planner Management
Create Plan
POSTPOST
Create a new ready or draft Political Plan. A ready plan requires name, details, and targeting. A draft plan requires only a name; all other fields are optional but validated if present.
See resource properties for request schema.
{
"name": "Plan Name",
"objectiveId": 3,
"totalBudget": 120000,
"details": {
"startDate": 1747195200000,
"endDate": 1777089600000,
"timezoneId": 29,
"frequencyCap": 3
},
"targeting": {
"whiteListedLocation": {
"country": 30100001,
"states": [30200035],
"dma": [30900026],
"city": [30436781, 30436782],
"county": [30318981],
"congressionalDistrict": [30617273],
"stateHouse": [30803564],
"stateSenate": [30718340],
"zipCodes": [10001]
},
"blackListedLocation": {
"country": 30100001,
"states": [30200003],
"dma": [30900139],
"city": [30442811],
"county": [30321244],
"congressionalDistrict": [30601009],
"stateHouse": [30800263],
"stateSenate": [30701056],
"zipCodes": [10002]
},
"device": {
"deviceTypeIds": [20300004, 20300003],
"channelTypeIds": [11, 12]
},
"inventory": {
"openExchange": null,
"inventoryGroupIds": [3904859, 3897153]
},
"creative": {
"creativeTypeIds": [11, 13],
"isTvAutoBuying": true
},
"whitelistedAudiences": [1142625, 1143191, 1156665, 1144602, 1157452, 1159375],
"blacklistedAudiences": [1140931, 1142626, 1143189, 1144600, 1157451, 1159357, 1142239],
"prebidSegments": [32, 422],
"audienceSegments": [323, 232, 12],
"advanced": {
"locations": [8, 9, 10],
"devices": [20300004, 20300003],
"inventoryGroupIds": [3904859, 3897153],
"audienceTypes": [18, 19],
"creatives": [11, 13]
}
}
}
{
"success": true,
"data": {
"planId": 123
}
}
Edit Plan
PUTPUT
Update an existing Political Plan or draft plan by ID. Name, details, and targeting are required for ready plans.
See resource properties for request schema.
| Path Parameters | |
|---|---|
id integer | Plan ID |
{
"success": true,
"data": {
"planId": 123
}
}
Delete Plans
DELETEDelete one or more Political Plans by IDs. Associated strategies are also deleted, but proposals and proposed Campaigns are NOT deleted.
| Query Parameters | |
|---|---|
planIds string | Comma-separated Plan IDs to delete |
{
"success": true,
"data": {
"message": "Plans have been deleted successfully"
}
}
Activate Proposal
POSTActivate a Proposal and all of its proposed Campaigns. Provide a strategyId and the system looks up the linked Proposal.
| Request Schema | |
|---|---|
strategyId integer required | Strategy ID to activate |
{
"strategyId": 42
}
{
"success": true,
"data": {
"id": 7,
"message": "Plan A saved successfully."
}
}
Edit Proposal
PUTUpdate a Proposal's name, date range, Campaign budgeting details, and soft-delete specified Campaigns.
| Path Parameters | |
|---|---|
proposalId integer | Proposal ID |
| Request Schema | |
|---|---|
name string | Updated proposal name |
startTime integer | Unix epoch start date, in milliseconds |
endTime integer | Unix epoch end date, in milliseconds |
reach integer | Estimated reach |
impressions integer | Estimated impressions |
budget number | Proposal budget |
frequencyCap integer | Frequency cap |
maxReach integer | Maximum reach |
maxImpressions integer | Maximum impressions |
maxBudget number | Maximum budget |
cpm number | Cost per thousand impressions |
proposedCampaigns array of objects | Updated proposed Campaign details (see Proposal Resource Properties) |
deletedCampaignIds array of integers | Campaign IDs to soft-delete |
{
"name": "Updated Proposal Name",
"startTime": 1778434118000,
"endTime": 1780162118000,
"reach": 600000,
"impressions": 2500000,
"budget": 50000.00,
"frequencyCap": 4,
"maxReach": 650000,
"maxImpressions": 3000000,
"maxBudget": 60000.00,
"cpm": 16.67,
"minCpm": 1,
"maxCpm": 50,
"minImpressions": 100000,
"minReach": 50000,
"minBudget": 10000.00,
"proposedCampaigns": [
{
"id": 1,
"name": "Proposed Campaign ID",
"startTime": 1778434118000,
"endTime": 1780162118000,
"targetedReach": 300000,
"targetedImpressions": 1500000,
"budget": 30000.00,
"frequencyCap": 3,
"maxTargetedReach": 350000,
"maxTargetedImpressions": 2000000,
"maxBudget": 35000.00,
"cpm": 20.00,
"minCpm": 1,
"maxCpm": 50,
"minTargetedImpressions": 50000,
"minTargetedReach": 25000,
"minBudget": 5000.00
}
],
"deletedCampaignIds": [102, 103]
}
{
"success": true,
"data": {
"id": 42,
"message": "Proposal updated successfully."
}
}
Generate IO and Campaigns
POSTConvert a Political Proposal into an Insertion Order with draft Campaigns. Updates the Proposal, sets status to PROCESSING, and triggers async Campaign generation.
| Path Parameters | |
|---|---|
proposalId integer | Proposal ID |
{
"success": true,
"data": {
"message": "Campaign generation is in progress"
}
}
Delete Proposals
DELETEDelete one or more Political Proposals by IDs. Associated proposed Campaigns are also deleted.
| Query Parameters | |
|---|---|
proposalIds string | Comma-separated Proposal IDs to delete |
{
"success": true,
"data": {
"message": "Proposals have been deleted successfully"
}
}
Restore Proposals
PATCHRestore expired Proposals back to ready status by recalculating their budgeting based on new start and end dates.
| Request Schema | |
|---|---|
proposalIds array of integers | Proposal IDs to restore |
startTime integer | New Unix epoch start date, in milliseconds |
endTime integer | New Unix epoch end date, in milliseconds |
{
"proposalIds": [2, 3],
"startTime": 1778434118000,
"endTime": 1780162118000
}
{
"success": true,
"data": {
"message": "Proposals restored successfully"
}
}
Create CVA Details
POSTCreate a new Custom Voter Audience (CVA) detail record with segment IDs, state IDs, reach value, and an equation string.
| Request Schema | |
|---|---|
stateIds array of integers | State IDs |
reach integer | CVA reach |
equation string | CVA segment equation string |
{
"stateIds": [123, 456],
"reach": 1234566,
"equation": "(iqm1234&iqm3456)|(iqm21345|!iqm45675)"
}
{
"success": true,
"data": {
"id": 12345
}
}
Update CVA Details
PATCHUpdate an existing Custom Voter Audience (CVA) detail record with new state IDs, reach value, and an equation string.
| Path Parameters | |
|---|---|
cvaId integer | CVA ID |
| Request Schema | |
|---|---|
stateIds array of integers | State IDs |
reach integer | CVA reach |
equation string | CVA segment equation string |
{
"stateIds": [123, 456],
"reach": 1234566,
"equation": "(iqm1234&iqm3456)|(iqm21345|!iqm45675)"
}
{
"success": true,
"data": {
"id": 12345
}
}
Generate Custom Strategies
POSTGenerate custom strategies for an existing plan by calling the DSI API with the provided targeting and budget parameters. Persists the resulting strategies, proposals, and Campaigns, then returns strategy summaries.
| Request Schema | |
|---|---|
planId integer | Plan ID |
strategyName string | Custom strategy name |
name string | Plan name |
objectiveId integer | Plan Objective ID |
totalBudget number | Total budget |
details object | Plan details (see Plan Resource Properties) |
targeting object | Targeting object (see Plan Resource Properties) |
cva object | CVA details (see Plan Resource Properties) |
{
"success": true,
"data": [
{
"id": 1,
"name": "Maximum Reach",
"startDate": 1747195200000,
"endDate": 1777089600000,
"strategyTypeId": 1,
"campaignsCount": 3,
"budget": 40000,
"frequency": 3,
"reach": 500000,
"impressions": 2000000,
"cpm": 15.5,
"creatives": [11, 13],
"devices": [20300004, 20300003],
"channels": [11, 12]
}
]
}
Delete Strategy
DELETEDelete a custom Strategy by ID. Associated proposals and proposed Campaigns are NOT deleted. Only custom strategies can be deleted.
| Path Parameters | |
|---|---|
strategyId integer | Strategy ID |
{
"success": true,
"data": {
"message": "Custom Strategy 1 has been deleted successfully"
}
}
More Political Planner Details
Get Supported Parameters
GETGet the supported parameters for Political Plan configuration including CVA and targeting options. Each parameter value indicates whether it is supported (true) or unsupported (false).
{
"success": true,
"data": {
"cva": {
"equation": false,
"stateIds": false,
"segmentIds": false,
"id": true,
"reach": true
},
"targeting": {
"whitelistedLocation": true,
"blacklistedLocation": true,
"whitelistedAudiences": true,
"blacklistedAudiences": true,
"prebidSegments": false,
"audienceSegments": true,
"creative": {
"creativeTypeIds": true
},
"device": {
"deviceTypeIds": true,
"channelTypeIds": true
},
"inventory": true
}
}
}
Get Targeting Types
GETGet the list of available targeting types for Political Planners.
Response Properties
id integer | Targeting type ID |
name string | Targeting type name |
order integer | Display order |
displayName string | Targeting type display name |
{
"success": true,
"data": [
{
"id": 1,
"name": "Location",
"order": 1,
"displayName": "Location"
}
]
}
Get Strategy Types
GETGet the list of available strategy types for Political Planners.
Response Properties
id integer | Strategy type ID |
name string | Strategy type name |
order integer | Display order |
displayName string | Strategy type display name |
{
"success": true,
"data": [
{
"id": 1,
"name": "maximum_reach",
"order": 1,
"displayName": "Maximum Reach"
},
{
"id": 2,
"name": "maximum_impressions",
"order": 2,
"displayName": "Maximum Impressions"
}
]
}
Get Split Types
GETGet the list of available split types for Political Planners.
Response Properties
id integer | Split type ID |
name string | Split type name |
order integer | Display order |
displayName string | Split type display name |
{
"success": true,
"data": [
{
"id": 1,
"name": "ai",
"order": 1,
"displayName": "AI"
},
{
"id": 2,
"name": "manual",
"order": 2,
"displayName": "Manual"
}
]
}
Get Plan Statuses
GETGet the list of available plan statuses for Political Planners.
Response Properties
id integer | Plan status ID |
name string | Plan status name |
order integer | Display order |
displayName string | Plan status display name |
{
"success": true,
"data": [
{
"id": 1,
"name": "draft",
"order": 1,
"displayName": "Draft"
},
{
"id": 2,
"name": "ready",
"order": 2,
"displayName": "Ready"
}
]
}
Get Plan Objectives
GETGet the list of available plan objectives for Political Planners.
Response Properties
id integer | Plan objective ID |
name string | Plan objective name |
order integer | Display order |
displayName string | Plan objective display name |
{
"success": true,
"data": [
{
"id": 1,
"name": "reach forecasting",
"order": 1,
"displayName": "Reach Forecasting"
},
{
"id": 2,
"name": "budget estimation",
"order": 2,
"displayName": "Budget Estimation"
},
{
"id": 3,
"name": "format selection",
"order": 3,
"displayName": "Format Selection"
}
]
}