---
title: "Traffic Quality API endpoints"
description: "Endpoint reference for the Traffic Quality tag (6 endpoints): Per-placement invalid-traffic scores, deep analysis and reports"
type: "reference"
audience: [network-manager, admin]
keywords: [api, rest, endpoints, traffic, quality]
---

Fetch the complete documentation index at: https://epom.com/ad-server/docs/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Traffic Quality API endpoints

Per-placement invalid-traffic scores, deep analysis and reports. 6 endpoints, generated from the OpenAPI spec. Authentication, the response envelope, pagination and error codes are shared by all endpoints — see [REST API overview](https://epom.com/ad-server/docs/api.md). Parameters marked `form` go in an `application/x-www-form-urlencoded` request body.

### GET /rest-api/traffic-quality/{placementId}/detail.do

[Request examples](https://epom.com/ad-server/docs/api/traffic-quality/get-traffic-quality-detail.md)

Get the deep Traffic Quality analysis of a placement.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |
| `date` | query | string | no | Day, yyyy-MM-dd; default yesterday |

**Responses:** `200` — {success, placementId, date, status: stored | generating | failed | none, runningMinutes (while generating), failure (when failed), score {...}, detail {...} | null} · `404` — No such placement, or no score for it that day. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/traffic-quality/{placementId}/detail.do

[Request examples](https://epom.com/ad-server/docs/api/traffic-quality/post-traffic-quality-detail.md)

Compute the deep Traffic Quality analysis of a placement.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |
| `date` | form | string | no | Day, yyyy-MM-dd; default yesterday |

**Responses:** `200` — {success, placementId, date, status: ready (it is already stored) | started | generating (already running for this placement and day), runningMinutes (while generating)} · `404` — No such placement, or no score for it that day · `429` — Another placement's analysis or report is running; the message names it and how long it has run. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/traffic-quality/{placementId}/report-pdf.do

[Request examples](https://epom.com/ad-server/docs/api/traffic-quality/get-traffic-quality-report-pdf.md)

Download the Traffic Quality report PDF of a placement.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |
| `date` | query | string | no | Day, yyyy-MM-dd; default yesterday |

**Responses:** `200` — The PDF · `404` — No such placement, no score that day, or the report has not been generated. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/traffic-quality/{placementId}/report.do

[Request examples](https://epom.com/ad-server/docs/api/traffic-quality/get-traffic-quality-report.md)

Get the Traffic Quality report of a placement.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |
| `date` | query | string | no | Day, yyyy-MM-dd; default yesterday |

**Responses:** `200` — {success, placementId, date, status: ready | generating | failed | none, runningMinutes (while generating), failure (when failed), analysis {...} | null, pdfUrl | null} · `404` — No such placement, or no score for it that day. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/traffic-quality/{placementId}/report.do

[Request examples](https://epom.com/ad-server/docs/api/traffic-quality/post-traffic-quality-report.md)

Generate the Traffic Quality report of a placement.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |
| `date` | form | string | no | Day, yyyy-MM-dd; default yesterday |

**Responses:** `200` — {success, placementId, date, status: ready (it already exists) | started | generating (already running for this placement and day), runningMinutes (while generating)} · `404` — No such placement, or no score for it that day · `429` — Another placement's analysis or report is running; the message names it and how long it has run. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/traffic-quality/scores.do

[Request examples](https://epom.com/ad-server/docs/api/traffic-quality/get-traffic-quality-scores.md)

List Traffic Quality scores of placements for a day.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `date` | query | string | no | Day, yyyy-MM-dd; default yesterday |
| `siteIds` | query | array&lt;integer&gt; | no | Keep only placements of these sites |
| `placementIds` | query | array&lt;integer&gt; | no | Keep only these placements |
| `levels` | query | array&lt;string&gt; | no | Keep only these levels: GREEN, YELLOW, RED, BLOCKED |
| `limit` | query | integer | no | Rows returned, highest risk first; default 100, at most 500 |

**Responses:** `200` — {success, date, summary {green, yellow, red, blocked, totalImpressions, fraudSpend}, total, more, limit, rows [...]}; total counts the matching placements, more says rows were cut at limit. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

## Related

- [REST API overview](https://epom.com/ad-server/docs/api.md) — authentication and conventions
- [API endpoint reference by tag](https://epom.com/ad-server/docs/api/endpoints.md)

<!-- Generated from the OpenAPI spec. Do not edit by hand. -->