---
title: "Update User Subscription"
method: POST
path: "/cabinet/admin/users/{user_id}/subscription"
tags: ["Cabinet Admin Users"]
---

# Update User Subscription

`POST /cabinet/admin/users/{user_id}/subscription`

Update user subscription.

Actions:
- **extend**: Extend subscription by X days
- **set_end_date**: Set specific end date
- **change_tariff**: Change subscription tariff
- **set_traffic**: Set traffic limit and/or used traffic
- **toggle_autopay**: Enable/disable autopay
- **cancel**: Cancel subscription (set status to expired)
- **activate**: Activate subscription
- **create**: Create new subscription if not exists

## Path parameters

- `user_id` integer, required

## Request body

- UpdateSubscriptionRequest — Request to update user subscription.
  - `action` string, required — Action: extend, shorten, set_end_date, change_tariff, set_traffic, toggle_autopay, cancel
  - `days` integer, nullable — Days to extend
  - `end_date` string, date-time, nullable — New end date
  - `tariff_id` integer, nullable — New tariff ID
  - `traffic_limit_gb` integer, nullable — New traffic limit in GB
  - `traffic_used_gb` number, nullable — Set traffic used in GB
  - `autopay_enabled` boolean, nullable — Enable/disable autopay
  - `traffic_gb` integer, nullable — Traffic GB to add
  - `traffic_purchase_id` integer, nullable — Traffic purchase ID to remove
  - `is_trial` boolean, nullable — Is trial subscription
  - `device_limit` integer, nullable — Device limit

## Response `200`

Successful Response

- UpdateSubscriptionResponse — Response after subscription update.
  - `success` boolean, required
  - `message` string, required
  - `subscription` UserSubscriptionInfo — User subscription information.
    - `id` integer, required
    - `status` string, required
    - `is_trial` boolean, required
    - `start_date` string, date-time, nullable
    - `end_date` string, date-time, nullable
    - `traffic_limit_gb` integer
    - `traffic_used_gb` number
    - `device_limit` integer
    - `tariff_id` integer, nullable
    - `tariff_name` string, nullable
    - `autopay_enabled` boolean
    - `is_active` boolean
    - `days_remaining` integer
    - `purchased_traffic_gb` integer
    - `traffic_purchases` TrafficPurchaseItem[]
      - `id` integer, required
      - `traffic_gb` integer, required
      - `expires_at` string, date-time, required
      - `created_at` string, date-time, required
      - `days_remaining` integer, required
      - `is_expired` boolean, required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.net/bedolagam/apis/remnawave-bot-admin-api.md) · [All operations](https://skmtc.net/bedolagam/apis/remnawave-bot-admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bedolagam/remnawave-bot-admin-api/versions/45956d1b13ec/schema)
