---
title: "Grant Studio Subscription Admin"
method: POST
path: "/api/admin/grant-studio-subscription"
tags: ["admin"]
---

# Grant Studio Subscription Admin

`POST /api/admin/grant-studio-subscription`

## 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/grant-studio-subscription`
- Auth: none declared

Attach (or cancel) a COMP studio subscription — no Stripe (admin API key).

Body: ``{user_id? | email?, plan, billing_period?='monthly', months?}`` to
attach, or ``{user_id?|email?, cancel: true}`` to cancel. A comp subscription
sets the wallet's studio_* fields to an active subscription with
``studio_subscription_id = NULL`` (the marker for manual/non-Stripe), and
grants the plan's credit allotment with a matching expiry — mirroring exactly
what the invoice webhook does for a paid subscription, so the consumed amount
and scale stay identical. Lets support comp a plan without a card.

## Headers

- `x-admin-key` string, nullable

## Request body

- object

## 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)
