---
title: "Runs user rental & storage volume ledgering"
method: POST
path: "/v2/private/ledger-rentals"
---

# Runs user rental & storage volume ledgering

`POST /v2/private/ledger-rentals`

Kicks off an idempotent process that ledgers usage for all active rentals & storage volumes given a timeframe, defaulting to the past whole hour

## Request body

- object
  - `timeAnchor` string
  - `precision` 'hour' | 'minute'

## Response `200`

Successful response

- object
  - `timeAnchor` string, required
  - `period` object, required
    - `start` string, required
    - `end` string, required
  - `rentals` object, required
    - `success` object[], required
      - `status` 'success' | 'error' | 'skipped', required
      - `customer` union, required
        - object
          - `customerType` 'user', required
          - `polymorphicId` string, required
          - `user` object, required
            - `id` string, required
        - object
          - `customerType` 'organization', required
          - `polymorphicId` string, required
          - `org` object, required
            - `id` string, required
            - `userId` string, required
      - `cost` number, required
      - `ledgeredAmount` number, required
      - `idempotencyKey` string, nullable, required
      - `message` string
      - `error` string
      - `rentalId` number, required
    - `error` object[], required
      - `status` 'success' | 'error' | 'skipped', required
      - `customer` union, required
        - object
          - `customerType` 'user', required
          - `polymorphicId` string, required
          - `user` object, required
            - `id` string, required
        - object
          - `customerType` 'organization', required
          - `polymorphicId` string, required
          - `org` object, required
            - `id` string, required
            - `userId` string, required
      - `cost` number, required
      - `ledgeredAmount` number, required
      - `idempotencyKey` string, nullable, required
      - `message` string
      - `error` string
      - `rentalId` number, required
    - `rejected` object[], required
      - `status` 'rejected', required
      - `reason` unknown
    - `skipped` object[], required
      - `status` 'success' | 'error' | 'skipped', required
      - `customer` union, required
        - object
          - `customerType` 'user', required
          - `polymorphicId` string, required
          - `user` object, required
            - `id` string, required
        - object
          - `customerType` 'organization', required
          - `polymorphicId` string, required
          - `org` object, required
            - `id` string, required
            - `userId` string, required
      - `cost` number, required
      - `ledgeredAmount` number, required
      - `idempotencyKey` string, nullable, required
      - `message` string
      - `error` string
      - `rentalId` number, required
  - `storageVolumes` object, required
    - `success` object[], required
      - `status` 'success' | 'error' | 'skipped', required
      - `customer` union, required
        - object
          - `customerType` 'user', required
          - `polymorphicId` string, required
          - `user` object, required
            - `id` string, required
        - object
          - `customerType` 'organization', required
          - `polymorphicId` string, required
          - `org` object, required
            - `id` string, required
            - `userId` string, required
      - `cost` number, required
      - `ledgeredAmount` number, required
      - `idempotencyKey` string, nullable, required
      - `message` string
      - `error` string
      - `storageVolumeId` number, required
    - `error` object[], required
      - `status` 'success' | 'error' | 'skipped', required
      - `customer` union, required
        - object
          - `customerType` 'user', required
          - `polymorphicId` string, required
          - `user` object, required
            - `id` string, required
        - object
          - `customerType` 'organization', required
          - `polymorphicId` string, required
          - `org` object, required
            - `id` string, required
            - `userId` string, required
      - `cost` number, required
      - `ledgeredAmount` number, required
      - `idempotencyKey` string, nullable, required
      - `message` string
      - `error` string
      - `storageVolumeId` number, required
    - `rejected` object[], required
      - `status` 'rejected', required
      - `reason` unknown
    - `skipped` object[], required
      - `status` 'success' | 'error' | 'skipped', required
      - `customer` union, required
        - object
          - `customerType` 'user', required
          - `polymorphicId` string, required
          - `user` object, required
            - `id` string, required
        - object
          - `customerType` 'organization', required
          - `polymorphicId` string, required
          - `org` object, required
            - `id` string, required
            - `userId` string, required
      - `cost` number, required
      - `ledgeredAmount` number, required
      - `idempotencyKey` string, nullable, required
      - `message` string
      - `error` string
      - `storageVolumeId` number, required

## Other responses

- `400` — Invalid input data
- `401` — Authorization not provided
- `403` — Insufficient access
- `500` — Internal server error

---

[API](https://skmtc.net/hyperbolic/apis/castle-api.md) · [All operations](https://skmtc.net/hyperbolic/apis/castle-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/hyperbolic/castle-api/revisions/fd9320b4b13d/schema)
