Skip to main content

Artifacts

An artifact is a unit of content adjacent to an ad placement. When evaluating brand suitability, you’re asking: “Is this artifact appropriate for my brand’s ads?”

What Is an Artifact?

Artifacts represent the content context where an ad appears:
  • A news article on a website
  • A podcast segment between ad breaks
  • A video chapter in a YouTube video
  • A social media post in a feed
  • A scene in a CTV show
  • An AI-generated image in a chat conversation
Artifacts are identified by property_id + artifact_id - the property defines where the content lives, and the artifact_id is an opaque identifier for that specific piece of content. The artifact_id scheme is flexible - it could be a URL path, a platform-specific ID, or any consistent identifier the property owner uses internally.

Structure

Schema: artifact.json Web article:
Podcast segment (note: no url — the property is identified by apple_podcast_id, and the audio asset uses a secured URL):
CTV scene (the artifact_id encodes show, season, episode, and scene):

Required Fields

Optional Fields

Variants

The same artifact may have multiple variants:
  • Translations - English version vs Spanish version
  • A/B tests - Different headlines being tested
  • Temporal versions - Content that changed on Wednesday
Use variant_id to distinguish between them:
The combination of artifact_id + variant_id must be unique within a property. This lets you track which variant a user saw and correlate it with delivery reports.

Asset Types

Assets are the actual content within an artifact. Everything is an asset - titles, paragraphs, images, videos.

Text

Roles: title, description, paragraph, heading, caption, quote, list_item Each text asset can have its own language tag for mixed-language content.

Image

Video

Audio

Metadata

Artifact-level metadata describes the artifact as a whole, not individual assets:
This is separate from assets because it’s about the artifact container, not the content itself.

Secured Asset Access

Many assets aren’t publicly accessible - AI-generated images, private conversations, paywalled content. The artifact schema supports authenticated access. For ongoing partnerships, configure access once during onboarding rather than per-request:
  1. Service account sharing - Grant the verification agent access to your cloud storage
  2. OAuth client credentials - Set up machine-to-machine authentication
  3. API key exchange - Share long-lived API keys during setup
This happens during the activation phase when the seller first receives content standards from a buyer.

Per-Asset Authentication

When pre-configured identity access isn’t possible, attach a short-lived, asset-scoped token to individual assets:
Note on token size: For artifacts with many assets, per-asset tokens can significantly increase payload size. Consider:
  1. Pre-configured access - Set up service account access once during onboarding
  2. Shared token reference - Define tokens at the artifact level and reference by ID
  3. Signed URLs - Use pre-signed URLs where the URL itself is the credential
The url field is the access URL - it may differ from the artifact’s canonical/published URL. For example, a published article at https://news.example.com/article/123 might have assets served from https://cdn.example.com/secured/....

Access Methods

Service Account Access

service_account is identity-based — no credentials are sent in the response. During onboarding the seller grants the buyer’s (or verification agent’s) own service account read access to the asset store; at fetch time the client authenticates with that identity using the cloud provider’s normal credential chain (GCP Application Default Credentials, AWS SigV4). For GCP:
For AWS:
Never place service-account keys, private keys, or access secrets in a response payload — they would travel across agent transport, logs, and model context. Identity-based access keeps secrets off the wire entirely.

Pre-Signed URLs

For one-off access without sharing credentials:
The URL itself contains the credentials - no additional authentication needed.

Property Identifier Types

The property_id uses standard identifier types from the AdCP property schema:

Artifact ID Schemes

The property owner defines their artifact_id scheme. Examples: The verification agent doesn’t need to understand the scheme - it’s opaque. The property owner uses it to correlate artifacts with their content.