---
title: "Capping API endpoints"
description: "Endpoint reference for the Capping tag (43 endpoints): Frequency capping configuration"
type: "reference"
audience: [network-manager, admin]
keywords: [api, rest, endpoints, capping]
---

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.

# Capping API endpoints

Frequency capping configuration. 43 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/advertiser/capping/{advertiserId}.do

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

Get advertiser capping list.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `advertiserId` | path | integer | yes | Numeric ID of the advertiser whose capping rules should be retrieved |

**Responses:** `200` — Capping list returned successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/advertiser/capping/{advertiserId}.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-advertiser-capping.md)

Create advertiser capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `advertiserId` | path | integer | yes | Numeric ID of the advertiser to add the capping rule to |
| `type` | form | string | yes | Type of the capping to create. Only ADVERTISER_FREQUENCY is accepted; any other value of the shared enum is rejected with 'Capping type is incompatible with entity' Values: `CAMPAIGN_REQUEST`, `CAMPAIGN_FREQUENCY`, `CAMPAIGN_CLICKS`, `CAMPAIGN_ACTIONS`, `CAMPAIGN_NO_CLICK`, `BANNER_REQUEST`, `BANNER_FREQUENCY`, `BANNER_CLICKS`, `BANNER_ACTIONS`, `BANNER_NO_CLICK`, `PLACEMENT_REQUEST`, `PLACEMENT_FREQUENCY`, `PLACEMENT_CLICKS`, `PLACEMENT_ACTIONS`, `ADVERTISER_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY_MONTH`, `CAMPAIGN_DSP_RECENCY`. |
| `amount` | form | integer | yes | Maximum number of events allowed within the specified period |
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `flat` | form | boolean | yes | When true, events are distributed evenly (flat) across the period instead of being served/counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Capping created: {success, capping:{id, type, amount, period, periodType, flat, subject, ...}} · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/banner/{bannerId}/action-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-banner-action-capping.md)

Get banner action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose action capping rules should be retrieved |

**Responses:** `200` — Action capping returned successfully · `404` — No such banner. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/banner/{bannerId}/action-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-banner-action-capping.md)

Remove banner action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose action capping rules should be deleted |

**Responses:** `200` — Action capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/action-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-action-capping-set.md)

Set banner action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `bannerId` | path | integer | yes | Numeric ID of the banner to configure action capping for |
| `amount` | form | integer | no | Maximum number of conversions allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `evenDistribution` | form | boolean | no | When true, conversions are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Action capping set successfully · `404` — Banner not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/action-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-action-capping-update.md)

Update banner action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner to update action capping for |
| `amount` | form | integer | no | Maximum number of conversions allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, conversions are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping; selects the rule to update. If omitted and the banner has exactly one rule of this type, that rule is updated and keeps its subject; otherwise USER_COOKIE. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Action capping updated successfully · `404` — Banner not found, or it has no action capping rule for the subject. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/banner/{bannerId}/click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-banner-click-capping.md)

Get banner click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose click capping rules should be retrieved |

**Responses:** `200` — Click capping returned successfully · `404` — No such banner. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/banner/{bannerId}/click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-banner-click-capping.md)

Remove banner click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose click capping rules should be deleted |

**Responses:** `200` — Click capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/click-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-click-capping-set.md)

Set banner click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `bannerId` | path | integer | yes | Numeric ID of the banner to configure click capping for |
| `amount` | form | integer | no | Maximum number of clicks allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `evenDistribution` | form | boolean | no | When true, clicks are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Click capping set successfully · `404` — Banner not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/click-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-click-capping-update.md)

Update banner click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner to update click capping for |
| `amount` | form | integer | no | Maximum number of clicks allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, clicks are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping; selects the rule to update. If omitted and the banner has exactly one rule of this type, that rule is updated and keeps its subject; otherwise USER_COOKIE. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Click capping updated successfully · `404` — Banner not found, or it has no click capping rule for the subject. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/banner/{bannerId}/frequency-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-banner-frequency-capping.md)

Get banner frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose frequency capping rules should be retrieved |

**Responses:** `200` — Frequency capping returned successfully · `404` — No such banner. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/banner/{bannerId}/frequency-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-banner-frequency-capping.md)

