---
title: "Update a tier (admin)"
method: PATCH
path: "/admin/tiers/{code}"
tags: ["admin"]
---

# Update a tier (admin)

`PATCH /admin/tiers/{code}`

## Request

- Base URL: `https://api.qualityclouds.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.qualityclouds.ai/admin/tiers/{code}`
- Auth: one of:
  - HTTP bearer
  - OpenID Connect (`https://account.qualityclouds.com//realms/ai-production/.well-known/openid-configuration`)

Changes the fields present in the body. The tier code is immutable. Requires the Keycloak 'admins' group.

## Path parameters

- `code` string, required

## Request body

- AdminTierUpdateRequest: PATCH /admin/tiers/{code} — change a tier. Every field is optional and only the fields present in the body are written, so a null is an explicit "clear this column" rather than "leave it alone". ``code`` is absent on purpose: it is the key organisations point at, so renaming it would orphan them. Activation has its own endpoint.
  - `name` string, nullable
  - `description` string, nullable
  - `rank` integer, nullable
  - `price_amount` integer, nullable
  - `currency` string, nullable
  - `max_users` integer, nullable
  - `is_billable` boolean, nullable
  - `stripe_price_id` string, nullable
  - `stripe_product_id` string, nullable

## Response `200`

Successful Response

- AdminTierResponse: One tier as an administrator sees it. Unlike the public ``TierResponse`` on GET /api/v1/tiers, this carries the Stripe identifiers and the organisation count. It is served only behind the system-admin guard.
  - `code` string, required
  - `name` string, required
  - `description` string, required
  - `rank` integer, required
  - `is_billable` boolean, required
  - `is_active` boolean, required
  - `price_amount` integer, nullable, required
  - `currency` string, nullable, required
  - `max_users` integer, nullable, required
  - `stripe_price_id` string, nullable, required
  - `stripe_product_id` string, nullable, required
  - `organisations_count` integer, required
  - `quotas` AdminTierQuotaResponse[], required
    - `quota_key` string, required
    - `max_allowed` integer, required
    - `reset_period` string, nullable, required
  - `tools` AdminTierToolResponse[], required
    - `tool_id` string, required
    - `included` boolean, required

## Other responses

- `401`: Unauthorized
- `403`: Forbidden
- `422`: Validation Error

---

[API](https://skmtc.dev/qualityclouds/apis/qai-orchestrator-api.md) · [All operations](https://skmtc.dev/qualityclouds/apis/qai-orchestrator-api/llms.txt) · [OpenAPI document](https://skmtc.dev/qualityclouds/apis/qai-orchestrator-api/revisions/250c849925af?raw)
