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

# OpenAI Ads compatibility

> What you can and cannot do with OpenAI Ads through Apostra.

This page compares the OpenAI Ads capabilities represented in the
Apostra adapter with what Apostra currently makes available to buyers.
It answers a practical question: **what can I do through Apostra today, and
what would still require another path?**

<Note>
  **Last reviewed 2026-08-21.** This is Apostra's description of
  its own adapter, based on the implementation and the linked provider
  documentation. OpenAI Ads has not reviewed or endorsed this page.
  Availability can still vary by account permissions, market, and provider access.
</Note>

## At a glance

| Area                 | 🟢 Available | 🟡 Partial | 🔵 Testing | ⚪ Planned |
| -------------------- | ------------ | ---------- | ---------- | --------- |
| Campaign products    | **6**        | **0**      | **0**      | **0**     |
| Creative formats     | **2**        | **0**      | **0**      | **0**     |
| Adapter capabilities | **10**       | **0**      | **0**      | **6**     |

### How to read availability

* 🟢 **Available** — Offered through Apostra now, subject to your ad account's permissions and eligibility with the provider.
* 🟡 **Partial** — Some of the workflow is available; the Comments column explains the boundary.
* 🔵 **Testing** — Apostra is validating the workflow before offering it broadly.
* ⚪ **Planned** — Not offered through Apostra yet. The provider may still support it directly; Comments explains why and links a roadmap reference.

## Roadmap

The adapter roadmap is tracked in AI-6371 (a plain-text reference — Apostra's internal issue tracker is not public).
This roadmap tracks OpenAI Ads product completeness, partner feedback, and live readiness. Every row that is not currently available shows
that reference or a more specific one in its References column, so customers
and partners can quote a stable identifier when asking about a capability.

## Connection, accounts, and identity

OpenAI Ads connects to Apostra through OAuth or an account-scoped API key. Connecting authorizes Apostra to reach your Advertiser account (each OAuth grant or API key is scoped to one advertiser), which you then map to your advertisers. The mapped account decides which OpenAI Ads tenant a buy runs on: a media buy for an unmapped advertiser fails closed with `account_mapping_required` rather than silently using another account. Connection, account-discovery, and revocation behavior is the same across ad platforms — see [Platform accounts and advertiser mapping](/v2/concepts/ad-platform-accounts) for the full model and the [OpenAI Ads section of the connecting guide](/v2/guides/connecting-ad-platforms#openai-ads) for OpenAI Ads-specific permissions.

| Apostra concept                             | OpenAI Ads concept         | What it represents                                                                                   |
| ------------------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------- |
| Account (`account`)                         | ad\_account                | One OAuth grant or API key resolves to one OpenAI ad account and must match the selected connection. |
| Media Buy (`media_buy`)                     | campaign                   | Objective, lifetime budget, status, flight, and top-level targeting container.                       |
| Package (`package`)                         | ad\_group                  | Bid, billing, context, audiences, product selection, and package delivery.                           |
| Creative Assignment (`creative_assignment`) | ad                         | Binds a chat card or product template to an ad group.                                                |
| Creative (`creative`)                       | file + ad creative payload | Chat cards upload a durable image; product templates reuse feed-owned image and destination data.    |

## Campaign products

| Feature                  | Availability | References                                                                    | Comments                   |
| ------------------------ | ------------ | ----------------------------------------------------------------------------- | -------------------------- |
| Chat Card Impressions    | 🟢 Available | [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns) | Available through Apostra. |
| Chat Card Clicks         | 🟢 Available | [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns) | Available through Apostra. |
| Chat Card Conversions    | 🟢 Available | [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns) | Available through Apostra. |
| Product Feed Impressions | 🟢 Available | [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns) | Available through Apostra. |
| Product Feed Clicks      | 🟢 Available | [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns) | Available through Apostra. |
| Product Feed Conversions | 🟢 Available | [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns) | Available through Apostra. |

## Creative formats

These rows describe **Apostra availability**, not a claim that the ad platform
itself prohibits an unavailable format.

| Feature             | Availability | References                                                                    | Comments                   |
| ------------------- | ------------ | ----------------------------------------------------------------------------- | -------------------------- |
| Chat Card           | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) | Available through Apostra. |
| Product Ad Template | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) | Available through Apostra. |

