---
title: "Categories API endpoints"
description: "Endpoint reference for the Categories tag (9 endpoints): Category management"
type: "reference"
audience: [network-manager, admin]
keywords: [api, rest, endpoints, categories]
---

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.

# Categories API endpoints

Category management. 9 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/additional-fields/{entityType}/{entityId}.do

[Request examples](https://epom.com/ad-server/docs/api/categories/get-additional-fields.md)

Read an entity's custom field values.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `entityType` | path | string | yes | Entity type the fields belong to Values: `SITE`, `ZONE`, `PLACEMENT`, `ADVERTISER`, `CAMPAIGN`, `BANNER`. |
| `entityId` | path | integer | yes | Id of the advertiser, campaign, banner, site, zone or placement |

**Responses:** `200` — 'fields' lists {id, name, title, value} for each field of the entity type · `404` — The entity does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/additional-fields/{entityType}/{entityId}.do

[Request examples](https://epom.com/ad-server/docs/api/categories/post-additional-fields.md)

Set an entity's custom field values.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `entityType` | path | string | yes | Entity type the fields belong to Values: `SITE`, `ZONE`, `PLACEMENT`, `ADVERTISER`, `CAMPAIGN`, `BANNER`. |
| `entityId` | path | integer | yes | Id of the advertiser, campaign, banner, site, zone or placement |

**Request body** (`application/json`): JSON object.

**Responses:** `200` — Saved; 'fields' lists {id, name, title, value} for each field of the entity type · `404` — The entity does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/iab-categories.do

[Request examples](https://epom.com/ad-server/docs/api/categories/get-iab-categories.md)

List IAB categories.

No parameters beyond authentication.

**Responses:** `200` — 'categories' lists {id, code, description}. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/placements/{placementId}/openrtb.do

[Request examples](https://epom.com/ad-server/docs/api/categories/get-placements-openrtb.md)

Read a placement's Open RTB settings.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |

**Responses:** `200` — {placementId, customOpenRtbTagId, iabCategories:[{id, code, description}], blockedIabCategories:[…], blockedBannerAttributes:[{name, id, description}]} · `404` — The placement does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/placements/{placementId}/openrtb.do

[Request examples](https://epom.com/ad-server/docs/api/categories/post-placements-openrtb.md)

Set a placement's Open RTB settings.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Placement id |
| `iabCategories` | form | array&lt;string&gt; | no | IAB categories sent for the placement in bid requests, by id or IAB code, comma-separated; empty to clear |
| `blockedIabCategories` | form | array&lt;string&gt; | no | IAB categories whose ads the placement refuses, by id or IAB code, comma-separated; empty to clear |
| `blockedBannerAttributes` | form | array&lt;string&gt; | no | Banner (creative) attributes the placement blocks, sent as OpenRTB battr, by name or OpenRTB id, comma-separated; empty to clear: AUDIO_AD_AUTO_PLAY (1), AUDIO_AD_USER_INITIATED (2), EXPANDABLE_AUTOMATIC (3), EXPANDABLE_USER_INITIATED_CLICK (4), EXPANDABLE_USER_INITIATED_ROLLOVER (5), IN_BANNER_VIDEO_AD_AUTO_PLAY (6), IN_BANNER_VIDEO_AD_USER_INITIATED (7), POP (8), PROVOCATIVE_OR_SUGGESTIVE_IMAGERY (9), SHAKY_FLASHING_FLICKERING_EXTREME_ANIMATION_SMILEYS (10), SURVEYS (11), TEXT_ONLY (12), USER_INTERACTIVE (13), WINDOWS_DIALOG_OR_ALERT_STYLE (14), HAS_AUDIO_ON_OFF_BUTTON (15), AD_CAN_BE_SKIPPED (16) |
| `customOpenRtbTagId` | form | string | no | Custom OpenRTB tag id sent as imp.tagid instead of the placement key, up to 256 characters; empty to clear |

**Responses:** `200` — The placement's Open RTB settings after the save, in the shape of the GET · `404` — The placement does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/sites/{siteId}/openrtb.do

[Request examples](https://epom.com/ad-server/docs/api/categories/get-sites-openrtb.md)

Read a site's Open RTB categories.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `siteId` | path | integer | yes | Site id |

**Responses:** `200` — {siteId, openRtbPublisherId, iabCategories:[{id, code, description}], blockedIabCategories:[…]} · `404` — The site does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/sites/{siteId}/openrtb.do

[Request examples](https://epom.com/ad-server/docs/api/categories/post-sites-openrtb.md)

Set a site's Open RTB categories.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `siteId` | path | integer | yes | Site id |
| `iabCategories` | form | array&lt;string&gt; | no | IAB categories sent for the site in bid requests, by id or IAB code, comma-separated; empty to clear |
| `blockedIabCategories` | form | array&lt;string&gt; | no | IAB categories whose ads the site refuses, by id or IAB code, comma-separated; empty to clear |

**Responses:** `200` — The site's Open RTB settings after the save, in the shape of the GET · `404` — The site does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/zones/{zoneId}/openrtb.do

[Request examples](https://epom.com/ad-server/docs/api/categories/get-zones-openrtb.md)

Read a zone's Open RTB categories.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `zoneId` | path | integer | yes | Zone id |

**Responses:** `200` — {zoneId, iabCategories:[{id, code, description}], blockedIabCategories:[…]} · `404` — The zone does not exist or is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/zones/{zoneId}/openrtb.do

[Request examples](https://epom.com/ad-server/docs/api/categories/post-zones-openrtb.md)

Set a zone's Open RTB categories.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `zoneId` | path | integer | yes | Zone id |
| `iabCategories` | form | array&lt;string&gt; | no | IAB categories sent for the zone in bid requests, by id or IAB code, comma-separated; empty to clear |
| `blockedIabCategories` | form | array&lt;string&gt; | no | IAB categories whose ads the zone refuses, by id or IAB code, comma-separated; empty to clear |

**Responses:** `200` — The zone's Open RTB settings after the save, in the shape of the GET · `404` — The zone does not exist or is deleted. 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)
- [Network services and miscellaneous APIs](https://epom.com/ad-server/docs/api/network-and-misc.md)

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