Remove banner frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose frequency capping rules should be deleted |

**Responses:** `200` — Frequency capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/frequency-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-frequency-capping-set.md)

Set banner frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType (e.g. 24 when periodType is HOUR means 24 hours) |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `bannerId` | path | integer | yes | Numeric ID of the banner to configure frequency capping for |
| `amount` | form | integer | no | Maximum number of impressions allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `evenDistribution` | form | boolean | no | When true, impressions are distributed evenly across the period instead of being served as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Frequency capping set successfully · `404` — Banner not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/frequency-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-frequency-capping-update.md)

Update banner frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner to update frequency capping for |
| `amount` | form | integer | no | Maximum number of impressions allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, impressions are distributed evenly across the period instead of being served as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping; selects the rule to update. If omitted and the banner has exactly one rule of this type, that rule is updated and keeps its subject; otherwise USER_COOKIE. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Frequency capping updated successfully · `404` — Banner not found, or it has no frequency capping rule for the subject. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/banner/{bannerId}/no-click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-banner-no-click-capping.md)

Get banner no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose no-click capping rules should be retrieved |

**Responses:** `200` — No-click capping returned successfully · `404` — No such banner. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/banner/{bannerId}/no-click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-banner-no-click-capping.md)

Remove banner no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose no-click capping rules should be deleted |

**Responses:** `200` — No-click capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/no-click-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-no-click-capping-set.md)

Set banner no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `bannerId` | path | integer | yes | Numeric ID of the banner to configure no-click capping for |
| `amount` | form | integer | no | Maximum number of impressions without a click before the banner is suppressed. Optional; if omitted the existing amount is preserved. |
| `evenDistribution` | form | boolean | no | When true, impression counting is distributed evenly across the period |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — No-click capping set successfully · `404` — Banner not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/{bannerId}/no-click-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-no-click-capping-update.md)

Update banner no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner to update no-click capping for |
| `amount` | form | integer | no | Maximum number of impressions without a click before the banner is suppressed. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, impression counting is distributed evenly across the period |
| `subject` | form | string | no | Entity used to identify unique users for capping; selects the rule to update. If omitted and the banner has exactly one rule of this type, that rule is updated and keeps its subject; otherwise USER_COOKIE. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — No-click capping updated successfully · `404` — Banner not found, or it has no no-click capping rule for the subject. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/banner/capping/{bannerId}.do

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

Get banner capping list.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner whose capping rules should be retrieved |

**Responses:** `200` — Capping list returned successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/banner/capping/{bannerId}.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-banner-capping.md)

Create banner capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `bannerId` | path | integer | yes | Numeric ID of the banner to add the capping rule to |
| `type` | form | string | yes | Type of the capping to create. Only banner types are accepted: BANNER_REQUEST, BANNER_FREQUENCY, BANNER_CLICKS, BANNER_ACTIONS, BANNER_NO_CLICK; any other value of the shared enum is rejected with 'Capping type is incompatible with entity' Values: `CAMPAIGN_REQUEST`, `CAMPAIGN_FREQUENCY`, `CAMPAIGN_CLICKS`, `CAMPAIGN_ACTIONS`, `CAMPAIGN_NO_CLICK`, `BANNER_REQUEST`, `BANNER_FREQUENCY`, `BANNER_CLICKS`, `BANNER_ACTIONS`, `BANNER_NO_CLICK`, `PLACEMENT_REQUEST`, `PLACEMENT_FREQUENCY`, `PLACEMENT_CLICKS`, `PLACEMENT_ACTIONS`, `ADVERTISER_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY_MONTH`, `CAMPAIGN_DSP_RECENCY`. |
| `amount` | form | integer | yes | Maximum number of events allowed within the specified period |
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `flat` | form | boolean | yes | When true, events are distributed evenly (flat) across the period instead of being served/counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Capping created: {success, capping:{id, type, amount, period, periodType, flat, subject, ...}} · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/campaign/{campaignId}/action-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-campaign-action-capping.md)

Get campaign action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose action capping rules should be retrieved |

**Responses:** `200` — Action capping returned successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/campaign/{campaignId}/action-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-campaign-action-capping.md)

