> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kontext.so/llms.txt
> Use this file to discover all available pages before exploring further.

# Ad formats

> Image, video, interstitial, and banner — what each format is and how the ad server picks which one to deliver.

Every Kontext ad has two parts:

1. **AI-generated text** that picks up the tone of the assistant message and continues it naturally, so the transition into the ad reads as part of the conversation rather than a hard break.
2. **A format-specific creative** rendered right below the text — an image, a video, a banner, or, for interstitial, a CTA that opens a full-screen experience.

You mount the same component (`<InlineAd messageId="..." />` or its platform equivalent) for all four formats — the SDK figures out the right way to render whatever the ad server returns.

## The four formats

<CardGroup cols={2}>
  <Card title="Image ad" icon="image">
    AI-generated text followed by a static image creative and a call-to-action.
  </Card>

  <Card title="Video ad" icon="video">
    AI-generated text followed by a short auto-playing video with a call-to-action. Viewability is tracked through standard MRC rules.
  </Card>

  <Card title="Interstitial ad" icon="window-maximize">
    AI-generated text followed by a tappable creative that opens a full-screen modal ad. Designed for high-impact, low-frequency moments.
  </Card>

  <Card title="Banner ad" icon="rectangle-ad">
    AI-generated text followed by a compact horizontal banner — smaller footprint than an image ad, suited for slots where vertical space is at a premium.
  </Card>
</CardGroup>

## Personalization for interstitial ads

Interstitial is our most advanced format — we use the **Character** object you pass on the session to drive the pre-roll and post-roll text and visuals so the interstitial feels like an extension of the assistant the user is already talking to.

For interstitial to work well, the following Character fields are **required**:

* `id`
* `name`
* `avatarUrl`

The remaining fields are **useful but optional** — pass them when you have the data, and the personalization gets sharper:

* `greeting` — drives the interstitial pre-roll text; strongly recommended for this format.
* `persona` — a short personality description.
* `tags` — themes, interests, audience signals.
* `isNsfw` — flag adult-targeted characters so we filter creatives accordingly.

The Character object is set once when you create the session (see [Session lifecycle](/concepts/session)) and pinned for that conversation. The exact field names per platform live on the [SDK pages](/overview).

## How a format is chosen

You don't pick a format yourself for each ad. **The ad server picks** based on:

* The placement code your `<InlineAd>` is bound to.
* The conversation context (messages, character) the SDK forwards on `/preload`.
* Which creatives the auction returns and what they perform best as.
* The user's device and locale.

This way the same component automatically renders an image ad in one slot, a video ad in another, and an interstitial when the campaign calls for it — without you writing format-specific code.

## What you can adjust

You can pass a `theme` to each ad component (typically `"light"` or `"dark"`) so the ad picks up the right base palette. Beyond that, we tailor the creative's design — typography, spacing, colors, and overall layout — for every publisher individually, so the ad blends into your app instead of feeling bolted on. If you have a specific look in mind, tell us during onboarding or reach out via [Support](/resources/support).

## Where to next

<CardGroup cols={2}>
  <Card title="Displaying ads" icon="window" href="/concepts/displaying-ads">
    Where the ad slot goes and which message id to bind it to.
  </Card>

  <Card title="Ad lifecycle events" icon="bell" href="/concepts/events">
    Events you receive as the ad renders, becomes visible, and is clicked.
  </Card>

  <Card title="Compliance" icon="check-double" href="/resources/compliance">
    Viewability, OMID certification, and platform policies that apply per format.
  </Card>

  <Card title="Support" icon="envelope" href="/resources/support">
    Reach out to change which formats are allowed on your placement codes.
  </Card>
</CardGroup>
