---
title: "Bulk Update Strategies"
method: POST
path: "/bulk_update/strategies"
tags: ["Strategies"]
---

# Bulk Update Strategies

`POST /bulk_update/strategies`

## Request

- Base URL: `https://api.mediamath.com/api/v3.0`
- URL: `https://api.mediamath.com/api/v3.0/bulk_update/strategies`
- Auth: OAuth 2
  - Authorization code: `https://auth.mediamath.com/authorize`
  - Token URL: `https://auth.mediamath.com/oauth/token` scopes: `offline_access`, `manage:services`
- TypeScript: <https://skmtc.dev/mediamath/apis/campaigns-api/docs/bulk_update/strategies/post.ts> (a function with typed inputs; its response is checked against the schema)

Update multiple strategies

## Request body

- object
  - `update` object[]: Updates to apply. Each update item must target a unique strategy id within the request.
    - `id` integer, required
    - `name` string
    - `description` string
    - `status` boolean
    - `archived` boolean
    - `is_programmatic_guaranteed` boolean
    - `media_type` 'DISPLAY' | 'VIDEO'
    - `use_optimization` boolean
    - `ads_txt_verified` 'ANY' | 'AUTHORIZED_ONLY' | 'AUTHORIZED_DIRECT_ONLY' | 'NONE', nullable
    - `type` 'REM' | 'GBO' | 'AUD'
    - `feature_compatibility` string, nullable
    - `device_graph_only` boolean
    - `mfa_avoidance` 'INHERIT' | 'ALLOW_ALL' | 'EXCLUDE_MFA'
    - `zone_name` string
    - `created_on` string, date-time
    - `updated_on` string, date-time
    - `duration` StrategyDuration: Duration of strategy must not exceed 36 months
      - `use_campaign_start` boolean
      - `use_campaign_end` boolean
      - `start_date` string, date-time, nullable
      - `end_date` string, date-time, nullable
    - `budget` StrategyBudget
      - `budget` number, float, nullable: Must be a valid float between 1 and 10000000 USD or its equivalent in other currency.
      - `currency_code` string
      - `margin_pct` number, float, nullable
    - `frequency` StrategyFrequency
      - `frequency_type` 'even' | 'asap' | 'no-limit' | 't1-optimized' | 'frequency_goal'
      - `frequency_interval` 'hour' | 'day' | 'week' | 'month' | 'not-applicable', nullable
      - `frequency_amount` integer, nullable
      - `frequency_optimization` boolean
    - `concepts` StrategyConcepts
      - `weighting` 'NONE' | 'BUDGET' | 'IMPRESSION'
      - `creative_groups` object[]
        - `concept_id` integer, required
        - `percent` number, float, required: Sum of all percents provided inside group must be equal to 100
    - `groups` string[], nullable
    - `strategy_group_id` integer, nullable: ID of the strategy group this strategy belongs to (one-to-one). Must reference a strategy_groups row whose campaign_id matches this strategy's campaign_id. Pass null to clear the assignment.
    - `entity_type` string
    - `version` integer
    - `goals` StrategyGoals
      - `goal_type` 'spend' | 'reach' | 'cpc' | 'cpe' | 'cpa' | 'roi' | 'ctr' | 'vcr' | 'viewability_rate' | 'vcpm'
      - `goal_value` number, float
      - `min_bid` number, float
      - `max_bid` number, float
      - `roi_target` number, double, nullable
      - `bid_min_devices` integer, nullable
      - `bid_aggressiveness` integer
      - `bid_price_is_media_only` boolean
      - `max_bid_wm` number, float, nullable
      - `use_bid_shading` boolean
      - `flat_rate_cpm` number, float, nullable: This field is only available to certain organizations. For organizations without access it is omitted from responses and cannot be set on create or update.
    - `pacing` StrategyPacing
      - `impression_pacing_type` 'even' | 'asap' | 'no-limit'
      - `impression_pacing_amount` integer, nullable
      - `impression_pacing_interval` 'hour' | 'day'
      - `pacing_type` 'even' | 'asap'
      - `pacing_amount` number, float
      - `pacing_interval` 'hour' | 'day'
      - `pacing_optimization_type` 'monetary' | 'impression'
      - `pacing_optimization_amount` number, float, nullable
      - `use_dba_strategy_pacing` 'always' | 'never' | 'custom'
      - `use_dba_strategy_pacing_after_date` string, date, nullable
    - `inventory` StrategyInventory
      - `supply_type` 'RTB' | 'RMX_API' | 'T1_RMX' | 'MKT' | 'BATCH'
      - `run_on_all_pmp` boolean
      - `run_on_all_exchanges` boolean: default value is false if campaign is programmatic guarantee and is true otherwise
      - `site_restriction_transparent_urls` boolean
      - `domain_restrictions` object
        - `include` DomainRestriction[]
          - `domain` string, required
          - `target_type` 'DOMAIN' | 'APP', required
        - `exclude` DomainRestriction[]
          - `domain` string, required
          - `target_type` 'DOMAIN' | 'APP', required
      - `site_lists` SiteList[]
        - `site_list_id` integer, required
        - `assigned` boolean, required
      - `campaign_site_lists` SiteList[]
        - `site_list_id` integer, required
        - `assigned` boolean, required
      - `deals` Deal[]
        - `deal_id` integer, required
      - `deal_groups` DealGroup[]
        - `deal_group_id` integer, required
      - `supply_sources` SupplySource[]
        - `supply_source_id` integer, required
    - `targeting` object: Important note: postal_codes and ip_addresses cannot be updated via bulk and will be ignored.
      - `fold_position` string[], nullable
      - `audience` object
        - `include` object[]
          - `operator` 'AND' | 'OR'
          - `segments` StrategyAudienceSegment[]
            - `audience_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
        - `exclude` object
          - `operator` 'AND' | 'OR'
          - `segments` StrategyAudienceSegment[]
            - `audience_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
      - `contextual` object
        - `include` object[]
          - `code` string
          - `operator` 'AND' | 'OR'
          - `segments` StrategyContextualSegment[]
            - `targeting_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
        - `exclude` object
          - `code` string
          - `operator` 'AND' | 'OR'
          - `segments` StrategyContextualSegment[], required
            - `targeting_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
      - `audience_groups` object
        - `include` StrategySegmentGroup[]
          - `operator` 'AND', required
          - `segment_groups` object[], required
            - `segment_group_id` integer
        - `exclude` object
      - `contextual_groups` object
        - `include` StrategySegmentGroup[]
          - `operator` 'AND', required
          - `segment_groups` object[], required
            - `segment_group_id` integer
        - `exclude` object
      - `geofence` object
        - `include` StrategyGeofence
          - `operator` 'AND' | 'OR'
          - `segments` object[]
            - `geofence_segment_id` integer
            - `geofence_segment_factual_id` string
            - `place_list_id` integer
        - `exclude` StrategyGeofence
          - `operator` 'AND' | 'OR'
          - `segments` object[]
            - `geofence_segment_id` integer
            - `geofence_segment_factual_id` string
            - `place_list_id` integer
      - `my_data` object
        - `include` StrategyMyData
          - `operator` 'AND' | 'OR'
          - `pixels` object[], required
            - `pixel_id` integer, required
        - `exclude` StrategyMyData
          - `operator` 'AND' | 'OR'
          - `pixels` object[], required
            - `pixel_id` integer, required
      - `location` object
        - `include` StrategyLocation[]
          - `operator` 'AND' | 'OR'
          - `target_value_id` integer, required
          - `code` 'DMAX' | 'REGN' | 'CITY' | 'COUNTRY', required
        - `exclude` StrategyLocation[]
          - `operator` 'AND' | 'OR'
          - `target_value_id` integer, required
          - `code` 'DMAX' | 'REGN' | 'CITY' | 'COUNTRY', required
      - `technology` object
        - `include` StrategyTechnology[]
          - `operator` 'AND' | 'OR'
          - `code` 'BSER' | 'CSPD' | 'DVCE' | 'ISPX' | 'OSXX' | 'INVT' | 'VPSZ' | 'VLIN' | 'VCON' | 'VAUD' | 'VSKP' | 'VPLC' | 'DVMD' | 'BRLG' | 'IPTA' | 'HYPL', required
          - `target_value_id` integer, required
        - `exclude` StrategyTechnology[]
          - `operator` 'AND' | 'OR'
          - `code` 'BSER' | 'CSPD' | 'DVCE' | 'ISPX' | 'OSXX' | 'INVT' | 'VPSZ' | 'VLIN' | 'VCON' | 'VAUD' | 'VSKP' | 'VPLC' | 'DVMD' | 'BRLG' | 'IPTA' | 'HYPL', required
          - `target_value_id` integer, required
      - `day_parts` DayPart[]
        - `user_time` boolean: Defaults to true. true evaluates the hours in the user's local time; false evaluates them in EST.
        - `start_hour` integer, required: Inclusive start hour, from 0 through 23. 10 means the window starts at 10:00.
        - `end_hour` integer, required: Inclusive end hour, from 0 through 23. 10 means the last hour included is 10:00-10:59, so the window ends at 10:59.
        - `days` string[], required: Days of the week as single-letter codes. M Monday, T Tuesday, W Wednesday, R Thursday, F Friday, S Saturday, U Sunday.
      - `language_codes` string[]
      - `recency` TargetingRecencyElementRequest[]
        - `pixel_id` integer, required
        - `from_hour` integer, required
        - `to_hour` integer, required

