---
title: "Update promotion"
method: PATCH
path: "/api/v1/promotions/{id}"
tags: ["promotions"]
---

# Update promotion

`PATCH /api/v1/promotions/{id}`

Partially updates a promotion by its identifier. The code is immutable. Editing content is blocked while the promotion is active and in effect; toggling "active" is always allowed.

## Path parameters

- `id` string, uuid, required

## Request body

- PromotionUpdate

## Response `200`

Promotion updated.

- PromotionUpdateResponse
  - `metadata` object, nullable, required

## Other responses

- `400` — Request payload, query string, or path parameter failed validation.
- `401` — Authentication is missing, malformed, expired, or refers to a session that is no longer active.
- `403` — The caller is authenticated but lacks the required permission for this action.
- `404` — Promotion not found in the caller account.
- `422` — The payload passed schema validation but breaks a domain invariant, references a missing entity, or the promotion cannot have its content edited in its current lifecycle state.
- `500` — Unexpected server error. The response body never leaks internal details.

## Changes

- **2026-07-07** `84194c31ab85` — 14 breaking, 11 warning
  - removed the required property `accumulation` from the response with the `200` status
  - removed the required property `active` from the response with the `200` status
  - removed the required property `benefit` from the response with the `200` status
  - removed the required property `code` from the response with the `200` status
  - …21 more

[Change history](https://skmtc.dev/kruzer-corp/apis/oms-api/changes/api/v1/promotions/:id/patch.md)

---

[API](https://skmtc.dev/kruzer-corp/apis/oms-api.md) · [All operations](https://skmtc.dev/kruzer-corp/apis/oms-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/kruzer-corp/oms-api/revisions/e20d4f219a6a/schema)