Remove campaign action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose action capping rules should be deleted |

**Responses:** `200` — Action capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/action-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-action-capping-set.md)

Set campaign action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `campaignId` | path | integer | yes | Numeric ID of the campaign to configure action capping for |
| `amount` | form | integer | no | Maximum number of conversions allowed within the specified period. Optional; if omitted the capping has no amount limit. |
| `evenDistribution` | form | boolean | no | When true, conversions are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Action capping set successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/action-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-action-capping-update.md)

Update campaign action capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | form | integer | yes | Numeric ID of the specific capping record to update (obtained from the GET capping list response) |
| `campaignId` | path | integer | yes | Numeric ID of the campaign that owns the capping record |
| `amount` | form | integer | no | Maximum number of conversions allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, conversions are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; if omitted the existing subject is preserved. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Action capping updated successfully · `404` — No action capping enabled or campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/campaign/{campaignId}/click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-campaign-click-capping.md)

Get campaign click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose click capping rules should be retrieved |

**Responses:** `200` — Click capping returned successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/campaign/{campaignId}/click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-campaign-click-capping.md)

Remove campaign click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose click capping rules should be deleted |

**Responses:** `200` — Click capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/click-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-click-capping-set.md)

Set campaign click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `campaignId` | path | integer | yes | Numeric ID of the campaign to configure click capping for |
| `amount` | form | integer | no | Maximum number of clicks allowed within the specified period. Optional; if omitted the capping has no amount limit. |
| `evenDistribution` | form | boolean | no | When true, clicks are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Click capping set successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/click-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-click-capping-update.md)

Update campaign click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | form | integer | yes | Numeric ID of the specific capping record to update (obtained from the GET capping list response) |
| `campaignId` | path | integer | yes | Numeric ID of the campaign that owns the capping record |
| `amount` | form | integer | no | Maximum number of clicks allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, clicks are distributed evenly across the period instead of being counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; if omitted the existing subject is preserved. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Click capping updated successfully · `404` — No click capping enabled or campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/campaign/{campaignId}/frequency-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-campaign-frequency-capping.md)

Get campaign frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose frequency capping rules should be retrieved |

**Responses:** `200` — Frequency capping returned successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/campaign/{campaignId}/frequency-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-campaign-frequency-capping.md)

Remove campaign frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose frequency capping rules should be deleted |

**Responses:** `200` — Frequency capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/frequency-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-frequency-capping-set.md)

Set campaign frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType (e.g. 24 when periodType is HOUR means 24 hours) |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `campaignId` | path | integer | yes | Numeric ID of the campaign to configure frequency capping for |
| `amount` | form | integer | no | Maximum number of impressions allowed within the specified period. Optional; if omitted the capping has no amount limit. |
| `evenDistribution` | form | boolean | no | When true, impressions are distributed evenly across the period instead of being served as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Frequency capping set successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/frequency-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-frequency-capping-update.md)

Update campaign frequency capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | form | integer | yes | Numeric ID of the specific capping record to update (obtained from the GET capping list response) |
| `campaignId` | path | integer | yes | Numeric ID of the campaign that owns the capping record |
| `amount` | form | integer | no | Maximum number of impressions allowed within the specified period. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, impressions are distributed evenly across the period instead of being served as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; if omitted the existing subject is preserved. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Frequency capping updated successfully · `404` — No frequency capping enabled or campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/campaign/{campaignId}/no-click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-campaign-no-click-capping.md)

Get campaign no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose no-click capping rules should be retrieved |

**Responses:** `200` — No-click capping returned successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### DELETE /rest-api/campaign/{campaignId}/no-click-capping.do

[Request examples](https://epom.com/ad-server/docs/api/capping/delete-campaign-no-click-capping.md)

Remove campaign no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose no-click capping rules should be deleted |

**Responses:** `200` — No-click capping removed successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/no-click-capping/set.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-no-click-capping-set.md)

