Presigned URLs
The recommended pattern is presigned URLs. Most cloud storage providers support generating time-limited URLs that grant temporary read access without requiring authentication headers.How it works
- Buyer agent receives or locates a private asset (e.g., a brand logo in S3)
- Buyer agent generates a presigned URL with a short expiration
- Buyer agent passes the presigned URL in the creative manifest
- Creative agent fetches the asset like any other public URL
The only difference from a standard manifest is the URL itself. The
banner_image.url contains presigned query parameters (X-Amz-Algorithm, X-Amz-Expires, X-Amz-Signature). No other fields change.Provider examples
Expiration guidelines
Set presigned URL expiration long enough to cover the full workflow, but no longer than necessary.| Workflow | Suggested expiration |
|---|---|
build_creative only | 1 hour |
build_creative + preview_creative | 2 hours |
Full pipeline (build, preview, iterate, sync_creatives) | 4 hours |
Uploading local files
For assets that don’t already live in cloud storage — local files, Slack attachments, email attachments — the buyer agent should upload them to its own storage first, then generate a presigned URL.Why not auth headers?
AdCP manifests are declarative data passed between agents as JSON. Adding per-URL authentication headers would mean sharing storage credentials across trust boundaries — every system that touches the manifest (creative agent, preview service, ad server, logging infrastructure) would need to handle those credentials securely. Presigned URLs avoid this by encoding authorization into the URL itself:- Scoped to a single object with read-only access
- Time-limited with built-in expiration
- No credential forwarding required
- Revocation is automatic (the URL expires)
Related
- Creative manifests — manifest structure and asset references
- Asset types — requirements for each asset type
build_creative— generating creatives from manifestssync_creatives— syncing creatives to an agent-hosted creative library