## What the adapter can do

| Feature                | Availability | References                                                                              | Comments                                                                                                                                                                                                                                                                                                                                                                                                                                                                             |
| ---------------------- | ------------ | --------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| List Accounts          | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Available through Apostra.                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Sync Accounts          | ⚪ Planned    | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) · AI-6371 | Account synchronization is not implemented. Current boundary: Apostra implementation/testing.                                                                                                                                                                                                                                                                                                                                                                                        |
| Get Products           | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Six governed objective × creative product mappings                                                                                                                                                                                                                                                                                                                                                                                                                                   |
| Sync Creatives         | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | POST /files and typed creative validation                                                                                                                                                                                                                                                                                                                                                                                                                                            |
| List Creatives         | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Durable Apostra creative identities plus provider readback                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Preview Creative       | ⚪ Planned    | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) · AI-6371 | OpenAI's [Ads reference](https://developers.openai.com/ads/api-reference/ads) names an expiring ad-preview operation, but its published [OpenAPI schema](https://developers.openai.com/ads/openapi.json) does not define the operation or a response. Apostra therefore cannot verify a public HTTPS preview URL or its exact expiry timestamp and does not offer this capability. Current boundary: both Apostra's implementation and the ad platform's API or account eligibility. |
| Create Media Buy       | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Available through Apostra.                                                                                                                                                                                                                                                                                                                                                                                                                                                           |
| Get Media Buys         | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Paginated campaign hierarchy reconstruction                                                                                                                                                                                                                                                                                                                                                                                                                                          |
| Update Media Buy       | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Governed campaign, ad-group, ad, targeting, bid, status, and archive updates                                                                                                                                                                                                                                                                                                                                                                                                         |
| Get Media Buy Delivery | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Campaign insights with package, creative, product, country, and device projections                                                                                                                                                                                                                                                                                                                                                                                                   |
| Get Signals            | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Account-owned custom audience discovery and readiness                                                                                                                                                                                                                                                                                                                                                                                                                                |
| Sync Audiences         | ⚪ Planned    | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) · AI-6371 | No governed provider member-delta lifecycle is available. Current boundary: Apostra implementation/testing.                                                                                                                                                                                                                                                                                                                                                                          |
| Sync Event Sources     | 🟢 Available | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)           | Conversion event-setting discovery and verification                                                                                                                                                                                                                                                                                                                                                                                                                                  |
| Log Event              | ⚪ Planned    | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) · AI-6371 | Conversions API secrets remain outside the buyer-facing adapter. Current boundary: Apostra implementation/testing.                                                                                                                                                                                                                                                                                                                                                                   |
| Sync Catalogs          | ⚪ Planned    | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) · AI-6371 | Catalog synchronization is not implemented. Current boundary: Apostra implementation/testing.                                                                                                                                                                                                                                                                                                                                                                                        |
| Get Account Financials | ⚪ Planned    | [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart) · AI-6371 | Account financial reporting is not implemented. Current boundary: Apostra implementation/testing.                                                                                                                                                                                                                                                                                                                                                                                    |

## Placement choices

Apostra does not expose a separate OpenAI Ads placement selector.

## Targeting

| Feature                         | Availability | References                                                                        | Comments                                                      |
| ------------------------------- | ------------ | --------------------------------------------------------------------------------- | ------------------------------------------------------------- |
| Geo Countries                   | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | Country IDs resolved through account-scoped geo lookup        |
| Geo Regions                     | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | ISO 3166-2 regions resolved through account-scoped geo lookup |
| Dma                             | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | Nielsen DMA IDs where OpenAI exposes them                     |
| Context Hints                   | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | Up to 100 canonicalized ad-group context hints                |
| Audience Include                | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | Ready account-owned custom audience IDs                       |
| Audience Exclude                | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | Ready account-owned custom audience IDs                       |
| Custom Audience Bid Multipliers | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | Provider micros values with exact ad-group readback           |
| Product Set                     | 🟢 Available | [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting) | One typed filter per supported feed field                     |

