---
title: "Set placement pricing"
type: reference
method: POST
path: /rest-api/placements/{placementId}/pricing.do
tag: "Placements"
---

# Set placement pricing

`POST https://YOUR-NETWORK-DOMAIN/rest-api/placements/{placementId}/pricing.do`

Sets or updates the pricing model for the specified placement. Accepts a JSON request body describing either a FIXED_PRICE model (with CPM/CPC/CPA pricing type, default price, optional per-country overrides and an optional minimum-margin floor) or a REVENUE_SHARE model (with default revenue share percentage and optional per-advertiser overrides). Setting enablePricingOverride to false disables custom pricing, and enablePricingOverride alone switches it off or on without touching the prices. An existing pricing row is reused, so a minimum margin already set on the placement survives a call that omits the fields, while a row created by this call starts at NONE — meaning the placement inherits the site's requirement. The lists are replaced only when sent: countryPricing replaces the placement's country prices for every action (per-action CPA country prices are kept), advertiserPricing replaces its per-advertiser shares, and a call that leaves a list out keeps it. revenueShare may be left out to keep the stored one, but is required when the placement has none yet. Fields that do not apply to the chosen paymentModel are listed in ignoredFields. Every check runs before anything is written, so a refused call changes nothing. minMarginType/minMarginValue additionally require ENABLED level on the MIN_MARGIN permission and update access to the parent site. Requires ENABLED level on the SITE_PAYMENT_MODEL permission and on the chosen pricingType's permission.

## Path params

| Name | Type | Required | Example | Description |
|---|---|---|---|---|
| `placementId` | integer | yes | `4001` | Unique numeric ID of the placement |

## Body

A JSON body. An example, built from the field definitions:

```json
{
  "price": "1.50",
  "revenueShare": "60.0",
  "enablePricingOverride": "true",
  "pricingType": "CPM"
}
```

## Responses

- `200` — Pricing updated successfully
- `400` — Invalid body, named in errors — e.g. a price out of 0-1000000, a malformed countryPricing entry, an unknown country or advertiser, a missing revenueShare, or an invalid minimum margin
- `401` — Authentication error
- `403` — Insufficient permissions, naming the missing one
- `404` — Not found — resource does not exist

## Example request

```bash
curl --request POST \
  --url 'https://YOUR-NETWORK-DOMAIN/rest-api/placements/4001/pricing.do' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "price": "1.50",
  "revenueShare": "60.0",
  "enablePricingOverride": "true",
  "pricingType": "CPM"
}'
```

Source: https://epom.com/ad-server/docs/api/placements/post-placements-pricing