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

# Grant Studio Credits Admin

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

## 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-credits`
- Auth: none declared

Grant studio credits to a user's PERSONAL wallet, or to the TEAM that
user OWNS (admin API key required).

Body: ``{user_id? | email?, credits, expires_in_days?, target?}``.
``target`` is ``"personal"`` (default) or ``"team"``. For ``"team"`` we
resolve the team this user is the OWNER of (a user owns at most one — spec
2.2) and grant into that team's studio wallet instead; 400 if they own no
team. Used for testing and manual top-ups before the Stripe flow. SETs the
pool (no rollover) like a fresh grant.

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