---
title: "Change Lab Seats"
method: POST
path: "/api/billing/lab/{lab_id}/seats"
---

# Change Lab Seats

`POST /api/billing/lab/{lab_id}/seats`

Grow or shrink a PAID lab's seat count. Owner-only.

- **Grow** (seats > current cap): a prorated top-up order for the added
  seats over the CURRENT subscription's remaining days. The added seats
  co-terminate with that sub (no expiry extension) — the paid webhook
  lifts `seat_quota` to the new total. Returns a `pay_url`.
- **Shrink** (seats < current cap, ≥ active members ≥ min): takes effect
  immediately; surplus is NOT refunded (不退不换). Returns the lab.

## Path parameters

- `lab_id` string, required

## Headers

- `authorization` string, nullable

## Request body

- SeatChangeIn — Change a paid lab's seat count. `seats` is the NEW TOTAL (not a delta). Growing beyond the current cap creates a prorated, co-terminating top-up order paid via `provider`; shrinking takes effect immediately with no refund (surplus is not credited — the '不退不换' policy).
  - `seats` integer, required
  - `provider` string

## Response `200`

Successful Response

- object

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/omicos/apis/omicos-server.md) · [All operations](https://skmtc.dev/omicos/apis/omicos-server/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/omicos/omicos-server/revisions/a00b94573ffe/schema)
