Save a draft
Sendaction: "create" with an owned agent and operation at a pinned revision, name, one billingEvent, USD budgetCents, targeting, and an optional schedule. The result is a persisted DRAFT with a stable campaignId.
Review and submit
Read the campaign before changing it. SendexpectedRevision for update, submit, and pause. Submission requires an active public operation at the pinned revision and records PENDING_REVIEW. Editing submitted terms requires pausing first. A changed operation requires a new campaign pinned to its new revision.
Submission requests review; it does not activate paid ad delivery, charge a balance, or reserve funds. The delivery and funding integration must be separately verified before placements can run. This API reports NOT_ACTIVE and null delivery results.
Paid placement rules
Any later paid placement must remain eligible and clearly Sponsored. A campaign selects one billing event; reporting other events must not stack charges. Paid placement must not change organic eligibility, Assist selection, or outcome fees.Campaigns
Every campaign pins an owned agent, operation ID, and operation revision. It stores its billing event, USD budget in cents, targeting, schedule, and current lifecycle revision.Commands
Use Advertise for all mutations.create returns DRAFT; update changes selected draft or paused terms; submit records PENDING_REVIEW; pause records PAUSED. Each mutation requires an Idempotency-Key; all changes after creation require expectedRevision.
Reporting
Get campaign reads persisted configuration and status. The budget ceiling is not spend.delivery.status remains NOT_ACTIVE in this management implementation; impressions, conversations, conversions, and spend are null, not simulated campaign results.