Campaigns API endpoints
Endpoint reference for the Campaigns tag (26 endpoints): Campaign management, bulk operations, and configuration
Campaign management, bulk operations, and configuration. 26 endpoints, generated from the OpenAPI spec. Authentication, the response envelope, pagination and error codes are shared by all endpoints — see REST API overview. Parameters marked form go in an application/x-www-form-urlencoded request body.
GET /rest-api/campaign/{campaignId}.do
Get campaign by ID.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign to retrieve |
selfServRequest | query | boolean | no | When true, returns a simplified self-serve response format instead of the full campaign details |
Responses: 200 — Campaign details · 404 — Campaign not found. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/{operation}/{advertiserId}.do
Copy or move campaign.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign to copy or move |
operation | path | string | yes | Operation to perform: COPY or MOVE Values: MOVE, COPY. |
advertiserId | path | integer | yes | ID of the target advertiser to copy/move the campaign to |
copyCount | form | integer | no | Number of copies to create, 1 to 20 (COPY only, defaults to 1) |
keepBannersLinked | form | boolean | no | Whether the copied or moved banners stay linked to the source banners’ placements; when false they end up with no placement links (defaults to false) |
dontCopyBanners | form | boolean | no | When true, campaign banners are not copied (COPY only, defaults to false) |
pauseBanners | form | boolean | no | When true, the copied banners are switched off; when false they keep the source banners’ on/off state (COPY only, defaults to false) |
preserveActive | form | boolean | no | When true, the copied campaign keeps the source campaign’s on/off state; when false (default) every copy starts switched off (COPY only) |
name | form | string | no | Name for the copy (COPY only, at most 500 characters). With copyCount above 1 the later copies are named ‘<name> 2’, ‘<name> 3’… Omit to keep the source’s name (with ‘_copy’ appended when the target advertiser already has one of that name). |
Responses: 200 — Operation completed successfully · 404 — Not found — resource does not exist · 500 — Internal server error during operation. Errors follow the shared conventions.
GET /rest-api/campaign/{campaignId}/banners.do
List banners for campaign.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign whose banners to list |
selfServRequest | query | boolean | no | When true, returns a simplified self-serve banner format |
Responses: 200 — List of banners · 404 — Not found — resource does not exist. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/campaignPricing/actionPricing.do
Update campaign action pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
price | form | number | yes | CPA price for the action, 0 to 1000000 |
campaignId | path | integer | yes | Unique identifier of the campaign |
actionName | form | string | no | Name of the action to set pricing for (alternative to actionKey) |
actionKey | form | string | no | Unique key of the action to set pricing for (alternative to actionName) |
Responses: 200 — Action pricing updated · 404 — No action the caller can see matches actionKey/actionName. Errors follow the shared conventions.
GET /rest-api/campaign/{campaignId}/competitors.do
List campaign competitors.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign |
Responses: 200 — Competitors retrieved · 404 — Campaign not found or deleted. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/competitors/add.do
Add campaign competitors.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign |
competitorIds | form | array<integer> | yes | IDs of the competitor campaigns — repeat the parameter or separate with commas |
Responses: 200 — Competitors linked; competitors lists the campaign’s competitors afterwards · 404 — Campaign not found or deleted. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/competitors/disable.do
Disable campaign competitors.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign |
Responses: 200 — Competitors disabled; enableCompetitors echoes the new state · 404 — Campaign not found or deleted. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/competitors/enable.do
Enable campaign competitors.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign |
Responses: 200 — Competitors enabled; enableCompetitors echoes the new state · 404 — Campaign not found or deleted. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/competitors/remove.do
Remove campaign competitors.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign |
competitorIds | form | array<integer> | yes | IDs of the competitor campaigns to unlink — repeat the parameter or separate with commas |
Responses: 200 — Competitors unlinked; competitors lists the campaign’s competitors afterwards · 404 — Campaign not found or deleted. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/delete.do
Delete campaign.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign to delete |
Responses: 200 — Campaign deleted successfully · 404 — Not found — resource does not exist. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/disable-actions.do
Disable campaign actions.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign to disable actions for |
Responses: 200 — Campaign actions disabled · 404 — Not found — resource does not exist. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/enable-actions.do
Enable campaign actions.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign to enable actions for |
Responses: 200 — Campaign actions enabled · 404 — Not found — resource does not exist. Errors follow the shared conventions.
GET /rest-api/campaign/{campaignId}/pricing.do
Get campaign pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign whose pricing to retrieve |
Responses: 200 — Campaign pricing details, or {campaignId, pricingSet:false} when none is set · 404 — Campaign not found. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/pricing.do
Update campaign pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign whose pricing to update |
burnUpPeriod | form | integer | no | Burn-up period in hours for eCPM optimization |
burnUpSubPeriod | form | integer | no | Burn-up sub-period length in hours |
burnUpSubPeriodWeighting | form | string | no | Weighting type for burn-up sub-periods Values: SINGLET, DECREMENT, HARMONIC. |
estimatedConversionRate | form | number | no | Estimated impression-to-conversion rate (I2C) as a fraction from 0 to 1, not a percentage — 0.002 means 0.2%. Used to estimate eCPM of CPA campaigns under eCPM optimization; omit to keep the current value (a new pricing record starts from the network default) |
estimatedCtr | form | number | no | Estimated click-through rate as a fraction from 0 to 1, not a percentage — 0.005 means 0.5% CTR. Used to estimate eCPM of CPC campaigns under eCPM optimization; omit to keep the current value (a new pricing record starts from the network default) |
minClicks | form | integer | no | Minimum number of clicks before optimization kicks in |
minConversions | form | integer | no | Minimum number of conversions before optimization kicks in |
paymentModel | form | string | no | Payment model (FIXED_PRICE, REVENUE_SHARE) Values: FIXED_PRICE, REVENUE_SHARE. |
price | form | number | no | Price value in the selected pricing type; null when no global price is set |
pricingType | form | string | no | Pricing type (CPM, CPC, CPA, COST_PER_DAY, COST_PER_MONTH) Values: CPM, CPC, CPA, COST_PER_DAY, COST_PER_MONTH. |
startUpPeriod | form | integer | no | Start-up period in hours for eCPM optimization; must not exceed burnUpPeriod |
useGlobalActionPricing | form | boolean | no | Whether to use global action pricing from the action definition |
Responses: 200 — Campaign pricing updated · 404 — Not found — resource does not exist. Errors follow the shared conventions.
DELETE /rest-api/campaign/{campaignId}/pricing.do
Disable campaign pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign whose pricing to remove |
Responses: 200 — {success:true}: campaign pricing removed, or there was none · 404 — Campaign not found. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/pricing/{countryCode}.do
Update campaign country pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
price | form | number | yes | Price for the country, 0 to 1000000 |
campaignId | path | integer | yes | Unique identifier of the campaign |
countryCode | path | string | yes | ISO 3166 two-letter country code, or ’*’ for global pricing |
actionName | form | string | no | Name of the action for CPA per-action country pricing (optional) |
actionKey | form | string | no | Unique key of the action for CPA per-action country pricing (optional) |
Responses: 200 — Country pricing updated · 404 — No action the caller can see matches actionKey/actionName. Errors follow the shared conventions.
DELETE /rest-api/campaign/{campaignId}/pricing/{countryCode}.do
Remove campaign country pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign |
countryCode | path | string | yes | ISO 3166 two-letter country code to remove pricing for |
Responses: 200 — Country pricing removed · 404 — Campaign not found, or it has no price for the country. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/pricing/batch.do
Batch update campaign country pricing.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign whose country pricing to update in batch |
countryPricesCsv | form | string | no | The CSV’s text, for a client that cannot upload a file; send this or countryPrices |
Request body (multipart/form-data): form with field countryPrices — CSV file with the country prices; send this or countryPricesCsv.
Responses: 200 — Batch update result: applied and rejected lines, plus the legacy csvErrors and csvWarnings · 404 — Not found — resource does not exist. Errors follow the shared conventions.
POST /rest-api/campaign/{campaignId}/update.do
Update campaign.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignId | path | integer | yes | Unique identifier of the campaign to update |
autolinkCategories | form | array<integer> | no | IDs of the publisher categories whose new placements the campaign auto-links to, comma-separated or repeated — with none set, only banners carrying auto-link labels link, by label |
active | form | boolean | no | Whether the campaign is active and serving ads |
allowActionPricingUrlOverriding | form | boolean | no | Allow overriding action pricing URLs at the campaign level |
allowImpressionAndClicksPricingUrlOverriding | form | boolean | no | Allow overriding impression and click pricing URLs |
allowNewPlacementsAutolinking | form | boolean | no | When true, newly created placements matching the campaign’s categories are automatically linked |
allowUseForTemplate | form | boolean | no | Whether this campaign can be used as a template |
autoTagLandingUrl | form | boolean | no | Whether the click redirect appends the click id to the landing page, so the macro does not have to be pasted into every creative. Off by default - it rewrites a URL the advertiser owns |
campaignAliasForActionTracking | form | string | no | Custom alias for action tracking attribution, up to 64 characters |
cpaOptimization | form | boolean | no | Enable CPA-based optimization for banner delivery |
cpaOptimizationActions | form | array<integer> | no | Set of actions used for CPA optimization — IDs of the action entities, comma-separated or as repeated parameters |
ctrOptimization | form | boolean | no | Enable CTR-based optimization for banner delivery |
description | form | string | no | Campaign description text |
ecpmOptimization | form | boolean | no | Enable eCPM-based optimization for banner delivery |
enableActions | form | boolean | no | Enable conversion action tracking for this campaign |
exchangeRate | form | number | no | Currency conversion multiplier from campaign currency to the network’s base currency (range 0.001–999.999) |
labelUpdateType | form | string | no | How labels are applied. Allowed values: add (append), overwrite (replace all existing), remove (delete specified), clear (remove all) Values: ADD, OVERWRITE, REMOVE, CLEAR. |
labels | form | array<string> | no | Label names to associate with this campaign |
maxActionPriceOverride | form | number | no | Upper bound, in campaign currency, on the conversion payout a tracking URL may set. A higher payout is clamped to this value and the conversion is still counted. Omit to keep the current bound, send it empty to remove it (0 is a bound of 0); 0 to 9999999.9999; only consulted when allowActionPricingUrlOverriding is enabled |
name | form | string | no | Campaign display name, up to 512 characters, never blank. Left out on create, the campaign is named “Campaign <id>”. |
onlyOneBannerPerPage | form | boolean | no | Restrict delivery to one banner per page view |
onlyThisCampaignOnPage | form | boolean | no | Restrict page to show only banners from this campaign |
priority | form | string | no | Delivery priority level for this campaign. Allowed values: STANDARD_HIGH, STANDARD_MEDIUM, STANDARD_LOW, PREMIUM, NON_GUARANTEED, HOUSE_ADS Values: PREMIUM, STANDARD_HIGH, STANDARD_MEDIUM, STANDARD_LOW, NON_GUARANTEED, HOUSE_ADS. |
selfServeCampaignType | form | string | no | Self-serve campaign type classification Values: BANNER_DESKTOP, BANNER_MOBILE, BANNER_APPLICATION, BANNER_NATIVE, POP_UNDER, INTERSTITIAL_MOBILE, INTERSTITIAL_APPLICATION. |
showBannersOfOneCampaignAtTheSamePageAlias | form | string | no | Alias used for one-campaign-per-page restriction, up to 64 characters |
targetTemplateName | form | string | no | Name of the targeting template to apply, up to 50 characters |
weight | form | integer | no | Relative delivery weight (0-32767) for weighted rotation |
Responses: 200 — Campaign updated successfully · 404 — Campaign not found. Errors follow the shared conventions.
GET /rest-api/campaign/banners/batch.do
List banners for multiple campaigns.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
campaignIds | query | array<integer> | no | Array of campaign IDs to retrieve banners for |
Responses: 200 — List of banners. Errors follow the shared conventions.
POST /rest-api/campaign/create.do
Create campaign.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
advertiserId | form | integer | yes | ID of the advertiser under which to create the campaign |
autolinkCategories | form | array<integer> | no | IDs of the publisher categories whose new placements the campaign auto-links to, comma-separated or repeated — with none set, only banners carrying auto-link labels link, by label |
active | form | boolean | no | Whether the campaign is active and serving ads |
allowActionPricingUrlOverriding | form | boolean | no | Allow overriding action pricing URLs at the campaign level |
allowImpressionAndClicksPricingUrlOverriding | form | boolean | no | Allow overriding impression and click pricing URLs |
allowNewPlacementsAutolinking | form | boolean | no | When true, newly created placements matching the campaign’s categories are automatically linked |
allowUseForTemplate | form | boolean | no | Whether this campaign can be used as a template |
autoTagLandingUrl | form | boolean | no | Whether the click redirect appends the click id to the landing page, so the macro does not have to be pasted into every creative. Off by default - it rewrites a URL the advertiser owns |
campaignAliasForActionTracking | form | string | no | Custom alias for action tracking attribution, up to 64 characters |
cpaOptimization | form | boolean | no | Enable CPA-based optimization for banner delivery |
cpaOptimizationActions | form | array<integer> | no | Set of actions used for CPA optimization — IDs of the action entities, comma-separated or as repeated parameters |
ctrOptimization | form | boolean | no | Enable CTR-based optimization for banner delivery |
description | form | string | no | Campaign description text |
ecpmOptimization | form | boolean | no | Enable eCPM-based optimization for banner delivery |
enableActions | form | boolean | no | Enable conversion action tracking for this campaign |
exchangeRate | form | number | no | Currency conversion multiplier from campaign currency to the network’s base currency (range 0.001–999.999) |
labelUpdateType | form | string | no | How labels are applied. Allowed values: add (append), overwrite (replace all existing), remove (delete specified), clear (remove all) Values: ADD, OVERWRITE, REMOVE, CLEAR. |
labels | form | array<string> | no | Label names to associate with this campaign |
maxActionPriceOverride | form | number | no | Upper bound, in campaign currency, on the conversion payout a tracking URL may set. A higher payout is clamped to this value and the conversion is still counted. Omit to keep the current bound, send it empty to remove it (0 is a bound of 0); 0 to 9999999.9999; only consulted when allowActionPricingUrlOverriding is enabled |
name | form | string | no | Campaign display name, up to 512 characters, never blank. Left out on create, the campaign is named “Campaign <id>”. |
onlyOneBannerPerPage | form | boolean | no | Restrict delivery to one banner per page view |
onlyThisCampaignOnPage | form | boolean | no | Restrict page to show only banners from this campaign |
priority | form | string | no | Delivery priority level for this campaign. Allowed values: STANDARD_HIGH, STANDARD_MEDIUM, STANDARD_LOW, PREMIUM, NON_GUARANTEED, HOUSE_ADS Values: PREMIUM, STANDARD_HIGH, STANDARD_MEDIUM, STANDARD_LOW, NON_GUARANTEED, HOUSE_ADS. |
selfServeCampaignType | form | string | no | Self-serve campaign type classification Values: BANNER_DESKTOP, BANNER_MOBILE, BANNER_APPLICATION, BANNER_NATIVE, POP_UNDER, INTERSTITIAL_MOBILE, INTERSTITIAL_APPLICATION. |
showBannersOfOneCampaignAtTheSamePageAlias | form | string | no | Alias used for one-campaign-per-page restriction, up to 64 characters |
targetTemplateName | form | string | no | Name of the targeting template to apply, up to 50 characters |
weight | form | integer | no | Relative delivery weight (0-32767) for weighted rotation |
Responses: 200 — Campaign created successfully · 404 — Advertiser not found. Errors follow the shared conventions.
GET /rest-api/campaigns.do
List all campaigns.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
selfServRequest | query | boolean | no | When true, returns a simplified self-serve response format instead of the full campaign details |
active | query | boolean | no | When set, returns only active (true) or only inactive (false) campaigns; omit to return both |
labels | query | array<string> | no | Label names to filter by; a campaign carrying any of them is returned |
advertiserId | query | integer | no | Advertiser ID to restrict results to a single advertiser |
offset | query | integer | no | Pagination offset over campaigns ordered by id (zero-based) |
limit | query | integer | no | Maximum number of campaigns to return; omit for all |
fields | query | array<string> | no | Return only these fields of each entity, comma-separated; id is always kept. A requested field no returned row carries is named in the X-Ignored-Fields response header |
filter | query | object | no | Keep only entities matching every key, e.g. filter[cpaOptimization]=true&filter[hasLimit]=true. Keys are the entity’s on/off settings (active, enableTargeting, cpaOptimization, alwaysRedirect, …) and a has<Relation> flag for each setting kept in rows of its own (hasLimit, hasPricing, hasFrequencyCapping, hasTrackingCode, hasPriceAdjustmentRules, hasLabels, hasBanners, …), true when the relation holds a row; hasCapping, hasLimits and hasTargetingRules group the relations of their kind. An unknown key is a 400 that lists every valid key for the list. |
Responses: 200 — List of campaigns. Errors follow the shared conventions.
POST /rest-api/campaigns/copy/bulk/{advertiserId}.do
Bulk copy campaigns.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
advertiserId | path | integer | yes | Unique identifier of the target advertiser that will own the copied campaigns. Must reference an existing, non-deleted advertiser |
numberOfCopies | form | integer | no | Number of copies to create for each campaign in the bulk request, 1 to 20. Defaults to 1 if not specified |
Request body (application/json, required): JSON array; each element a JSON object with fields banners, companyId, companyName.
Responses: 200 — Bulk copy operation result with new campaign IDs · 404 — Advertiser or campaign not found. Errors follow the shared conventions.
POST /rest-api/campaigns/labels.do
Change labels of many campaigns.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
ids | form | array<integer> | yes | Campaign IDs to change, 1 to 500 |
labels | form | array<string> | no | Label names, comma-separated or repeated |
labelUpdateType | form | string | no | ADD (default), OVERWRITE, REMOVE or CLEAR Values: ADD, OVERWRITE, REMOVE, CLEAR. |
Responses: 200 — Batch applied · 404 — None of the ids names an existing campaign. Errors follow the shared conventions.
GET /rest-api/campaigns/priorities.do
List campaign priority types.
No parameters beyond authentication.
Responses: 200 — List of priority types. Errors follow the shared conventions.
POST /rest-api/campaigns/status.do
Switch campaigns on or off.
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
ids | form | array<integer> | yes | Campaign IDs to switch, 1 to 500 |
active | form | boolean | yes | true to switch the campaigns on, false to switch them off |
Responses: 200 — Batch applied · 404 — None of the ids names an existing campaign. Errors follow the shared conventions.
Related
- REST API overview — authentication and conventions
- API endpoint reference by tag
- Entities — create, read, update, delete via API