## Response `200`

strategies bulk update response

- object
  - `data` StrategyFullResponse[]
    - `name` string
    - `description` string
    - `status` boolean
    - `archived` boolean
    - `is_programmatic_guaranteed` boolean
    - `media_type` 'DISPLAY' | 'VIDEO'
    - `use_optimization` boolean
    - `ads_txt_verified` 'ANY' | 'AUTHORIZED_ONLY' | 'AUTHORIZED_DIRECT_ONLY' | 'NONE', nullable
    - `type` 'REM' | 'GBO' | 'AUD'
    - `feature_compatibility` string, nullable
    - `device_graph_only` boolean
    - `mfa_avoidance` 'INHERIT' | 'ALLOW_ALL' | 'EXCLUDE_MFA'
    - `zone_name` string
    - `created_on` string, date-time
    - `updated_on` string, date-time
    - `duration` StrategyDuration: Duration of strategy must not exceed 36 months
      - `use_campaign_start` boolean
      - `use_campaign_end` boolean
      - `start_date` string, date-time, nullable
      - `end_date` string, date-time, nullable
    - `budget` StrategyBudget
      - `budget` number, float, nullable: Must be a valid float between 1 and 10000000 USD or its equivalent in other currency.
      - `currency_code` string
      - `margin_pct` number, float, nullable
    - `frequency` StrategyFrequency
      - `frequency_type` 'even' | 'asap' | 'no-limit' | 't1-optimized' | 'frequency_goal'
      - `frequency_interval` 'hour' | 'day' | 'week' | 'month' | 'not-applicable', nullable
      - `frequency_amount` integer, nullable
      - `frequency_optimization` boolean
    - `concepts` StrategyConcepts
      - `weighting` 'NONE' | 'BUDGET' | 'IMPRESSION'
      - `creative_groups` object[]
        - `concept_id` integer, required
        - `percent` number, float, required: Sum of all percents provided inside group must be equal to 100
    - `groups` string[], nullable
    - `strategy_group_id` integer, nullable: ID of the strategy group this strategy belongs to (one-to-one). Must reference a strategy_groups row whose campaign_id matches this strategy's campaign_id. Pass null to clear the assignment.
    - `entity_type` string
    - `version` integer
    - `goals` StrategyGoals
      - `goal_type` 'spend' | 'reach' | 'cpc' | 'cpe' | 'cpa' | 'roi' | 'ctr' | 'vcr' | 'viewability_rate' | 'vcpm'
      - `goal_value` number, float
      - `min_bid` number, float
      - `max_bid` number, float
      - `roi_target` number, double, nullable
      - `bid_min_devices` integer, nullable
      - `bid_aggressiveness` integer
      - `bid_price_is_media_only` boolean
      - `max_bid_wm` number, float, nullable
      - `use_bid_shading` boolean
      - `flat_rate_cpm` number, float, nullable: This field is only available to certain organizations. For organizations without access it is omitted from responses and cannot be set on create or update.
    - `pacing` StrategyPacing
      - `impression_pacing_type` 'even' | 'asap' | 'no-limit'
      - `impression_pacing_amount` integer, nullable
      - `impression_pacing_interval` 'hour' | 'day'
      - `pacing_type` 'even' | 'asap'
      - `pacing_amount` number, float
      - `pacing_interval` 'hour' | 'day'
      - `pacing_optimization_type` 'monetary' | 'impression'
      - `pacing_optimization_amount` number, float, nullable
      - `use_dba_strategy_pacing` 'always' | 'never' | 'custom'
      - `use_dba_strategy_pacing_after_date` string, date, nullable
    - `inventory` StrategyInventory
      - `supply_type` 'RTB' | 'RMX_API' | 'T1_RMX' | 'MKT' | 'BATCH'
      - `run_on_all_pmp` boolean
      - `run_on_all_exchanges` boolean: default value is false if campaign is programmatic guarantee and is true otherwise
      - `site_restriction_transparent_urls` boolean
      - `domain_restrictions` object
        - `include` DomainRestriction[]
          - `domain` string, required
          - `target_type` 'DOMAIN' | 'APP', required
        - `exclude` DomainRestriction[]
          - `domain` string, required
          - `target_type` 'DOMAIN' | 'APP', required
      - `site_lists` SiteList[]
        - `site_list_id` integer, required
        - `assigned` boolean, required
      - `campaign_site_lists` SiteList[]
        - `site_list_id` integer, required
        - `assigned` boolean, required
      - `deals` Deal[]
        - `deal_id` integer, required
      - `deal_groups` DealGroup[]
        - `deal_group_id` integer, required
      - `supply_sources` SupplySource[]
        - `supply_source_id` integer, required
    - `id` integer
    - `campaign_id` integer
    - `targeting` object
      - `fold_position` string[], nullable
      - `audience` object
        - `include` object[]
          - `operator` 'AND' | 'OR'
          - `segments` StrategyAudienceSegment[]
            - `audience_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
        - `exclude` object
          - `operator` 'AND' | 'OR'
          - `segments` StrategyAudienceSegment[]
            - `audience_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
      - `contextual` object
        - `include` object[]
          - `code` string
          - `operator` 'AND' | 'OR'
          - `segments` StrategyContextualSegment[]
            - `targeting_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
        - `exclude` object
          - `code` string
          - `operator` 'AND' | 'OR'
          - `segments` StrategyContextualSegment[], required
            - `targeting_segment_id` integer, required
            - `user_cpm` number, float, nullable: user_cpm is stored in the currency of the campaign and will not fluctuate with daily exchange rates.
      - `audience_groups` object
        - `include` StrategySegmentGroup[]
          - `operator` 'AND', required
          - `segment_groups` object[], required
            - `segment_group_id` integer
        - `exclude` object
      - `contextual_groups` object
        - `include` StrategySegmentGroup[]
          - `operator` 'AND', required
          - `segment_groups` object[], required
            - `segment_group_id` integer
        - `exclude` object
      - `geofence` object
        - `include` StrategyGeofence
          - `operator` 'AND' | 'OR'
          - `segments` object[]
            - `geofence_segment_id` integer
            - `geofence_segment_factual_id` string
            - `place_list_id` integer
        - `exclude` StrategyGeofence
          - `operator` 'AND' | 'OR'
          - `segments` object[]
            - `geofence_segment_id` integer
            - `geofence_segment_factual_id` string
            - `place_list_id` integer
      - `my_data` object
        - `include` StrategyMyData
          - `operator` 'AND' | 'OR'
          - `pixels` object[], required
            - `pixel_id` integer, required
        - `exclude` StrategyMyData
          - `operator` 'AND' | 'OR'
          - `pixels` object[], required
            - `pixel_id` integer, required
      - `location` object
        - `include` StrategyLocation[]
          - `operator` 'AND' | 'OR'
          - `target_value_id` integer, required
          - `code` 'DMAX' | 'REGN' | 'CITY' | 'COUNTRY', required
        - `exclude` StrategyLocation[]
          - `operator` 'AND' | 'OR'
          - `target_value_id` integer, required
          - `code` 'DMAX' | 'REGN' | 'CITY' | 'COUNTRY', required
      - `technology` object
        - `include` StrategyTechnology[]
          - `operator` 'AND' | 'OR'
          - `code` 'BSER' | 'CSPD' | 'DVCE' | 'ISPX' | 'OSXX' | 'INVT' | 'VPSZ' | 'VLIN' | 'VCON' | 'VAUD' | 'VSKP' | 'VPLC' | 'DVMD' | 'BRLG' | 'IPTA' | 'HYPL', required
          - `target_value_id` integer, required
        - `exclude` StrategyTechnology[]
          - `operator` 'AND' | 'OR'
          - `code` 'BSER' | 'CSPD' | 'DVCE' | 'ISPX' | 'OSXX' | 'INVT' | 'VPSZ' | 'VLIN' | 'VCON' | 'VAUD' | 'VSKP' | 'VPLC' | 'DVMD' | 'BRLG' | 'IPTA' | 'HYPL', required
          - `target_value_id` integer, required
      - `day_parts` DayPart[]
        - `user_time` boolean: Defaults to true. true evaluates the hours in the user's local time; false evaluates them in EST.
        - `start_hour` integer, required: Inclusive start hour, from 0 through 23. 10 means the window starts at 10:00.
        - `end_hour` integer, required: Inclusive end hour, from 0 through 23. 10 means the last hour included is 10:00-10:59, so the window ends at 10:59.
        - `days` string[], required: Days of the week as single-letter codes. M Monday, T Tuesday, W Wednesday, R Thursday, F Friday, S Saturday, U Sunday.
      - `language_codes` object[]
        - `code` string
        - `name` string
      - `ip_addresses` TargetingIpAddressesResponse
        - `restriction` 'INCLUDE' | 'EXCLUDE' | ''
        - `count` integer
      - `postal_codes` TargetingPostalCodesResponse
        - `restriction` string
        - `count` integer
      - `recency` TargetingRecencyElementResponse[]
        - `pixel_id` integer
        - `from_hour` integer
        - `to_hour` integer
  - `meta` ListMetadata
    - `status` string, required: The status of the response, indicating success or failure.
    - `count` integer, required: The number of items returned in the current response.
    - `total_count` integer: The total number of items available in the dataset.
    - `offset` integer: The offset from the start of the dataset, used for pagination.
    - `next_page` string: The URL to fetch the next page of results.
    - `prev_page` string: The URL to fetch the previous page of results.

## Other responses

- `207`: Multi-status updated strategy list
- `400`: Error response
- `401`: Error response
- `403`: Error response

---

[API](https://skmtc.dev/mediamath/apis/campaigns-api.md) - [All operations](https://skmtc.dev/mediamath/apis/campaigns-api/llms.txt) - [OpenAPI document](https://skmtc.dev/mediamath/apis/campaigns-api/revisions/408743891def?raw)