Set campaign no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `campaignId` | path | integer | yes | Numeric ID of the campaign to configure no-click capping for |
| `amount` | form | integer | no | Maximum number of impressions without a click before the banner is suppressed. Optional; if omitted the capping has no amount limit. |
| `evenDistribution` | form | boolean | no | When true, impression counting is distributed evenly across the period |
| `subject` | form | string | no | Entity used to identify unique users for capping. Defaults to USER_COOKIE if omitted. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — No-click capping set successfully · `404` — Campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/{campaignId}/no-click-capping/update.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-no-click-capping-update.md)

Update campaign no-click capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `id` | form | integer | yes | Numeric ID of the specific capping record to update (obtained from the GET capping list response) |
| `campaignId` | path | integer | yes | Numeric ID of the campaign that owns the capping record |
| `amount` | form | integer | no | Maximum number of impressions without a click before the banner is suppressed. Optional; if omitted the existing amount is preserved. |
| `period` | form | integer | no | Length of the capping time window, expressed in units defined by periodType. Omitted keeps the current period |
| `periodType` | form | string | no | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR. Omitted keeps the current unit Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `evenDistribution` | form | boolean | no | When true, impression counting is distributed evenly across the period |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; if omitted the existing subject is preserved. Allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — No-click capping updated successfully · `404` — No no-click capping enabled or campaign not found. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/campaign/capping/{campaignId}.do

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

Get campaign capping list.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign whose capping rules should be retrieved |

**Responses:** `200` — Capping list returned successfully · `404` — No such campaign, or it is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/campaign/capping/{campaignId}.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-campaign-capping.md)

