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

# Set advertiser limits

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

Creates or replaces limits for the specified advertiser. If the advertiser does not have limits enabled yet, this endpoint will automatically enable them before applying the provided values. Accepts form parameters for total/daily thresholds (impressions, clicks, conversions, budget), date range, evenPacing, useLocalTime flag, and timezoneOffset (in minutes). Requires UPDATE permission on the advertiser and the MANAGE_CAPPING_AND_LIMITATIONS user permission. Each cap changed also needs its own limit permission enabled (e.g. WEEKLY_CLICKS_LIMIT, MONTHLY_BUDGET — the permission of the console Limits card row); a cap the role lacks it for is not applied and is listed in ignoredFields naming the permission, while the other fields are saved. A cap sent with its stored value needs no permission. 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 |
|---|---|---|---|---|
| `advertiserId` | integer | yes | `1001` | Unique numeric identifier of the advertiser whose limits should be created or replaced |

## Form params

| Name | Type | Required | Example | Description |
|---|---|---|---|---|
| `dailyBudgetLimit` | number | no | `500.00` | Maximum daily budget (revenue) in currency units |
| `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 |
| `dailyOpportunitiesLimit` | integer | no | `100000` | Maximum ad opportunities allowed per day |
| `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 |
| `monthlyBudgetLimit` | number | no | `3000` | Monthly budget cap; 0 means no monthly cap. Resets on the 1st of the month. |
| `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. |
| `monthlyOpportunitiesLimit` | integer | no | `10000` | Maximum opportunities allowed per month; 0 means no monthly cap. Resets the 1st of the month. |
| `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 |
| `totalBudgetLimit` | number | no | `10000.00` | Maximum total budget (revenue) allowed over the entire period in currency units |
| `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 |
| `totalOpportunitiesLimit` | integer | no | `5000000` | Maximum total ad opportunities over the entire period |
| `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 |
| `weeklyBudgetLimit` | number | no | `700` | Weekly budget cap; 0 means no weekly cap. Resets each ISO week (Monday). |
| `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). |
| `weeklyOpportunitiesLimit` | integer | no | `10000` | Maximum opportunities allowed per week; 0 means no weekly cap. Resets each ISO week (Monday). |

## Responses

- `200` — Advertiser limits set successfully
- `400` — Invalid request parameters or advertiser not found
- `401` — Authentication error
- `403` — Not enough permissions
- `404` — Not found — resource does not exist

## Example request

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

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