---
title: "Export Hourly Usage"
method: POST
path: "/api/v1/users/hourly-usage/export"
tags: ["Users"]
---

# Export Hourly Usage

`POST /api/v1/users/hourly-usage/export`

## Request

- Base URL: `https://api.neosapien.xyz` (the document declares no server; this is the origin it was published from)
- URL: `https://api.neosapien.xyz/api/v1/users/hourly-usage/export`
- Auth: HTTP bearer

The client's hourly usage workbook: one row per DSR per day, 24 buckets.

Served from the rollup, never computed here — a month for a whole tenant is
hundreds of thousands of buckets. The rate limit is well below the other
export's because one call is a large synchronous workbook build.

## Request body

- HourlyUsageExportRequest: Range for the DSR hourly usage workbook. Deliberately narrower than UserStatsExportRequest: this export is one row per user per day, so an unbounded range becomes hundreds of thousands of rows.
  - `time_range` 'today' | 'week' | 'month' | 'all_time' | 'custom'
  - `start_date` string, nullable
  - `end_date` string, nullable
  - `tz_info` string, nullable

## Response `200`

Successful Response

## Other responses

- `422`: Validation Error

## Changes

- **2026-09-30** `e3da287dd1f3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/neosapien/apis/neocore/changes/api/v1/users/hourly-usage/export/post.md)

---

[API](https://skmtc.dev/neosapien/apis/neocore.md) - [All operations](https://skmtc.dev/neosapien/apis/neocore/llms.txt) - [OpenAPI document](https://skmtc.dev/neosapien/apis/neocore/revisions/a42bfdafa6fe?raw)