Create campaign capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignId` | path | integer | yes | Numeric ID of the campaign to add the capping rule to |
| `type` | form | string | yes | Type of the capping to create. Only campaign types are accepted: CAMPAIGN_REQUEST, CAMPAIGN_FREQUENCY, CAMPAIGN_CLICKS, CAMPAIGN_ACTIONS, CAMPAIGN_NO_CLICK, CAMPAIGN_DSP_FREQUENCY and CAMPAIGN_DSP_FREQUENCY_MONTH (period=1, periodType DAY or MONTH, flat=false), CAMPAIGN_DSP_RECENCY (amount=1, periodType MINUTE, period 1..60, flat=false). BANNER_*, PLACEMENT_* and ADVERTISER_* values are listed by the shared enum but rejected with 'Capping type is incompatible with entity' Values: `CAMPAIGN_REQUEST`, `CAMPAIGN_FREQUENCY`, `CAMPAIGN_CLICKS`, `CAMPAIGN_ACTIONS`, `CAMPAIGN_NO_CLICK`, `BANNER_REQUEST`, `BANNER_FREQUENCY`, `BANNER_CLICKS`, `BANNER_ACTIONS`, `BANNER_NO_CLICK`, `PLACEMENT_REQUEST`, `PLACEMENT_FREQUENCY`, `PLACEMENT_CLICKS`, `PLACEMENT_ACTIONS`, `ADVERTISER_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY_MONTH`, `CAMPAIGN_DSP_RECENCY`. |
| `amount` | form | integer | yes | Maximum number of events allowed within the specified period |
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `flat` | form | boolean | yes | When true, events are distributed evenly (flat) across the period instead of being served/counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Capping created: {success, capping:{id, type, amount, period, periodType, flat, subject, ...}} · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/campaign/capping/bulk.do

[Request examples](https://epom.com/ad-server/docs/api/capping/get-campaign-capping-bulk.md)

Get campaign cappings in bulk.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `campaignIds` | query | array&lt;integer&gt; | no | One or more numeric campaign IDs to retrieve cappings for, passed as repeated query parameters |

**Responses:** `200` — Capping list returned successfully. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/capping/{cappingId}.do

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

Update capping by ID.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `cappingId` | path | integer | yes | Numeric ID of the capping record to update |
| `type` | form | string | yes | Type of the capping record. Allowed values: CAMPAIGN_REQUEST, CAMPAIGN_FREQUENCY, CAMPAIGN_CLICKS, CAMPAIGN_ACTIONS, BANNER_REQUEST, BANNER_FREQUENCY, BANNER_CLICKS, BANNER_ACTIONS, PLACEMENT_REQUEST, PLACEMENT_FREQUENCY, PLACEMENT_CLICKS, PLACEMENT_ACTIONS, ADVERTISER_FREQUENCY Values: `CAMPAIGN_REQUEST`, `CAMPAIGN_FREQUENCY`, `CAMPAIGN_CLICKS`, `CAMPAIGN_ACTIONS`, `CAMPAIGN_NO_CLICK`, `BANNER_REQUEST`, `BANNER_FREQUENCY`, `BANNER_CLICKS`, `BANNER_ACTIONS`, `BANNER_NO_CLICK`, `PLACEMENT_REQUEST`, `PLACEMENT_FREQUENCY`, `PLACEMENT_CLICKS`, `PLACEMENT_ACTIONS`, `ADVERTISER_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY_MONTH`, `CAMPAIGN_DSP_RECENCY`. |
| `amount` | form | integer | yes | Maximum number of events (impressions, clicks, or actions) allowed within the specified period |
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `flat` | form | boolean | yes | When true, events are distributed evenly (flat) across the period instead of being served/counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Capping updated successfully · `404` — No capping of this type has this id, or the entity it belongs to is deleted. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/capping/delete.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-capping-delete.md)

Delete cappings by IDs.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `ids` | form | array&lt;string&gt; | yes | Array of colon-separated 'capping_id:capping_type' pairs to delete (e.g. '123:CAMPAIGN_FREQUENCY', '456:PLACEMENT_CLICKS') |

**Responses:** `200` — Cappings deleted successfully · `404` — One of the ids is not a capping of the given type. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### GET /rest-api/placement/capping/{placementId}.do

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

Get placement capping list.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Numeric ID of the placement whose capping rules should be retrieved |

**Responses:** `200` — Capping list returned successfully · `404` — Not found — resource does not exist. Errors follow the [shared conventions](https://epom.com/ad-server/docs/api.md#error-codes).

### POST /rest-api/placement/capping/{placementId}.do

[Request examples](https://epom.com/ad-server/docs/api/capping/post-placement-capping.md)

Create placement capping.

| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
| `placementId` | path | integer | yes | Numeric ID of the placement to add the capping rule to |
| `type` | form | string | yes | Type of the capping to create. Only placement types are accepted: PLACEMENT_REQUEST, PLACEMENT_FREQUENCY, PLACEMENT_CLICKS, PLACEMENT_ACTIONS; any other value of the shared enum is rejected with 'Capping type is incompatible with entity' Values: `CAMPAIGN_REQUEST`, `CAMPAIGN_FREQUENCY`, `CAMPAIGN_CLICKS`, `CAMPAIGN_ACTIONS`, `CAMPAIGN_NO_CLICK`, `BANNER_REQUEST`, `BANNER_FREQUENCY`, `BANNER_CLICKS`, `BANNER_ACTIONS`, `BANNER_NO_CLICK`, `PLACEMENT_REQUEST`, `PLACEMENT_FREQUENCY`, `PLACEMENT_CLICKS`, `PLACEMENT_ACTIONS`, `ADVERTISER_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY`, `CAMPAIGN_DSP_FREQUENCY_MONTH`, `CAMPAIGN_DSP_RECENCY`. |
| `amount` | form | integer | yes | Maximum number of events allowed within the specified period |
| `period` | form | integer | yes | Length of the capping time window, expressed in units defined by periodType |
| `periodType` | form | string | yes | Unit of the capping period. Allowed values: SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, YEAR Values: `SECOND`, `MINUTE`, `HOUR`, `DAY`, `WEEK`, `MONTH`, `YEAR`. |
| `flat` | form | boolean | yes | When true, events are distributed evenly (flat) across the period instead of being served/counted as fast as possible |
| `subject` | form | string | no | Entity used to identify unique users for capping. Optional; allowed values: USER_COOKIE, USER_SERVER_SIDE, USER_MIXED, IP, LES_IP Values: `USER_COOKIE`, `USER_SERVER_SIDE`, `USER_MIXED`, `IP`, `LES_IP`. |

**Responses:** `200` — Capping created: {success, capping:{id, type, amount, period, periodType, flat, subject, ...}} · `404` — Not found — resource does not exist. 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)
- [Targeting, capping and limits via API](https://epom.com/ad-server/docs/api/targeting-capping-limits.md)

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