Перейти к содержимому

Траты клиента за период

Траты за период

POST https://gptunnel.ru/api/v1/balance/spending

Возвращает траты клиента в рублях за период с разбивкой по дням или по месяцам. Клиент задаётся ровно одним полем:

  • user_id — траты пользователя: с личного счёта и со счетов организаций-клиентов партнёра, в которых он работает;
  • org_id — траты со счёта организации, по всем её сотрудникам.

Тратой считаются списания за использование сервиса — запросы к моделям и другие платные функции — за вычетом возвратов за неуспешные генерации. Возврат может прийти в другой день, чем списание, поэтому сумма за период бывает отрицательной. Пополнения, переводы и возвраты переводов в выдачу не попадают.

Метод только читает данные, заголовок Idempotency-Key не нужен.

Headers

ПараметрТипОписание
Authorization*stringAPI ключ организации
Content-Type*stringapplication/json

Параметры запроса

ПараметрТипОписание
user_idstringID пользователя-клиента, 24 hex-символа строчными. Ровно одно из user_id, org_id и user_data
org_idstringID организации-клиента, 24 hex-символа строчными. Ровно одно из user_id, org_id и user_data
user_dataobjectПоиск пользователя по телефону: { "phone": "+79XXXXXXXXX" }. Подключается отдельно, см. обзор
date_from*stringНачало периода, YYYY-MM-DD, включительно
date_to*stringКонец периода, YYYY-MM-DD, включительно. Не раньше date_from
group_bystringday (по умолчанию) или month
by_userbooleantrue — добавить в каждый период разбивку по сотрудникам. Только вместе с org_id

Границы дней и месяцев считаются по московскому времени. Длина периода ограничена: до 92 дней при group_by: "day" и до 366 дней при group_by: "month".

Пример запроса

Окно терминала
curl --request POST \
--url https://gptunnel.ru/api/v1/balance/spending \
--header 'Authorization: YOUR_API_KEY' \
--header 'Content-Type: application/json' \
--data '{
"user_id": "6ad72133269dc8d9f75a33bc",
"date_from": "2026-11-01",
"date_to": "2026-11-02"
}'

Ответ

Поля ответа

ПараметрТипОписание
codenumber0 при успехе
typestringuser или org — по кому построен отчёт
idstringID пользователя или организации
date_fromstringНачало периода из запроса
date_tostringКонец периода из запроса
group_bystringday или month
currencystringВсегда RUB
periodsarrayПо одному элементу на каждый день или месяц периода, по возрастанию. Периоды без трат тоже присутствуют, с нулями
summaryobjectИтог за весь период в тех же полях, что у элемента periods, без period и users

Элемент periods

ПараметрТипОписание
periodstringYYYY-MM-DD при группировке по дням, YYYY-MM — по месяцам
amountnumberПотрачено рублей. Отрицательное, если возвратов в периоде больше, чем списаний
bonusnumberПотрачено бонусов, 1 бонус = 0,5 ₽
totalnumberИтог в рублях: amount плюс бонусы по курсу
personalobjectТолько для пользователя: траты с личного счёта — amount, bonus, total
orgsarrayТолько для пользователя: его траты со счетов организаций — org_id, amount, bonus, total; по убыванию total
usersarrayТолько для org_id с by_user: true — траты по сотрудникам: user_id, amount, bonus, total; по убыванию total

При группировке по месяцам в неполный месяц попадают только дни внутри date_from — date_to.

{
"code": 0,
"type": "user",
"id": "6ad72133269dc8d9f75a33bc",
"date_from": "2026-11-01",
"date_to": "2026-11-02",
"group_by": "day",
"currency": "RUB",
"periods": [
{
"period": "2026-11-01",
"amount": 86.4,
"bonus": 0,
"total": 86.4,
"personal": { "amount": 36.4, "bonus": 0, "total": 36.4 },
"orgs": [
{ "org_id": "6ad7a4f2269dc8d9f75a41d0", "amount": 50, "bonus": 0, "total": 50 }
]
},
{
"period": "2026-11-02",
"amount": 0,
"bonus": 0,
"total": 0,
"personal": { "amount": 0, "bonus": 0, "total": 0 },
"orgs": []
}
],
"summary": {
"amount": 86.4,
"bonus": 0,
"total": 86.4,
"personal": { "amount": 36.4, "bonus": 0, "total": 36.4 },
"orgs": [
{ "org_id": "6ad7a4f2269dc8d9f75a41d0", "amount": 50, "bonus": 0, "total": 50 }
]
}
}

Ошибки

HTTPcodeКогда
4003Тело не по схеме: нет клиента или указано больше одного поля, лишнее поле, id не из 24 символов 0-9a-f, дата не YYYY-MM-DD или несуществующая, date_from позже date_to, период длиннее лимита, by_user: true без org_id. Подробности — в поле details
40313Ключ личного аккаунта, а не организации
40327Поиск по user_data организации не подключён
40340Организации ключа метод не подключён
40417Пользователь не найден, удалён или не является клиентом партнёра
40424Организация не найдена, удалена или не является клиентом партнёра

Ключ проверяется раньше тела: ключ без доступа получит 403 даже на запрос с телом не по схеме.

Полный список кодов и ответ 401 на неверный ключ — в справочнике ошибок.