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

# Ad Formats

> Placement types available on the OpenRTB path.

One format is available on the oRTB path today: **sponsored message** — a native card rendered inline in the chat stream. The impression is always a single Native 1.2 unit. Full asset spec in [BidRequest](https://docs.thrad.ai/dsp/api-reference/ortb-bid.md).

The card renders in one of two modes depending on which image asset you return:

* **image** — hero product photo + copy
* **text** — advertiser logo + copy, no hero image

## Which mode applies

The Native request offers two image assets:

| Asset id | `img.type` | Role |
| - | - | - |
| 3 | `3` (main) | Hero/product image |
| 4 | `1` (icon) | Advertiser logo |

Asset `id`s are **0-based** (title=`0` … CTA=`5`); your response must echo the same ids the request sent.

Both are optional in the request. Which one you populate determines the render:

| Asset 3 (main) | Asset 4 (icon) | Rendered as |
| - | - | - |
| Populated | Any | **image** — full card with the product photo. Logo (if sent) appears as a small brand mark. |
| Empty / omitted | Populated | **text** — compact card with the logo + copy. |
| Empty / omitted | Empty / omitted | Bid rejected — no visual to render. |

Rule of thumb: **send the product photo in asset 3 if you have one; otherwise send the logo in asset 4**.

### image

![Sponsored message rendered with a hero product image](https://mintcdn.com/thrads-5feffa3d/Oy6te9OMcdFzEUX1/images/dsp/placement_image_example.png?fit=max\&auto=format\&n=Oy6te9OMcdFzEUX1\&q=85\&s=edefdf4ea77e4baf87d75f93d1d5536c)

Sponsored message rendered with a hero product image

```json theme={null}
{
  "native": {
    "assets": [
      { "id": 0, "title": { "text": "Check out the Nike Air Zoom Alphafly" } },
      { "id": 1, "data": { "value": "The marathon record-holder's shoe." } },
      { "id": 2, "data": { "value": "Nike" } },
      { "id": 3, "img": { "type": 3, "url": "https://cdn.nike.com/alphafly.png" } },
      { "id": 4, "img": { "type": 1, "url": "https://cdn.nike.com/logo.png" } },
      { "id": 5, "data": { "value": "Shop Now" } }
    ],
    "link": { "url": "https://example.com/track/click/abc123" }
  }
}
```

### text

![Sponsored message rendered with logo only](https://mintcdn.com/thrads-5feffa3d/Oy6te9OMcdFzEUX1/images/dsp/sponsored_message.png?fit=max\&auto=format\&n=Oy6te9OMcdFzEUX1\&q=85\&s=f72c991b71396a85538d5030bf0c2e20)

Sponsored message rendered compactly with logo + copy

```json theme={null}
{
  "native": {
    "assets": [
      { "id": 0, "title": { "text": "Best Running Shoes 2026" } },
      { "id": 1, "data": { "value": "Get 20% off premium running shoes today." } },
      { "id": 2, "data": { "value": "Acme Sports" } },
      { "id": 4, "img": { "type": 1, "url": "https://cdn.acmesports.com/logo.png" } },
      { "id": 5, "data": { "value": "Shop Now" } }
    ],
    "link": { "url": "https://example.com/track/click/abc123" }
  }
}
```

## Publisher constraints

The mode the publisher accepts is encoded in `imp[].tagid` — there is no separate `ext.thrad.config` flag to parse:

* `*_image` — publisher accepts both modes. Asset 3 (main image) is optional; asset 4 (logo) is optional. Image preferred.
* `*_text` — publisher cannot render images. The Native request omits asset 3 entirely and marks asset 4 (logo) as **required**. If your response includes `image_url` (asset 3) on a text-mode request, the SSP drops it server-side before render — your bid still wins on the logo if asset 4 is populated, otherwise the bid is silently lost.

The simplest contract that keeps you eligible across every placement: **always populate asset 4 (the logo)**, and add asset 3 (the hero image) whenever you have one. Sending the logo is cheap and lets the SSP fall back to text-mode rendering when needed.

## Coming soon

Multi-tile formats (carousel) are not available on the oRTB path yet. They will be rolled out progressively.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.