---
title: "Set placement limits"
type: reference
method: POST
path: /rest-api/placement/{placementId}/limits/set.do
tag: "Limits"
---

# Set placement limits

`POST https://YOUR-NETWORK-DOMAIN/rest-api/placement/{placementId}/limits/set.do`

Creates the placement's limits if it has none (the console's Limits switch) and applies the given values. Accepts request caps (daily/weekly/monthly/totalRequestsLimit), impression, click and conversion caps for every period, startDate/endDate (yyyy-MM-dd-HH-mm or yyyy-MM-dd HH:mm, GMT+0 unless useLocalTime), removeStartDateLimit/removeEndDateLimit, evenPacing, useLocalTime and timezoneOffset (minutes east of UTC). Budget and opportunity fields do not exist on a placement and answer 400. Requires UPDATE share on the placement's site, MANAGE_INVENTORY_LIMIT, MANAGE_CAPPING_AND_LIMITATIONS when the limits have to be created, and the INVENTORY_*_LIMIT permission of every cap sent. Counters (the same names without the Limit suffix, e.g. totalImpressions) are read-only here: sent, they are listed in ignoredFields and left unchanged; the reset endpoint sets them back to zero.

## Path params

| Name | Type | Required | Example | Description |
|---|---|---|---|---|
| `placementId` | integer | yes | `3001` | ID of the placement |

## Form params

| Name | Type | Required | Example | Description |
|---|---|---|---|---|
| `dailyClicksLimit` | integer | no | `2000` | Maximum clicks allowed per day |
| `dailyConversionsLimit` | integer | no | `500` | Maximum conversions allowed per day |
| `dailyImpressionsLimit` | integer | no | `50000` | Maximum impressions allowed per day |
| `dailyRequestsLimit` | integer | no | `100000` | Ad requests allowed per day (0 = unlimited). Site and placement limits only |
| `endDate` | string | no | `2025-12-31-23-59` | End date for the limiting period in yyyy-MM-dd-HH-mm (or yyyy-MM-dd HH:mm) format (GMT+0) |
| `evenPacing` | boolean | no | `true` | When true, distributes delivery evenly throughout the day rather than front-loading |
| `monthlyClicksLimit` | integer | no | `10000` | Maximum clicks allowed per month; 0 means no monthly cap. Resets the 1st of the month. |
| `monthlyConversionsLimit` | integer | no | `10000` | Maximum conversions allowed per month; 0 means no monthly cap. Resets the 1st of the month. |
| `monthlyImpressionsLimit` | integer | no | `1500000` | Maximum impressions allowed per calendar month; 0 means no monthly cap. Resets on the 1st. |
| `monthlyRequestsLimit` | integer | no | `2500000` | Ad requests allowed per calendar month (0 = unlimited). Site and placement limits only |
| `removeEndDateLimit` | boolean | no | `true` | When true, removes the existing end date limit |
| `removeStartDateLimit` | boolean | no | `true` | When true, removes the existing start date limit |
| `startDate` | string | no | `2025-01-15-00-00` | Start date for the limiting period in yyyy-MM-dd-HH-mm (or yyyy-MM-dd HH:mm) format (GMT+0) |
| `timezoneOffset` | integer | no | `120` | The caller's offset from UTC in minutes (east positive, e.g. 120 for UTC+2). With useLocalTime on, the startDate/endDate of this request are read in that offset and stored in UTC; dates not sent are left as stored |
| `totalClicksLimit` | integer | no | `50000` | Maximum total clicks allowed over the entire period |
| `totalConversionsLimit` | integer | no | `5000` | Maximum total conversions allowed over the entire period |
| `totalImpressionsLimit` | integer | no | `1000000` | Maximum total impressions allowed over the entire period |
| `totalRequestsLimit` | integer | no | `10000000` | Ad requests allowed over the limit's lifetime (0 = unlimited). Site and placement limits only |
| `useLocalTime` | boolean | no | `true` | When true, startDate/endDate are given in the caller's local time (the console's Local Time switch); the limit read answers them in local time too when it is passed the same timezoneOffset, and in UTC otherwise. Omitted, the limit keeps its current setting |
| `weeklyClicksLimit` | integer | no | `10000` | Maximum clicks allowed per week; 0 means no weekly cap. Resets each ISO week (Monday). |
| `weeklyConversionsLimit` | integer | no | `10000` | Maximum conversions allowed per week; 0 means no weekly cap. Resets each ISO week (Monday). |
| `weeklyImpressionsLimit` | integer | no | `10000` | Maximum impressions allowed per week; 0 means no weekly cap. Resets each ISO week (Monday). |
| `weeklyRequestsLimit` | integer | no | `600000` | Ad requests allowed per ISO week (0 = unlimited). Site and placement limits only |

## Responses

- `200` — Limits saved
- `400` — Invalid value, or a field a placement limit does not have
- `401` — Authentication error
- `403` — Missing share or permission; the message names the permission
- `404` — Placement not found

## Example request

```bash
curl --request POST \
  --url 'https://YOUR-NETWORK-DOMAIN/rest-api/placement/3001/limits/set.do' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/x-www-form-urlencoded' \
  --data-urlencode 'dailyClicksLimit=2000' \
  --data-urlencode 'dailyConversionsLimit=500' \
  --data-urlencode 'dailyImpressionsLimit=50000'
```

Source: https://epom.com/ad-server/docs/api/limits/post-placement-limits-set