---
title: "Stateless subscription audit with non-double-counted savings"
method: POST
path: "/api/v1/audit"
tags: ["Decisions"]
---

# Stateless subscription audit with non-double-counted savings

`POST /api/v1/audit`

## Request

- Base URL: `https://onelesstool.com`
- URL: `https://onelesstool.com/api/v1/audit`
- Auth: none declared

Nothing is stored. To save a private shareable report, use the website.

## Request body

- AuditInput
  - `subscriptions` object[], required
    - `tool` string, required
    - `plan` string
    - `monthlyCostUSD` number, required
    - `seats` integer
    - `usage` 'daily' | 'weekly' | 'monthly' | 'rarely' | 'never'
    - `capabilitiesUsed` string[]
    - `criticality` 'low' | 'medium' | 'high'
  - `skill` 'none' | 'basic' | 'technical'
  - `hourlyValueUSD` number

## Response `200`

Audit report with findings, totals and methodology

- object
  - `data` object, required
  - `meta` Meta, required
    - `apiVersion` string
    - `dataVersion` string: Hash of the content bundle; changes when data changes
    - `dataGeneratedAt` string, date-time
    - `docs` string
    - `disclaimer` string

## Other responses

- `400`: Invalid request
- `429`: Rate limited (120 requests/minute per IP)

---

[API](https://skmtc.dev/onelesstool/apis/onelesstool-api.md) · [All operations](https://skmtc.dev/onelesstool/apis/onelesstool-api/llms.txt) · [OpenAPI document](https://skmtc.dev/onelesstool/apis/onelesstool-api/revisions/78e4df4459dd?raw)
