---
title: "Add Row"
method: POST
path: "/menu-layout/rows"
tags: ["menu-layout"]
---

# Add Row

`POST /menu-layout/rows`

## Request

- The document declares no server URL.
- Auth: API key in header `X-API-Key`
- TypeScript: <https://skmtc.dev/bedolagam/apis/remnawave-bot-admin-api/docs/menu-layout/rows/post.ts> (a function with typed inputs; its response is checked against the schema)

Добавить новую строку.

## Request body

- AddRowRequest: Запрос на добавление новой строки.
  - `id` string, required: ID новой строки
  - `buttons` string[], required: Список ID кнопок
  - `conditions` ButtonConditions: Условия показа кнопки.
    - `has_active_subscription` boolean, nullable: Требуется активная подписка
    - `subscription_is_active` boolean, nullable: Подписка должна быть активна (не приостановлена)
    - `has_traffic_limit` boolean, nullable: Подписка с лимитом трафика
    - `is_admin` boolean, nullable: Пользователь - админ
    - `is_moderator` boolean, nullable: Пользователь - модератор
    - `referral_enabled` boolean, nullable: Реферальная программа включена
    - `contests_visible` boolean, nullable: Конкурсы видимы
    - `support_enabled` boolean, nullable: Поддержка включена
    - `language_selection_enabled` boolean, nullable: Выбор языка включен
    - `happ_enabled` boolean, nullable: Кнопка Happ включена
    - `simple_subscription_enabled` boolean, nullable: Простая подписка включена
    - `show_trial` boolean, nullable: Показать пробный период
    - `show_buy` boolean, nullable: Показать кнопку покупки
    - `has_saved_cart` boolean, nullable: Есть сохраненная корзина
    - `min_balance_kopeks` integer, nullable: Минимальный баланс в копейках
    - `max_balance_kopeks` integer, nullable: Максимальный баланс в копейках
    - `min_registration_days` integer, nullable: Минимум дней с регистрации
    - `max_registration_days` integer, nullable: Максимум дней с регистрации
    - `min_referrals` integer, nullable: Минимальное количество рефералов
    - `has_referrals` boolean, nullable: Есть рефералы
    - `promo_group_ids` string[], nullable: Список ID промо-групп (пользователь должен быть в одной из них)
    - `exclude_promo_group_ids` string[], nullable: Исключить пользователей из этих промо-групп
    - `has_subscription_days_left` integer, nullable: Минимум дней до окончания подписки
    - `max_subscription_days_left` integer, nullable: Максимум дней до окончания подписки
    - `is_trial_user` boolean, nullable: Пользователь на пробном периоде
    - `has_autopay` boolean, nullable: Автоплатёж включён
  - `max_per_row` integer: Макс. кнопок в строке
  - `position` integer, nullable: Позиция вставки (по умолчанию - в конец)

## Response `201`

Successful Response

- MenuRowConfig: Конфигурация строки меню.
  - `id` string, required: Уникальный ID строки
  - `buttons` string[], required: Список ID кнопок в строке
  - `conditions` ButtonConditions: Условия показа кнопки.
    - `has_active_subscription` boolean, nullable: Требуется активная подписка
    - `subscription_is_active` boolean, nullable: Подписка должна быть активна (не приостановлена)
    - `has_traffic_limit` boolean, nullable: Подписка с лимитом трафика
    - `is_admin` boolean, nullable: Пользователь - админ
    - `is_moderator` boolean, nullable: Пользователь - модератор
    - `referral_enabled` boolean, nullable: Реферальная программа включена
    - `contests_visible` boolean, nullable: Конкурсы видимы
    - `support_enabled` boolean, nullable: Поддержка включена
    - `language_selection_enabled` boolean, nullable: Выбор языка включен
    - `happ_enabled` boolean, nullable: Кнопка Happ включена
    - `simple_subscription_enabled` boolean, nullable: Простая подписка включена
    - `show_trial` boolean, nullable: Показать пробный период
    - `show_buy` boolean, nullable: Показать кнопку покупки
    - `has_saved_cart` boolean, nullable: Есть сохраненная корзина
    - `min_balance_kopeks` integer, nullable: Минимальный баланс в копейках
    - `max_balance_kopeks` integer, nullable: Максимальный баланс в копейках
    - `min_registration_days` integer, nullable: Минимум дней с регистрации
    - `max_registration_days` integer, nullable: Максимум дней с регистрации
    - `min_referrals` integer, nullable: Минимальное количество рефералов
    - `has_referrals` boolean, nullable: Есть рефералы
    - `promo_group_ids` string[], nullable: Список ID промо-групп (пользователь должен быть в одной из них)
    - `exclude_promo_group_ids` string[], nullable: Исключить пользователей из этих промо-групп
    - `has_subscription_days_left` integer, nullable: Минимум дней до окончания подписки
    - `max_subscription_days_left` integer, nullable: Максимум дней до окончания подписки
    - `is_trial_user` boolean, nullable: Пользователь на пробном периоде
    - `has_autopay` boolean, nullable: Автоплатёж включён
  - `max_per_row` integer: Максимум кнопок в строке

## Other responses

- `422`: Validation Error

## Changes

- **2026-11-03** `2360876ff9c5`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/bedolagam/apis/remnawave-bot-admin-api/changes/menu-layout/rows/post.md)

---

[API](https://skmtc.dev/bedolagam/apis/remnawave-bot-admin-api.md) - [All operations](https://skmtc.dev/bedolagam/apis/remnawave-bot-admin-api/llms.txt) - [OpenAPI document](https://skmtc.dev/bedolagam/apis/remnawave-bot-admin-api/revisions/2360876ff9c5?raw)