## Reporting

Apostra reports OpenAI Ads delivery day by day (there is no hourly delivery breakdown), aggregated nightly from adapter-reported delivery, in the advertiser's home currency using the booked or historical exchange rate — any cross-currency rollup is always labeled an estimate and is never used for billing. See [Reporting overview](/v2/guides/reporting-overview) for the full model. Apostra does not currently publish an attribution-finality window for OpenAI Ads; the table below lists every metric the adapter surfaces today.

| Feature                                 | Availability | References                                                                  | Comments                                                        |
| --------------------------------------- | ------------ | --------------------------------------------------------------------------- | --------------------------------------------------------------- |
| Impressions                             | 🟢 Available | [OpenAI insights](https://developers.openai.com/ads/api-reference/insights) | Campaign, package, creative, and optional segment totals        |
| Clicks                                  | 🟢 Available | [OpenAI insights](https://developers.openai.com/ads/api-reference/insights) | Campaign, package, creative, and optional segment totals        |
| Spend                                   | 🟢 Available | [OpenAI insights](https://developers.openai.com/ads/api-reference/insights) | Provider-authoritative currency amount                          |
| Conversions                             | 🟢 Available | [OpenAI insights](https://developers.openai.com/ads/api-reference/insights) | Canonical conversions exclude view-through attribution          |
| Ext.Openai Ads.View Through Conversions | 🟢 Available | [OpenAI insights](https://developers.openai.com/ads/api-reference/insights) | Reporting-only provider metric                                  |
| Breakdowns                              | 🟢 Available | [OpenAI insights](https://developers.openai.com/ads/api-reference/insights) | Hourly, daily, or monthly subject to provider combination rules |

## Webhooks and async lifecycle

OpenAI Ads does not push status, delivery, or reporting events into Apostra — every campaign product declares `supports_webhooks: false`.

* **Status.** Apostra does not currently poll OpenAI Ads in the background for creative or media-buy status changes; status reflects what the adapter returned on your last call.
* **Delivery.** Apostra fetches delivery numbers (spend, impressions, clicks) live from OpenAI Ads on demand, only when you call `get_media_buy_delivery` directly. The `/reporting/metrics` endpoints never call the adapter either way — they read from a separately-populated store (see Reporting below), so a reporting request does not itself refresh provider delivery.

This is separate from Apostra's own buyer webhook subscriptions — an unrelated account-level event feed (currently `discovery.revision` only), documented in [Buyer webhooks](/v2/buyer/webhooks).

## Market and account availability

Apostra does not promise that every feature is enabled for every account or
market. The current planning list includes `AU`, `BR`, `CA`, `JP`, `KR`, `MX`, `NZ`, `GB`, `US`; your selected account still determines final availability.

## Important limitations

* **the ad platform's API.** Initial product-feed connection and full uploads must be completed in OpenAI Ads Manager or by SFTP; the API does not perform that setup.
* **the ad platform's API.** OpenAI Ads does not expose a placement selector, so Apostra does not offer one.
* **the ad platform's API or your account's eligibility.** Market and geography availability is determined by the selected OpenAI Ads account at request time.
* **both Apostra's implementation and the ad platform's API or account eligibility.** OpenAI's Ads reference names an expiring ad-preview operation, but its published OpenAPI schema does not define the operation or response, and Apostra has no verified public HTTPS preview URL to return. The account preview URL is only a favicon preview, and Apostra does not substitute it or an approximate render.
* **Apostra implementation/testing.** Apostra has not yet completed end-to-end account validation for these workflows.

## Technical mapping

Engineering-level detail — raw provider objectives, billing enums, optimization
codes, and object-field mappings. Not required reading to understand what
Apostra can do with OpenAI Ads; see the tables above for that.

<AccordionGroup>
  <Accordion title="Campaign product configuration">
    | Product                                                          | Provider objective | Optimization  | Billing       |
    | ---------------------------------------------------------------- | ------------------ | ------------- | ------------- |
    | Chat Card Impressions (`openai_ads_chat_card_impressions`)       | `standard`         | `impressions` | `impressions` |
    | Chat Card Clicks (`openai_ads_chat_card_clicks`)                 | `standard`         | `clicks`      | `clicks`      |
    | Chat Card Conversions (`openai_ads_chat_card_conversions`)       | `standard`         | `conversions` | `clicks`      |
    | Product Feed Impressions (`openai_ads_product_feed_impressions`) | `product_feed`     | `impressions` | `impressions` |
    | Product Feed Clicks (`openai_ads_product_feed_clicks`)           | `product_feed`     | `clicks`      | `clicks`      |
    | Product Feed Conversions (`openai_ads_product_feed_conversions`) | `product_feed`     | `conversions` | `clicks`      |
  </Accordion>

  <Accordion title="Creative format shapes">
    | Format                                                 | OpenAI Ads shape      |
    | ------------------------------------------------------ | --------------------- |
    | Chat Card (`openai_ads_chat_card`)                     | chat\_card            |
    | Product Ad Template (`openai_ads_product_ad_template`) | product\_ad\_template |
  </Accordion>

  <Accordion title="Targeting field mapping">
    | Targeting choice                                                    | Provider field                                                  |
    | ------------------------------------------------------------------- | --------------------------------------------------------------- |
    | Geo Countries (`geo_countries`)                                     | `Country IDs resolved through account-scoped geo lookup`        |
    | Geo Regions (`geo_regions`)                                         | `ISO 3166-2 regions resolved through account-scoped geo lookup` |
    | Dma (`dma`)                                                         | `Nielsen DMA IDs where OpenAI exposes them`                     |
    | Context Hints (`context_hints`)                                     | `Up to 100 canonicalized ad-group context hints`                |
    | Audience Include (`audience_include`)                               | `Ready account-owned custom audience IDs`                       |
    | Audience Exclude (`audience_exclude`)                               | `Ready account-owned custom audience IDs`                       |
    | Custom Audience Bid Multipliers (`custom_audience_bid_multipliers`) | `Provider micros values with exact ad-group readback`           |
    | Product Set (`product_set`)                                         | `One typed filter per supported feed field`                     |
  </Accordion>

  <Accordion title="Reporting field mapping">
    | Apostra output                                                                      | OpenAI Ads source              |
    | ----------------------------------------------------------------------------------- | ------------------------------ |
    | Impressions (`impressions`)                                                         | `impressions`                  |
    | Clicks (`clicks`)                                                                   | `clicks`                       |
    | Spend (`spend`)                                                                     | `spend`                        |
    | Conversions (`conversions`)                                                         | `click_through_conversions`    |
    | Ext.Openai Ads.View Through Conversions (`ext.openai_ads.view_through_conversions`) | `view_through_conversions`     |
    | Breakdowns (`breakdowns`)                                                           | `product \| country \| device` |
  </Accordion>
</AccordionGroup>

## Provider documentation

* [OpenAI Ads API quickstart](https://developers.openai.com/ads/api-quickstart)
* [OpenAI Ads OpenAPI](https://developers.openai.com/ads/openapi.json)
* [OpenAI Ad Account](https://developers.openai.com/ads/api-reference/ad-account)
* [OpenAI campaigns](https://developers.openai.com/ads/api-reference/campaigns)
* [OpenAI ads](https://developers.openai.com/ads/api-reference/ads)
* [OpenAI insights](https://developers.openai.com/ads/api-reference/insights)
* [OpenAI campaign targeting](https://developers.openai.com/ads/campaign-targeting)
* [OpenAI product feeds](https://developers.openai.com/ads/product-feeds)
