Читайте реєстр руху грошей

Прочитайте журнал грошей, які проєкт зарезервував, повернув і витратив, запис за записом.

Реєстр — це журнал руху грошей проєкту. Кожен холд, кожне повернення і кожне списання додають запис, і після цього запис ніколи не змінюється. Операція цієї сторінки читає журнал, а консоль показує його на вкладці Реєстр екрана Операції.

Що каже запис

type каже, що саме зрушилося. Знак amount рахується з боку бюджету: додатна сума береться з бюджету, а від’ємна повертається до нього.

typeКоли записуєтьсяamount
reservation_holdБереться холдЗарезервована сума
reservation_releaseХолд звільняєтьсяПовернена сума, від’ємна
usage_captureВиклик списуєтьсяСкільки коштував виклик
overrunВиклик коштував більше за свій холдЧастина вартості понад холд

Контракт називає ще три типи: manual_adjustment, budget_credit і refund. Жодна операція API їх не записує.

reservation_id називає холд, до якого належить запис. metadata несе те, з чим запис було зроблено: модель холду, кількості токенів списання.

Не додавайте записи, щоб отримати витрати: і холд, і його списання додатні, а overrun — це частина usage_capture того самого виклику, а не гроші понад неї. Щоб дізнатися, скільки витратив проєкт, скористайтеся звітом про витрати на сторінці Аналітика.

Вікно і сторінки

Список читається всередині вікна часу, найновіші записи — на початку.

  • Без from і to вікно — це останні сім днів, включно із сьогоднішнім.

  • from і to надсилаються разом, і вікно між ними — не більше семи днів.

  • Значення зі зміщенням — це момент, який воно називає. Значення без зміщення читається як UTC.

  • Один із двох без іншого, to раніше за from або ширше вікно відповідають 422 з кодом invalid_date_range.

Усередині вікна список ділиться на сторінки: надішліть meta.next_cursor однієї сторінки як cursor наступного запиту. Щоб прочитати довший період, зсувайте вікно.

Список можна читати й за номером сторінки. Надішліть page замість cursor, і в meta замість next_cursor прийдуть page, limit, total і anchor; сторінки рахуються всередині того самого вікна. Надсилайте anchor першої сторінки з усіма іншими сторінками: рахуються лише записи з ID не більшим за нього, тому запис, зроблений за цей час, не зсуває рядки зі сторінки на сторінку. На page разом із cursor і на anchor без page відповідь — 422; як рахується total, каже розділ Пошук і нумеровані сторінки.

Операції

Описи операцій і полів подано англійською.

Рухи грошей у реєстрі

GET /v1/ledger-entries

  • Дозвіл: read

Параметри

ПараметрОпис
cursor необовʼязково

querystring

The meta.next_cursor of the previous page.

limit необовʼязково

queryinteger

Page size (default 30).

  • Мінімум: 1
  • Максимум: 100
page необовʼязково

queryinteger

The page number, from 1. Turns the list into its numbered form: the answer's meta is a PageMeta (with total) instead of a CursorMeta. Together with cursor it is a 422; without page the answer is the cursor page, unchanged. A page past the last one is an empty data with the same total.

  • Мінімум: 1
  • Максимум: 10000
anchor необовʼязково

querystring

The meta.anchor of the first numbered page: only rows with an id at or below it are counted and paged, so rows written after the first page do not shift pages 2..N. Without it the newest matching row is the anchor, and the answer names it. Only with page (422 otherwise).

  • Шаблон: ^\d{1,20}$
from необовʼязково

querystring

Window start, ISO-8601 — a value with an offset is the moment it names, one without is read as UTC. The rule of the three lists that take this parameter (/v1/operations, /v1/authorizations, /v1/ledger-entries): from and to are given together or not at all, to must not precede from, and the window must not exceed 7 days. Naming neither end selects the last 7 days rather than the whole table — an unbounded range is the one query shape that cannot use the (project_id, created_at, id) index. Anything else answers 422 invalid_date_range. The analytics read their window by another rule (WindowFrom).

  • Формат: date-time
to необовʼязково

querystring

Window end, ISO-8601, inclusive. See from for the window rule of the three lists: both ends together, to >= from, at most 7 days, otherwise 422 invalid_date_range.

  • Формат: date-time

Відповіді

200

One page of ledger entries — a cursor page, or a numbered one with page

application/json
{
  "data": [
    {
      "entry_id": "74438200973594624",
      "reservation_id": "74438200973594624",
      "type": "reservation_hold",
      "amount": "0.02700000",
      "currency": "USD",
      "metadata": {},
      "created_at": "2026-10-02T09:30:00Z"
    }
  ],
  "meta": {
    "limit": 1,
    "next_cursor": "string"
  }
}

Помилки

СтатусКодиКоли
401

No credential, or one that is not valid

403

Authenticated, but not allowed: scope (insufficient_scope), policy or tenant (not_a_member); a blocked end customer (customer_blocked); an act only a signed-in person may take (session_required); the role rule on members and invitations (member_forbidden, invite_forbidden); a write to the organization's own rows, or a read of the audit journal, by a caller that does not reach every project (project_access_restricted)

422

Validation failure or a semantically impossible request. Field-level validation from the framework answers {"message", "errors"}; domain refusals answer the standard error envelope. An Idempotency-Key longer than 190 characters is invalid_request in that envelope.

Заголовки

  • X-Request-Id

Тіло кожної помилки — конверт помилки.

Приклади

Прочитати останні записи

У відповіді два записи одного виклику, найновіший — першим: його списання, потім його холд. meta.next_cursor — це cursor наступної сторінки.

Terminal
curl "https://api.slen.ai/api/v1/ledger-entries?limit=2" \
  -H "Authorization: Bearer $SLEN_API_KEY"
200 OK
{
  "data": [
    {
      "entry_id": "74442131708452864",
      "reservation_id": "74442097331195904",
      "type": "usage_capture",
      "amount": "0.00014100",
      "currency": "USD",
      "metadata": {
        "input_tokens": 420,
        "output_tokens": 130,
        "is_partial": false,
        "estimated_cost": "0.00018300",
        "reserved_amount": "0.00021960"
      },
      "created_at": "2026-10-02T08:40:15+00:00"
    },
    {
      "entry_id": "74442097335390208",
      "reservation_id": "74442097331195904",
      "type": "reservation_hold",
      "amount": "0.00021960",
      "currency": "USD",
      "metadata": {
        "model_code": "gpt-4o-mini",
        "estimation_strategy": "maximum",
        "safety_multiplier": "1.200"
      },
      "created_at": "2026-10-02T08:40:12+00:00"
    }
  ],
  "meta": {
    "limit": 2,
    "next_cursor": "74442097335390208"
  }
}

Що читати далі

Зібрано з openapi b070e1f, sdk contract 5cc7055, php ae4a53b, node 84bc62d