POST /api/v2/buyer/advertisers/{advertiserId}/context-records
Uploads exogenous context data — promos, weather, competitor activity, seasonality — so the learning engine can partial these effects out when estimating incremental impact. Each record covers one geo and time window. Up to 5,000 records per call.
Request
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
advertiserId | string | Yes | Path parameter — the owning advertiser |
records | array | Yes | 1–5000 records |
records[].geo | string | Yes | Geo identifier (e.g. US-CA) |
records[].timeWindowStart | string | Yes | Date YYYY-MM-DD |
records[].timeWindowEnd | string | Yes | Date YYYY-MM-DD |
records[].promoActive | boolean | No | Whether a promo ran (default false) |
records[].promoType | string | No | Free-text promo descriptor |
records[].temperatureAvg | number | No | Average temperature for weather effects |
records[].competitorActivity | object | No | Free-form competitor signals |
records[].seasonalityIndex | number | No | Seasonality multiplier |
records[].flightStatus | enum | No | active, dark, pre_flight, post_flight (default active) |
Response
(customer, seat, geo, time window), so re-uploading the same key updates in place.
Errors
400 VALIDATION_ERROR— emptyrecords, more than 5,000 records, a missing required field, or a malformed date.404 NOT_FOUND—advertiserIddoes not exist or is not visible to the authenticated customer.
Related
Measurement tasks
All measurement operations
Measurement overview
Pipeline, belief state, and concepts
Upload measurement records
Upload outcome records