---
title: "GET /wallets — Список кошельков"
url: https://lumean.app/developers/docs/api/get-wallets
locale: ru
description: "Список кошельков"
generated: 2026-10-18
operationId: billing.wallets
method: GET
path: /wallets
scopes: [billing.read]
spec_version: 1.0.0
---

# GET /wallets

**Список кошельков**

Кошельки владельца ключа: актив, доступный баланс и заблокированные средства
(зарезервированные под выполняющиеся заказы). Кошельков может быть несколько —
по одному на актив.

Суммы приходят в минимальных единицах актива вместе с его `precision`: реальное
значение — `amount / 10^precision`. Рядом лежит готовое к показу поле `*_formatted`.

Эндпоинт существует только при включённом кошельке; в модели «без аванса» его нет
(`404`), а остаток услуги смотрят в `GET /subscriptions`.

**Требуемое право ключа:** `billing.read`.

- Право ключа: `billing.read`

## Запрос

```bash
curl -X GET 'https://api.lumean.app/api/public/wallets' \
  -H 'Accept: application/json' \
  -H 'X-API-KEY: YOUR_API_KEY'
```

## Параметры

| Поле | Где | Тип | Обяз. | Описание |
| --- | --- | --- | --- | --- |
| `page` | query | `integer` — ≥ 1 | — | Номер страницы, начиная с `1`. |
| `per_page` | query | `integer` — 1..100 | — | Кошельков на странице. По умолчанию 20; их обычно единицы, так что параметр нужен редко. |
| `X-Locale` | header | `string` | — | Язык локализованных текстов ответа (`message`, подписи, причины ошибок), код ISO-639-1. Необязателен; без него — язык аккаунта владельца ключа, затем `Accept-Language`, затем язык по умолчанию. Неизвестный или неподдерживаемый код пропускается так же, как отсутствующий. |
| `X-Timezone` | header | `string` | — | IANA-зона (`Europe/Moscow`), в которой ответ показывает моменты времени — ISO-8601 со смещением. Необязателен; без него даты приходят в UTC. Невалидная зона игнорируется. Применённую зону сервер возвращает в одноимённом заголовке ответа. |

## Тело запроса

Тела нет.

## Ответы

### 200 — Список кошельков

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Признак успеха. Решение принимайте по HTTP-коду: у любого ответа 2xx здесь `true`, а ошибка приходит телом другой формы, где этого поля может не быть вовсе. |
| `message` | `string` | обяз. | Пояснение для человека, на языке аккаунта. Показать пользователю можно; разбирать программно — нет: формулировки меняются без предупреждения и кодом ошибки не являются. |
| `data` | `WalletList` | обяз. | Полезная нагрузка ответа. |
| `data.items` | `array<Wallet>` | обяз. | Записи текущей страницы в порядке сортировки списка. |
| `data.items[].id` | `integer` | обяз. | ID кошелька. По нему фильтруют историю: `GET /ledger-transactions?wallet_id=`. |
| `data.items[].user_id` | `integer` — nullable | обяз. | ID владельца кошелька — всегда владелец ключа. |
| `data.items[].asset_id` | `integer` — nullable | обяз. | ID актива, в котором ведётся кошелёк; сам актив — в `asset`. |
| `data.items[].purpose` | `string` | обяз. | Назначение кошелька: `main` — основной баланс, `referral` — реферальные начисления. |
| `data.items[].balance` | `integer` | обяз. | Баланс в минимальных единицах актива: сумма = `balance / 10^asset.precision`. Целое число, не дробь. |
| `data.items[].locked_balance` | `integer` | обяз. | Заблокированная часть баланса в минимальных единицах актива — зарезервирована под заказы в работе и заявки на вывод, тратить её нельзя. |
| `data.items[].balance_formatted` | `number` — nullable | — | Баланс десятичным числом по `asset.precision` (`balance / 10^precision`), готовый к показу. |
| `data.items[].locked_balance_formatted` | `number` — nullable | — | Заблокированная часть баланса десятичным числом по `asset.precision`. |
| `data.items[].balance_converted` | `object` — nullable | обяз. | Справочный пересчёт баланса в валюту отображения аккаунта. `null` у не-LUMC кошельков и когда курс недоступен; для расчётов используйте `balance`. |
| `data.items[].balance_converted.currency` | `string` | обяз. | Код валюты отображения (ISO 4217). |
| `data.items[].balance_converted.amount` | `number` | обяз. | Сумма в валюте отображения, округлённая до её `precision`. |
| `data.items[].balance_converted.symbol` | `string` | обяз. | Символ валюты для показа; `null`, если у валюты его нет. |
| `data.items[].balance_converted.precision` | `integer` | обяз. | Число знаков после запятой у валюты отображения. |
| `data.items[].asset` | `Asset` | — | Актив кошелька: код, вид и `precision` для перевода `balance` в сумму. |
| `data.items[].asset.id` | `integer` | обяз. | Внутренний идентификатор актива. |
| `data.items[].asset.code` | `string` | обяз. | Код актива: `LUMC` — внутренняя валюта, `TOKEN` — токены генерации. |
| `data.items[].asset.kind` | `AssetKind` — `money` · `unit` | обяз. | Вид актива: деньги или расходуемые единицы. От него зависит, где сумма считается платежом, а где — расходом квоты. |
| `data.items[].asset.precision` | `integer` | обяз. | Число десятичных знаков. **Ключевое поле:** любая целая сумма этого актива делится на `10^precision`, чтобы получить реальное значение. Не считайте, что делитель равен 100. |
| `data.items[].asset.name` | `string` | обяз. | Название актива для показа, на языке аккаунта. |
| `data.items[].asset.deleted_at` | `string` — date-time — nullable | обяз. | Когда актив выведен из обращения, ISO 8601. `null` у действующего. |
| `data.items[].asset.created_at` | `string` — date-time — nullable | обяз. | Когда актив заведён, ISO 8601. |
| `data.items[].asset.updated_at` | `string` — date-time — nullable | обяз. | Когда актив последний раз менялся, ISO 8601. |
| `data.items[].deleted_at` | `string` — date-time — nullable | обяз. | Момент удаления кошелька; у кошельков в выдаче — `null`. |
| `data.items[].created_at` | `string` — date-time — nullable | обяз. | Когда кошелёк создан. |
| `data.items[].updated_at` | `string` — date-time — nullable | обяз. | Когда кошелёк последний раз менялся — в том числе баланс. |
| `data.current_page` | `integer` | обяз. | Номер текущей страницы, с единицы. |
| `data.last_page` | `integer` | обяз. | Номер последней страницы. Обход списка закончен, когда `current_page` равен `last_page`. |
| `data.per_page` | `integer` | обяз. | Размер страницы, применённый сервером. |
| `data.total` | `integer` | обяз. | Сколько записей всего по фильтру. |

