> 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.

# CTV device ID feed

> Pixalate's hourly Connected TV (CTV) Device ID Data Feed, with file name, schema, IFA types, device names, probability thresholds, polling and how to apply it pre-bid.

The Connected TV (CTV) Device ID Data Feed lists CTV device IDs linked to invalid traffic (IVT). Use it to avoid bidding on or serving ads to those devices.

The feed is tuned for CTV inventory. CTV generates lower volumes than mobile traffic, so Pixalate segments CTV signals separately to build CTV baselines for inclusion. The time horizon over which signals are observed, and the statistical significance thresholds, are also set for CTV.

## What's in the feed

* **IVT types.** The feed covers every IVT type in the Pixalate dashboard except those that integration issues can trigger, such as `duplicateImpressions` and `duplicateClicks`. See [Reported Invalid Traffic (IVT) Types](/analytics/ivt-types). It also uses this CTV-specific type:

  | IVT type         | Definition                                                     |
  | ---------------- | -------------------------------------------------------------- |
  | `continuousPlay` | Devices that appear to be on for the vast majority of the day. |

* **Proxy traffic.** Proxy traffic in this feed means fake server-side ad insertion (SSAI) or other fraudulent proxy traffic. Pixalate uses its own framework to detect fake SSAI proxies, and adds only the devices linked to that activity.

## At a glance

|                |                                                                       |
| -------------- | --------------------------------------------------------------------- |
| Update cadence | Hourly                                                                |
| File format    | CSV                                                                   |
| File name      | `OttDeviceIdBlocklist_YYYYMMDD.csv`                                   |
| Columns        | `deviceId`, `fraudType`, `os`, `ifaType`, `deviceName`, `probability` |
| File size      | Up to 2 GB                                                            |

The file name carries a date only, not a time or version, and a newer file can reuse an earlier file's name and replace it. Don't use the file name to find the newest file; check its last-modified time instead. See [Delivery and integration](/data-feeds/delivery).

## Schema

| Column        | Type   | Description                                                                                            |
| ------------- | ------ | ------------------------------------------------------------------------------------------------------ |
| `deviceId`    | string | The CTV device ID linked to invalid traffic.                                                           |
| `fraudType`   | string | The name of the IVT type linked to the device ID.                                                      |
| `os`          | string | The operating system linked to the device ID.                                                          |
| `ifaType`     | string | The type of identifier for advertising (IFA). See [IFA types](#ifa-types).                             |
| `deviceName`  | string | The device brand or platform. See [Device names](#device-names).                                       |
| `probability` | float  | How likely it is that the device ID is linked to this fraud type, from 0.5 to 1. Higher means riskier. |

Example rows (made-up IDs and values):

```csv
00000000-0000-4000-8000-00000000000a,continuousPlay,<os>,RIDA,Roku,1.0
00000000-0000-4000-8000-00000000000b,<fraudType>,<os>,AFAI,Amazon,0.84
```

### IFA types

These `ifaType` values are in the feed:

| `ifaType`       | Description                                                                                        |
| --------------- | -------------------------------------------------------------------------------------------------- |
| `AAID`          | Standard Android device identifier                                                                 |
| `AAID_GENERIC`  | Generic (non-standard) Android device identifier                                                   |
| `AAID_MD5`      | MD5 Android device identifier                                                                      |
| `AAID_SHA1`     | SHA1 Android device identifier                                                                     |
| `AFAI`          | Standard Amazon device identifier                                                                  |
| `AFAI_GENERIC`  | Generic (non-standard) Amazon device identifier                                                    |
| `AFAI_MD5`      | MD5 Amazon device identifier                                                                       |
| `AFAI_SHA1`     | SHA1 Amazon device identifier                                                                      |
| `GENERIC`       | Generic (non-standard) identifier that doesn't belong to a major vendor and has no standard format |
| `IDFA`          | Standard Apple device identifier                                                                   |
| `IDFA_GENERIC`  | Generic (non-standard) Apple device identifier                                                     |
| `IDFA_MD5`      | MD5 Apple device identifier                                                                        |
| `IDFA_SHA1`     | SHA1 Apple device identifier                                                                       |
| `IFA_GENERIC`   | Generic identifier with the standard IFA format                                                    |
| `LGAID`         | Standard LG device identifier                                                                      |
| `LGAID_GENERIC` | Generic (non-standard) LG device identifier                                                        |
| `LGAID_SHA1`    | SHA1 LG device identifier                                                                          |
| `MD5_GENERIC`   | Generic identifier with MD5 format                                                                 |
| `MSAI`          | Standard Microsoft device identifier                                                               |
| `MSAI_GENERIC`  | Generic (non-standard) Microsoft device identifier                                                 |
| `MSAI_MD5`      | MD5 Microsoft device identifier                                                                    |
| `MSAI_SHA1`     | SHA1 Microsoft device identifier                                                                   |
| `RIDA`          | Standard Roku device identifier                                                                    |
| `RIDA_GENERIC`  | Generic (non-standard) Roku device identifier                                                      |
| `RIDA_MD5`      | MD5 Roku device identifier                                                                         |
| `RIDA_SHA1`     | SHA1 Roku device identifier                                                                        |
| `SHA1_GENERIC`  | Generic identifier with SHA1 format                                                                |

### Device names

The major `deviceName` values include, but aren't limited to: Amazon, Apple, Bravia, Chromecast, HbbTV, Insignia, JadooTV, LG, Microsoft, Nvidia, Opera TV, Roku, Samsung, Sony, Toshiba and Vizio.

## Choose a probability threshold

Every listed device ID has a probability of at least 0.5, calculated by Pixalate's machine learning models. You decide where to set your threshold, based on the quality and scale of your supply. As a general guide:

| Threshold                  | What you filter out                                                                   |
| -------------------------- | ------------------------------------------------------------------------------------- |
| Probability = 1            | Only the worst offenders (deterministic).                                             |
| Probability ≥ 0.90         | Users that are fraudulent beyond reasonable doubt.                                    |
| 0.75 ≤ probability \< 0.90 | Users with clear and convincing evidence of fraud.                                    |
| 0.5 ≤ probability \< 0.75  | Users that are more likely than not to be fraudulent (preponderance of the evidence). |

Lowering the threshold can reduce the number of impressions you deliver. Each time you change it, check the effect on impression delivery.

## Apply it pre-bid

1. Load the latest file on the servers that make your bid or serving decisions.
2. For each CTV request, look up the device ID.
3. If it's listed at or above your threshold, don't bid or serve.

## Check for new files

The feed updates hourly. Poll at least once an hour, and use the file's last-modified time, not its name, to tell when a new file has arrived. Hourly feeds follow this pattern:

* Start checking at the top of the hour.
* Check every 15 minutes.
* Download only when a new file is available, then stop checking.
* Start again at the next hour.

For access, file locations and how to read the last-modified time, see [Delivery and integration](/data-feeds/delivery).

## Related

#### [Mobile device ID feed](/data-feeds/mobile-device-ids)

Device IDs for mobile in-app inventory, also updated hourly.

#### [IP block lists (IPv4 and IPv6)](/data-feeds/ip-block-lists)

IPv6 addresses can identify a CTV device even when its device ID changes or is spoofed.

#### [Delivery and integration](/data-feeds/delivery)

Access, file locations and polling for every feed.