Request Reach Estimate V1

Use this API to request a reach estimate or impressions opportunity forecast for a given ad group

👉

What It Does:

  • Computes potential reach ( impressions) based on the targeting and schedule settings of a given ad group.
    Allows developers to simulate changes to ad group configuration by overriding certain fields in the request payload.
  • Does not persist or modify ad group data — it is strictly a forecasting tool
  • To return a valid reach estimate, the following ad group-level attributes must be available either in the stored ad group OR passed in the request : schedule and targeting.

👉

Simulation (“What-If” analysis) support:

  • You can override ad group-level startDate, endDate and targeting in the request body to simulate changes without modifying the actual ad group.
  • Campaign-level schedules that cascade to ad groups cannot yet be simulated in this API. If budget, schedule and deliverySpeed are set at the campaign level, the API will disregard these values if passed, and the forecast provided will use the original campaign values instead.
  • All overrides are non-persistent. This API does not modify stored campaign or ad group data.

📘

URL:POST/api/v1/reachEstimate

Request Parameters

ParametersNotesTypeRequiredPossible Values
advertiserIdID of advertiser integerYUnique numeric identifier
campaignIdID of the campaignintegerYUnique numeric identifier
adGroupIdID the ad groupintegerYUnique numeric identifier
metricThe specified metric you are requesting an estimate for.

Note: “impressions” is currently the only supported metric.
arrayYValue:
impressions
startDateDate when the ad group is set to go live.

Note:
  • If startDate has been set at the campaign level for the specified ad group:
    the startDate value passed in the API request is ignored, and the forecast in the response is based on the startDate of the campaign
  • If startDate has been set at the ad group level for the specified ad group:
    the forecast is based on the startDate value in the request, not the original value set at the ad group level
datetimeNDate must follow this format:
yyyy-MM-dd'T'HH:mm:ss.SSSXXX

Note: All date and time values are internally converted to Eastern Time (ET) for processing.

All timestamps must be provided in ISO 8601 format. Timestamps are normalized to the start of the hour in Eastern Time (ET)—this means any minutes and seconds will be truncated.

Please account for this when requesting for forecasts.
endDateThe date when ad group ends. For ad groups that run indefinitely, use the value:
endDate = ‘9999-12-30T00:00:00Z’

Note:
  • If endDate has been set at the campaign level for the specified ad group:
    the endDate value passed in the API request is ignored. Instead, the forecast returned in the response is based on the endDate of the campaign
  • If endDate has been set at the ad group level for the specified ad group:
    the forecast is based on the endDate value in the request, not the original value set at the ad group level.
datetimeNDate must follow this format:
yyyy-MM-dd'T'HH:mm:ss.SSSXXX

Note: All date and time values are internally converted to Eastern Time (ET) for processing.

All timestamps must be provided in ISO 8601 format. Timestamps are normalized to the start of the hour in Eastern Time (ET)—this means any minutes and seconds will be truncated.
Additionally, the end date must be set to a time after 12:00 PM ET


Please account for this when requesting for forecasts.
targetingA nested array element with following elements:
  • keywords: ONLY APPLICABLE FOR KEYWORD TARGETING
    • keywordText: string data type
    • matchType: string data type Values: broad, exact
  • Note: only Exact match type is allowed for negative keywords

    • contexual: ONLY APPLICABLE FOR CONTEXTUAL TARGETING
      • id: integer data type
      • reach: string data type
        Values: "tier_1", "tier_2", "tier_3", "tier_4", "tier_5", "tier_6", "tier_7"

    Note: This is how tiers in API call map to the representation on ad center UI:
    Tier mapping: low = [tier_1, tier_2], mid = [tier_3, tier_4], high = [tier_5, tier_6, tier_7]

    • behavioral: ONLY APPLICABLE FOR BEHAVIORAL TARGETING
      • audienceType: string data type Values:
        • retail
        • brand
        • persona
        • custom
      • attribute: string data type Values:
        • For category:
          • historical
          • predictive
        • For brand:
          • historical
          • predictive
          • lapsedbuyers
        • For persona:
          • lifestyle
          • lifestage
      • id:integer data type
    • runOfSite ONLY APPLICABLE FOR ROS TARGETING:
      string data type, Value: true
    • geoTargets
      • id: integer data type

        Note:
        1. If Geo targeting is not specified, the default Country (US) level targeting will be applied
        2. IDs with isDisabled = true from POST/api/v1/targeting/list cannot be used for targeting
Note:
If the targeting values have been set at the ad group level for the specified ad group, the forecast is based on the targeting value in the request, not the original value set at the ad group level.
The values:
• keywords
• contextual
• behavioral
• runOfSite
• geoTargets

Headers


Header NameDescriptionRequiredValues
AuthorizationThe token will provide you the access to the API. It is same for all advertisers you access through the APIYPlease utilize the generated auth_token shared with you at the time of partner onboarding from the Getting Started Guide. This key can be repurposed for SP API access as well.
WM_CONSUMER.IDWe will provide you the consumer ID to access the API. It is same for all advertisers you access through the API.YPlease use the generated ConsumerId shared with you at the time of partner onboarding. Refer to the Getting Started Guide for further explanation on this
WM_SEC.AUTH_SIGNATUREAuth signature as an API keyYUse the signature generator code from Getting Started Guide to generate this value
WM_CONSUMER.intimestampTimestamp for which the auth signature is generated. Use Unix epoch format for the timestampYUse the signature generator code (Getting Started Guide) to generate this value
WM_SEC.KEY_VERSIONWe will provide you with the KEY VERSION to access the API. It is same for all advertisers you access through the APIY1

Sample Request

curl --location --request POST 'https://developer.api.us.walmart.com/api-proxy/service/display/api/v1/api/v1/reachEstimate' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <auth_token>' \
--header 'WM_SEC.AUTH_SIGNATURE: ***********' \
--header 'WM_CONSUMER.ID: abcde-v123-fa2r-a1fs-asd45f6qef' \
--header 'WM_SEC.KEY_VERSION: 1' \
--header 'WM_CONSUMER.intimestamp: 1565309779' \
--data '{ "advertiserId": 16273802, "campaignId": 90279, "adGroupId": 219338, "metric": ["impressions"], "startDate": "2024-06-27T00:00:00Z", "endDate": "2024-12-30T23:59:59Z", "targeting": { "and": [ { "runOfSite": true }, { "geoTargets": [ { "id": 247796189 } ] } ] } }' 

Response

ElementDescriptionType
codeThe response code can have following values:
  • success
  • failure

Click here for more information about Status Codes and Errors
string
metricThe metric that was specified in the request body; i.e., IMPRESSIONSstring
minValueMinimum number of the specified metric for the reach estimate.integer
maxValueMaximum number of the specified metric for the reach estimate.
Note:
  • A null value for maxValue indicates that the maximum value is either undefined or unbound.
  • This field is omitted when there is no defined upper bound for the estimate
integer
detailsDetails of the request statusstring

Sample Response

[ { "code": "success", "metric": "IMPRESSIONS", "minValue": 10000, "maxValue": 15000, "details": [ "IMPRESSION_ESTIMATE_SUCCESS" ] }
]