
Technical Reference: This guide shows how to use the build_creative task. For complete API specifications, see the task reference documentation.
Overview
The Creative Protocol provides AI-powered creative generation:build_creative: Generate creative content using AI with either static manifests or dynamic codepreview_creative: Generate previews of creative manifestslist_creative_formats: Discover supported creative formats
Quick Start: Generate Your First Creative
Step 1: Basic Creative Generation
Here’s the simplest possible request to generate a native display ad:Step 2: Understanding the Response
You’ll receive a structured creative manifest:Step 3: Preview Your Creative
Preview the manifest to see what it looks like before iterating:preview_creative for device variants, batch preview, and output format options.
Step 4: Refine Your Creative
Iterate by passing the previous output’screative_manifest back with a new message. Alternatively, update the brief asset (assets.brief) to change the creative direction — the brief is the buyer-owned source of truth for what the creative should be.
Common Patterns
Using brand identity
Provide brand context for better creative generation:Using Your Own Assets
Provide existing assets to incorporate into the creative:Generating Dynamic Code
The creative agent decides whether to return a static manifest or dynamic code based on the brief’s requirements. When the creative requires runtime logic — like weather-responsive behavior, time-of-day adaptation, or location-based content — the agent returns executable code in the manifest’s assets. Use a descriptive brief that implies dynamic behavior:Attaching creatives to a media buy
Once you’ve built and previewed your creative, attach it to a media buy. Pass the manifest frombuild_creative as a creative in create_media_buy (see create_media_buy for the full request structure):
sync_creatives to upload creatives to the sales agent’s library before referencing them in a media buy.
Format Discovery
Standard Formats
Common format IDs you can use immediately:display_native- Native advertising formatdisplay_300x250- Medium rectangle bannervideo_standard_30s- 30-second video ad
Publisher-Specific Formats
For custom publisher formats, specify the source:Seller-side generation (brief in media buy)
The examples above usebuild_creative to generate creatives interactively. A different pattern applies when the seller generates creatives at serve time — contextual ads, page-matched display, or AI-generated native.
In this flow, the sales agent implements both the Media Buy Protocol and the Creative Protocol. The buyer provides a brief as part of create_media_buy, and the seller generates creatives at serve time without any separate build_creative call.
How it works
-
Discover generative formats — Call
list_creative_formatson the sales agent. Look for formats whereformat_id.agent_urlpoints to the sales agent itself. - Submit brief in media buy — Include a creative with the brief as an asset:
- Preview before launch — Call
preview_creativeon the sales agent with the brief manifest andcontext_descriptioninputs to see representative samples of what the agent will generate. Usequality: "draft"for fast iteration,quality: "production"for stakeholder review. These are illustrative — real output depends on live signals at serve time.
create_media_buy. See Previewing generative creative for the full mental model.
- Seller generates at serve time — The seller uses the brief plus the buyer’s brand identity to generate page-tailored creatives per impression or per page context. The brief and brand identity act as guardrails — the agent generates within these constraints. No buyer action is required for ongoing generation.
-
Review generated variants — Call
get_creative_deliveryon the sales agent (it implements the Creative Protocol) to see what was generated, including variant manifests and generation context:
get_creative_delivery, use max_variants to control how many variants are returned per creative. Agents select which variants to return based on their own criteria — typically by impression volume (most-served first), but some may use recency or representative sampling. For high-volume generative campaigns, expect that only a subset of all generated variants is retained. Request max_variants early and often during the campaign rather than relying on a single post-flight pull.
Key differences from build_creative
| Aspect | build_creative | Brief in media buy |
|---|---|---|
| When generation happens | On demand, before campaign starts | At serve time, throughout campaign |
| Who generates | Standalone creative agent or sales agent | Sales agent (integrated) |
| Pre-launch preview | Immediate (manifest is the creative) | Representative samples (brief + simulated context) |
| Buyer interaction | Interactive — review, iterate, approve | Preview samples, then set-and-forget — brief is the ongoing constraint |
| Variant visibility | Immediate (returned in response) | After serving (via get_creative_delivery) |
| Format authority | format_id.agent_url points to the agent that owns the format | format_id.agent_url is the sales agent itself |
Guardrails for serve-time generation
When the seller generates creatives at serve time, the buyer’s controls are:- The brief — explicit instructions on tone, topics, exclusions (“Avoid competitor comparisons”)
- Brand identity — colors, logos, voice guidelines, approved assets via brand.json
- Pre-flight preview — sample what the agent generates across contexts before launch
- Post-flight audit — review variant manifests and generation context via
get_creative_delivery, replay specific variants viapreview_creativevariant mode
create_media_buy. For regulated categories (financial services, pharma), include compliance requirements in the brief — agents that declare supports_compliance: true in their creative capabilities validate disclosures and required elements during generation.
Conversational and interactive formats
Some generative formats are stateful — AI chat, interactive experiences, conversational native ads. These follow the same brief-in-media-buy pattern but have unique characteristics worth understanding.Format discovery
A conversational format inlist_creative_formats might look like:
Brief structure
The brief for a conversational format includes persona, topic boundaries, and guardrails:Previewing conversations
Pre-flight previews for conversational formats produce a representative first interaction. Usecontext_description to simulate different entry points:
interactive_url, reviewers can interact with the experience directly in a sandbox — testing different conversation paths, verifying guardrails, and checking tone.
Testing guardrails: Include adversarial contexts in your preview inputs to verify the agent respects brief constraints:
interactive_url where reviewers can test the conversation live:
interactive_url provides a sandbox where reviewers can have a real conversation with the agent, testing different paths and verifying guardrails interactively. Static previews show a representative first interaction; the sandbox shows how the agent actually behaves.
Variant manifests for conversations
After the campaign runs,get_creative_delivery returns variant manifests that capture what the agent produced. For conversational formats, each variant represents a conversation session:
Session management and data handling
Conversational formats raise considerations that static ads do not:- Turn limits: Include turn or duration limits in the brief (“End the conversation gracefully after 5 exchanges”). Agents may also enforce their own limits — check the format description in
list_creative_formats. - Escalation: Define what the agent should do when it cannot answer (“If the user asks about returns, provide a link to our help center”). Without explicit guidance, agent behavior on out-of-scope questions is undefined.
- User data in transcripts: Variant manifests from
get_creative_deliverymay include user messages. For regulated industries, confirm the agent’s data handling practices (anonymization, retention limits) before launch. - Cost implications: Conversational ads with per-engagement or per-turn pricing can have variable costs. Review the product’s pricing model in
get_productsto understand how conversation depth affects spend.
get_creative_delivery.
See Previewing generative creative for the full mental model on previewing stateful formats.
Next steps
- Multi-format generation: Generate creatives for multiple sizes in one call with
target_format_ids— see Multi-format generation - Browse examples: See Task reference for
build_creativeexamples - Sales agent creative flow: See Creative capabilities on sales agents for seller-side generation
- Delivery reporting: See get_creative_delivery for variant-level analytics
Common Issues
Format Not Found
If you get a format error, the publisher may not support that format. Try:- Use a standard AdCP format first (
display_native,video_standard_30s) - Check the publisher’s
list_creative_formatsendpoint - Verify the
format_id.agent_urlis correct
Understanding the quality model
Creative quality has two independent axes:- Build quality (
qualityonbuild_creative): Controls generation fidelity — how much compute goes into producing the creative.draftproduces rough concepts fast (lower-resolution images, simplified layouts).productionproduces polished, final-quality output. - Preview quality (
qualityonpreview_creative,preview_qualityonbuild_creative): Controls render fidelity — how the creative is visualized for review.draftproduces fast, lower-fidelity renderings for rapid iteration.productionproduces full-quality renderings for stakeholder review.
| Build | Preview | Use case |
|---|---|---|
| draft | draft | Rapid exploration — fast concepts, fast previews |
| draft | production | Stakeholder review of rough concepts — full-quality rendering of draft creative |
| production | production | Final review — polished creative, polished preview |
| production | draft | Thumbnail grid — final creative shown as quick thumbnails for selection |
Creative Quality Issues
To improve creative output:- Build quality and preview quality are independent axes — see Understanding the quality model above. Use
draftfor iteration,productionfor final review. - Be more specific in your message: “Create a minimalist coffee ad with earth tones”
- Provide comprehensive brand identity with assets and guidelines
- Iterate using refinement — pass back the manifest with a new message, or update the brief asset
Asset Management
Assets are provided via brand identity:- Include assets in brand identity with descriptive tags
- Use
asset_filtersin requests to select specific assets - Reference product catalogs for large inventories