---
title: "Update a custom parameter"
type: reference
method: POST
path: /rest-api/custom-parameters/{parameterId}.do
tag: "Custom Parameters"
---

# Update a custom parameter

`POST https://YOUR-NETWORK-DOMAIN/rest-api/custom-parameters/{parameterId}.do`

Changes only the fields in the body and keeps the others; {"listSeparator": null} makes the value single again. A built-in parameter keeps its name. A rename does not change the targeting rules that read the old name: they keep reading it, unregistered. Ad serving reads the change within a minute. Requires the CUSTOM_PARAMETERS admin permission (Admin → Targeting presets → Custom parameters).

## Path params

| Name | Type | Required | Example | Description |
|---|---|---|---|---|
| `parameterId` | string | yes | `genre` | Parameter id or name |

## Body

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

```json
{
  "name": "genre",
  "label": "Content genre",
  "description": "Genre of the page, from the publisher's CMS",
  "valueMode": "STATIC"
}
```

## Responses

- `200` — {parameter, ignoredFields}
- `400` — Invalid body, each problem named in errors by field
- `401` — Authentication error
- `403` — Insufficient permissions, naming the missing one
- `404` — No parameter with this id or name
- `409` — Another parameter already has this name

## Example request

```bash
curl --request POST \
  --url 'https://YOUR-NETWORK-DOMAIN/rest-api/custom-parameters/genre.do' \
  --header 'X-Api-Key: YOUR_API_KEY' \
  --header 'Content-Type: application/json' \
  --data '{
  "name": "genre",
  "label": "Content genre",
  "description": "Genre of the page, from the publisher'\''s CMS",
  "valueMode": "STATIC"
}'
```

Source: https://epom.com/ad-server/docs/api/custom-parameters/post-custom-parameters-by-parameter-id