**Пример**

```json
{
  "success": true,
  "message": "string",
  "data": {
    "items": [
      {
        "id": 1,
        "user_id": 1,
        "asset_id": 1,
        "purpose": "string",
        "balance": 1,
        "locked_balance": 1,
        "balance_formatted": 1,
        "locked_balance_formatted": 1,
        "balance_converted": {
          "currency": "string",
          "amount": 1,
          "symbol": "string",
          "precision": 1
        },
        "asset": {
          "id": 1,
          "code": "string",
          "kind": null,
          "precision": 1,
          "name": null,
          "is_active": true,
          "is_default": true,
          "default_balance": 1,
          "deleted_at": "2026-07-17T12:34:56+00:00",
          "created_at": "2026-07-17T12:34:56+00:00",
          "updated_at": "2026-07-17T12:34:56+00:00"
        },
        "user": {
          "id": 1,
          "email": "string",
          "lang_code": "string",
          "timezone": "string",
          "display_currency": "string",
          "has_telegram": true,
          "created_at": "2026-07-17T12:34:56+00:00",
          "updated_at": "2026-07-17T12:34:56+00:00",
          "referral_code": "string",
          "referral": {
            "kind": null,
            "code": null,
            "program_id": null,
            "commission_rate": null
          },
          "preferred_domain": "string",
          "email_verified_at": "string",
          "is_admin": true,
          "is_beta_tester": true,
          "allowed_models": "string",
          "referrer_id": 1,
          "deleted_at": "2026-07-17T12:34:56+00:00",
          "blocked_at": "2026-07-17T12:34:56+00:00",
          "is_blocked": true,
          "tickets_banned_at": "string",
          "is_tickets_banned": true,
          "tickets_ban_reason": "string",
          "voice_clone_banned_at": "string",
          "is_voice_clone_banned": true,
          "voice_clone_ban_reason": "string",
          "is_super_admin": true,
          "admin_permissions": [
            null
          ],
          "admin_roles": [
            null
          ],
          "referrer": null,
          "referral_link": "string",
          "active_referral_program": null,
          "wallets": [
            null
          ],
          "telegram": null,
          "subscriptions": [
            null
          ],
          "order_settings": null,
          "entitlements": [
            null
          ]
        },
        "deleted_at": "2026-07-17T12:34:56+00:00",
        "created_at": "2026-07-17T12:34:56+00:00",
        "updated_at": "2026-07-17T12:34:56+00:00",
        "system_key": "string"
      }
    ],
    "current_page": 1,
    "last_page": 1,
    "per_page": 1,
    "total": 1
  }
}
```

### 401 — Невалидный или отсутствующий API-ключ

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |
| `data` | `null` — nullable | обяз. | Всегда `null`, когда запрос отклонён до обработки. |

**Пример**

```json
{
  "success": false,
  "message": "API key is missing. Provide it in the X-API-KEY header.",
  "data": null
}
```

### 403 — У ключа нет права billing.read

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Текст ошибки на языке ключа (задаётся заголовком `X-Locale`). |

**Пример**

```json
{
  "success": false,
  "message": "This API key does not have permission to perform this action."
}
```

### 422 — Ошибка валидации. Поля с ошибками перечислены в `errors`.

**Поля ответа**

| Поле | Тип | Обяз. | Описание |
| --- | --- | --- | --- |
| `success` | `boolean` | обяз. | Всегда `false` в ответах об ошибке. |
| `message` | `string` | обяз. | Сводка ошибок валидации словами, на языке ответа (`X-Locale`). |
| `errors` | `object` | обяз. | Разбор по полям: ключ — поле запроса, значение — список претензий к нему. |
| `errors.*` | `array<string>` — произвольные ключи | — |  |

**Пример**

```json
{
  "success": true,
  "message": "string",
  "errors": {}
}
```

---

- Эта же страница в браузере: https://lumean.app/developers/docs/api/get-wallets
- Машинный справочник целиком: https://api.lumean.app/docs/llm.md
