---
title: "Reconcile Seats"
method: POST
path: "/v1/internal/seats/reconcile"
---

# Reconcile Seats

`POST /v1/internal/seats/reconcile`

## Request

- Base URL: `https://api.graphify.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.graphify.com/v1/internal/seats/reconcile`
- Auth: none declared

Reconcile every Team workspace's occupied seats against what it purchased.

Flags first drift with a heal-grace banner, suspends the newest over-quota seats once
past the grace (never an owner's), and heals back down when the drift resolves. Idempotent
and time-gated, so it is safe to run on a fixed cadence -- and a strict no-op while Teams
is dark, since no tenant is ``workspace_kind=team`` yet. Runs under the launcher identity
like the other reconcilers; the launcher tick is wired separately (engine-worker).

## Response `200`

Successful Response

- unknown

---

[API](https://skmtc.dev/graphify/apis/graphify-control-plane.md) · [All operations](https://skmtc.dev/graphify/apis/graphify-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/graphify/apis/graphify-control-plane/revisions/0e75c82b5ea8?raw)
