> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.pixalate.com/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.pixalate.com/_mcp/server.

# OpenEPG Enrichment API (preview)

> Preview of Pixalate's OpenEPG Enrichment API, which resolves CTV ad opportunities to channel and program metadata as an OpenRTB 2.6 Content object.

> **Warning**
>
> **Preview.** The OpenEPG Enrichment API is a draft specification (version `1.0.0-draft`). It isn't generally available, Pixalate makes no commitment about production availability, and details may change before release. Contact your Pixalate account manager if you're interested in early access.

The OpenEPG Enrichment API resolves a CTV ad opportunity to the channel and program being watched. It returns the show metadata as an OpenRTB 2.6 `Content` object with a confidence score. A miss is a structured `200` response, not an error.

## Two ways to call it

| Route                | Endpoints                            | You send                                                                    | You get back                                                                                     | Built for                                                                             |
| -------------------- | ------------------------------------ | --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------- |
| OpenRTB passthrough  | `POST /enrich`, `POST /enrich/batch` | An OpenRTB 2.6 bid request                                                  | The same bid request, with `app.content` enriched in place. Diagnostics are in response headers. | SSPs adding content identity to outbound bid requests in real time                    |
| Parameterized lookup | `POST /lookup`, `POST /lookup/batch` | A flat JSON object of identifiers such as the app bundle, channel and title | The best match, its confidence and reason codes                                                  | DSPs, analytics and measurement, impression-log enrichment, and integration debugging |

The more identifiers you send, the more precise the result. An app bundle alone resolves single-channel apps. Adding a channel identifier or a show title lets the API resolve aggregator apps too.

## What it covers

* Linear EPG (channel and schedule) content only.
* A US-focused catalog. The API doesn't read geography from the bid request.
* Any moment from 7 days ago up to now. If you don't send a timestamp, the API uses the current time.

## Base URL and authentication

* **Base URL in the draft specification:** `https://epg-api.pixalate.com/v1`
* **Authentication:** your API key in the `x-api-key` header. The draft also accepts a username and password through HTTP Basic authentication. Credentials are accepted only in headers, never in query parameters.

See [Authentication and API keys](/apis/authentication).

## Reference

#### [OpenEPG Enrichment API reference (preview)](/api-reference/openepg/enrich)

Request and response schemas for `/enrich`, `/enrich/batch`, `/lookup` and `/lookup/batch`, with examples.

#### [Quotas, limits and errors](/apis/quotas-and-errors)

Status codes, including the preview's `429` and `503` with `Retry-After`.

## Related

* [OpenEPG show reports (beta)](/analytics/openepg-reports): your own traffic and IVT by TV show, in the Analytics dashboard.