---
title: "Cancel User Studio Subscription"
method: POST
path: "/api/admin/users/{user_id}/studio-subscription/cancel"
tags: ["admin-users"]
---

# Cancel User Studio Subscription

`POST /api/admin/users/{user_id}/studio-subscription/cancel`

## Request

- Base URL: `https://api.tintin-x.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.tintin-x.com/api/admin/users/{user_id}/studio-subscription/cancel`
- Auth: HTTP bearer

Cancel a user's (or their owned team's) studio subscription.

``mode="period_end"`` keeps access + credits until the paid period lapses;
``mode="immediate"`` cancels in Stripe now (pair with ``zero_credits`` to
also empty the subscription pool). Safe for both real Stripe subscriptions
and admin comp subscriptions — see
``billing_service.admin_cancel_studio_subscription``.

## Path parameters

- `user_id` string, required

## Request body

- StudioSubscriptionCancelRequest: Admin cancellation of a user's (or their owned team's) studio subscription. ``period_end`` schedules a soft cancel — keeps access + credits until the paid period lapses (reversible via the user-facing resume). ``immediate`` cancels in Stripe right now; pair with ``zero_credits`` to also expire the subscription credit pool on the spot. Works for both real Stripe subscriptions and admin comp subscriptions (no Stripe id).
  - `mode` string
  - `zero_credits` boolean
  - `owner_team_id` string, nullable

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

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