---
title: "Get Downgrade Eligibility"
method: GET
path: "/internal/workspaces/{workspace_id}/downgrade-eligibility"
tags: ["internal-billing"]
---

# Get Downgrade Eligibility

`GET /internal/workspaces/{workspace_id}/downgrade-eligibility`

## Request

- Base URL: `https://memory.kagura-ai.com` (the document declares no server; this is the origin it was published from)
- URL: `https://memory.kagura-ai.com/internal/workspaces/{workspace_id}/downgrade-eligibility`
- Auth: none declared

Report whether a workspace's usage fits each lower tier (#1123).

Service-authenticated, internal-only. memory-cloud is the usage SoT; the
external billing service gates its portal downgrade UI on this so it never
offers a downgrade that current usage cannot satisfy (purchased addons are
kept — the fit is against the target tier base + retained addon bonuses).
The absolute ``PUT .../plan`` push stays reconcile-safe and does NOT itself
enforce this guard; enforcement is the portal's responsibility, informed by
this read. Soft-deleted workspaces 404 (consistent with the entitlement read).

## Path parameters

- `workspace_id` string, required

## Headers

- `authorization` string, nullable

## Response `200`

Successful Response

- DowngradeEligibilityView: Usage-fit downgrade eligibility for every tier below the current one (#1123).
  - `workspace_id` string, required
  - `current_plan` string, required
  - `targets` TierDowngradeEligibility[], required
    - `target_plan` string, required
    - `eligible` boolean, required
    - `blockers` DowngradeBlocker[], required
      - `dimension` 'members' | 'contexts' | 'memories' | 'resource_tokens' | 'shared_contexts' | 'connectors' | 'sleep_enabled_contexts' | 'storage_bytes', required: Usage dimensions that can block a downgrade (stable wire contract).
      - `usage` integer, required
      - `limit` integer, required
      - `overage` integer, required
      - `cleanup` 'remove_members' | 'delete_contexts' | 'delete_memories' | 'revoke_resource_tokens' | 'unshare_contexts' | 'remove_connectors' | 'disable_sleep_contexts' | 'delete_files', required: The destructive cleanup a blocker requires (stable wire contract).

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud.md) · [All operations](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud/llms.txt) · [OpenAPI document](https://skmtc.dev/kagura-ai/apis/kagura-memory-cloud/revisions/09f17f5ada29?raw)
