---
title: "List spend grouped by tool or department."
method: GET
path: "/spend"
---

# List spend grouped by tool or department.

`GET /spend`

## Query parameters

- `group_by` 'tool' | 'department'
- `tool` string
- `department` string
- `metric` 'cost' | 'cost_per_person' | 'users'
- `period` 'last_7d' | 'last_30d' | 'last_90d'
- `sort` '-cost' | 'cost' | '-cost_per_person' | 'cost_per_person' | '-users' | 'users' | 'name' | '-name'
- `limit` integer
- `cursor` string

## Headers

- `Oximy-Version` '2026-06-29'

## Response `200`

Spend list.

- object
  - `object` 'list', required
  - `request_id` string, required
  - `as_of` string, date-time, required
  - `data` Spend[], required
    - union
      - SpendByTool
        - `id` string, required
        - `object` 'spend', required
        - `group` 'tool', required
        - `tool` object, required
          - `id` string, required
          - `name` string, required
          - `category` string, nullable
          - `icon_url` string, nullable
        - `cost` number, required
        - `currency` 'usd', required
        - `users` number, required
        - `priced_accounts` number
        - `pricing_status` string
        - `issues` string[]
        - `cost_breakdown` object, nullable
        - `sources` string[], required
      - SpendByDepartment
        - `id` string, required
        - `object` 'spend', required
        - `group` 'department', required
        - `department` object, required
          - `id` string, required
          - `name` string, required
        - `cost` number, required
        - `currency` 'usd', required
        - `users` number, required
        - `tools` number
        - `cost_per_person` number, required
        - `subscription_spend` number
        - `usage_spend` number
        - `issue_count` number
        - `trend` object
        - `sources` string[], required
  - `has_more` boolean, required
  - `next_cursor` string, nullable, required

## Other responses

- `304` — Not modified. Conditional GET responses do not consume rate-limit quota.
- `400` — Invalid parameters.
- `401` — Missing or invalid API key.
- `403` — The API key does not have the required scope.
- `404` — The requested resource was not found in the calling key's workspace scope.
- `409` — Conflict or idempotency replay conflict.
- `429` — Rate limit exceeded.
- `500` — Unexpected server error.

---

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