---
title: "Adjust Credits"
method: POST
path: "/admin/users/{user_id}/credits"
---

# Adjust Credits

`POST /admin/users/{user_id}/credits`

## Request

- Base URL: `https://api.twtapi.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.twtapi.com/admin/users/{user_id}/credits`
- Auth: none declared

人工增减积分（amount 正数=加、负数=扣）。

副作用（三处，顺序重要）：
1. 改 MySQL 并写一条 CreditLog（credit_service 内部用 SELECT ... FOR UPDATE
   行锁，本身就在事务里，并会 commit）；
2. 清该用户的鉴权缓存 + C 端看板缓存，让前台立刻看到新余额；
3. 若开启 CREDIT_USE_REDIS，再把增量同步到 Redis 余额。

一致性取舍：第 3 步失败（Redis 不可用）只记异常日志、不抛错——此时
MySQL 已是权威数据，Redis 只是加速层，失败会由后续读路径回源修正；
反过来若抛错会让运营以为"操作失败"而重复操作，造成重复加减。

异常：金额/用户不存在等业务错误被 credit_service 抛成 ValueError，
这里转成 400 返回。

## Path parameters

- `user_id` integer, required

## Request body

- AdminCreditAdjust: 管理员手动调整用户余额。amount 可正可负，会写入 CreditLog 审计。
  - `amount` number, required
  - `description` string

## Response `200`

Successful Response

- unknown

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/twtapi/apis/twtapi-backend.md) · [All operations](https://skmtc.dev/twtapi/apis/twtapi-backend/llms.txt) · [OpenAPI document](https://skmtc.dev/twtapi/apis/twtapi-backend/revisions/5295976febaf?raw)
