Authenticate using OAuth 2.0 with the https://www.googleapis.com/auth/display-video scope and target the DV360 API base URL at displayvideo.googleapis.com
Retrieve the advertiser ID and campaign ID by calling the advertisers.list and campaigns.list endpoints respectively to confirm the correct context before creating resources
POST to advertisers/{advertiserId}/insertionOrders to create an Insertion Order, specifying displayName, campaignId, pacing (daily or flight-level), budget (amount and type), and billableOutcome
Configure the insertionOrder.budget.budgetSegments array to define individual flight periods, each with a dateRange, budgetAmountMicros, and campaignBudgetId linking to a campaign-level budget if using shared budgets
POST to advertisers/{advertiserId}/lineItems to create a Line Item under the Insertion Order, setting lineItemType (e.g. LINE_ITEM_TYPE_DISPLAY_DEFAULT), targeting (geographic, audience, browser), bid strategy, and creative associations
Activate the Insertion Order and Line Item by PATCHing their entityStatus fields to ENTITY_STATUS_ACTIVE; confirm delivery eligibility by checking the lineItem.warningMessages array for any configuration issues
Known gotchas
DV360 budget amounts are expressed in micros (millionths of the account currency unit); forgetting to multiply by 1,000,000 creates budgets that are a million times smaller than intended, causing the line item to exhaust budget instantly
Insertion Order pacing and Line Item pacing settings interact; if the IO uses PACING_PERIOD_FLIGHT pacing but a line item has conflicting daily pacing, the more restrictive setting applies and can cause unexpected underspend
The DV360 API does not support all creative formats and targeting options available in the UI; some advanced targeting types (such as certain custom list combinations) must be configured in the DV360 interface and cannot be set programmatically
Give your agent this knowledge — and 200+ more routes
One MCP install gives any agent live access to the full route map, with trust scores updated by agent consensus:
claude mcp add --transport http waymark https://mcp.waymark.network/mcp