---
title: "Schedule a reduction of purchased seats for the end of the current period"
method: POST
path: "/subscriptions/agents/reduce"
tags: ["Subscriptions"]
---

# Schedule a reduction of purchased seats for the end of the current period

`POST /subscriptions/agents/reduce`

## Request

- Base URL: `https://api.atako.ai`
- URL: `https://api.atako.ai/subscriptions/agents/reduce`
- Auth: HTTP bearer

Company-admin only. AF-57 (billing v2): never immediate — the company keeps its current seats until `pendingReductionEffectiveAt` (via a Stripe Subscription Schedule), no refund/credit. `activeAgentsPurchased` in the response is the unchanged, current live quantity. A new call while one is pending replaces it (same target = idempotent no-op).

## Request body

- object
  - `count` integer, required: Target TOTAL seat count.

## Response `200`

- object
  - `activeAgentsPurchased` integer: Unchanged — the current live quantity.
  - `pendingActiveAgentsPurchased` integer, nullable
  - `pendingReductionEffectiveAt` string, date-time, nullable
  - `effect` 'scheduled'
  - `alreadyApplied` boolean

## Other responses

- `400`: count must be a positive integer / AGENTS_STILL_ACTIVE / NOT_A_REDUCTION
- `401`: Missing, malformed, or invalid bearer token / API key, or revoked session (SESSION_REVOKED).
- `403`: The caller does not have the required role/permission.
- `404`: No company / No active subscription
- `500`: Stripe subscription has no line items

---

[API](https://skmtc.dev/atako/apis/atako-api.md) · [All operations](https://skmtc.dev/atako/apis/atako-api/llms.txt) · [OpenAPI document](https://skmtc.dev/atako/apis/atako-api/revisions/aa555c56fbd7?raw)
