Skip to main content

Create Campaign

POST 

/marketplaces/:marketplaceID/campaigns

Create a campaign using external advertiser and product IDs.

Prerequisites — these entities must already exist before the campaign create call, otherwise the request fails with Object not found: Advertiser (404) or Wrong Type product not found (400):

  • The advertiser (via POST /integration/advertisers)
  • The products (via POST /integration/products). external_product_ids accepts the same id values you used during product integration.
  • Any keywords/categories/devices/segments/regions referenced in the campaign must exist on the marketplace.

Validation rules (selected — service returns 400 with the exact message shown):

  • placements (legacy enum) and ad_placements (Ad Placement IDs) are mutually exclusive; exactly one of them must be supplied.
  • Either external_advertiser_id or advertiser_id is required; without either you get 400 "AdvertiserID or ExternalAdvertiserID".
  • Budget conditionals: DAILYdaily_budget required; TOTALtotal_budget required; FLEXIBLE → both required and daily_budget ≤ total_budget.
  • max_acos (and bid_type = MAX_ACOS) are not allowed for DISPLAY* and VIDEO* ad types.
  • targeting_type = DEVICE is only valid for IN_STORE_VIDEO and IN_STORE_DISPLAY; sending it on PRODUCT/DISPLAY/VIDEO/SPONSORED_BRAND returns 400 "invalid targeting type".
  • SEARCH targeting (and STANDARD dynamic bid) → keywords required (1-100). CATEGORY targeting (and dynamic bid) → categories required (1-100).
  • A keyword cannot appear in both keywords and negative_keywords.
  • For DISPLAY*, VIDEO* and DISPLAY_SPONSORED_BRAND ad types, either redirect or redirects is required.
  • DISPLAY_SPONSORED_BRAND: connected_with_products must be true, products length must be 3-250, exactly 1 creatives entry.
  • IN_STORE_VIDEO / IN_STORE_DISPLAY: targeting_type ∈ {AUTO, DEVICE}; AUTO ⇒ no devices; DEVICEdevices required and no fixed_bid; exactly 1 creatives entry; each devices[].bid ≥ marketplace minimum bid.
  • dayparting: all_week = true ⇒ neither all_day nor schedule may be sent; otherwise at least one day/hour must be active. Each schedule[<day>] must have exactly 24 booleans, day names are case-insensitive but must be valid, and a day cannot appear in both all_day and schedule. Up to 7 days per map.

external_product_ids vs products: when both are sent, external_product_ids is resolved to internal products and the value you provided in products is silently overwritten. Use external_product_ids (your integration IDs) — products is a legacy internal-ID field.

Request

Responses

Campaign Created