---
title: "Get Current Usage"
method: GET
path: "/v1/organizations/billing/usage/current"
tags: ["Organization Billing"]
---

# Get Current Usage

`GET /v1/organizations/billing/usage/current`

Get current month usage.

Returns credit consumption for the current billing period,
estimated cost, and next invoice date.

**Requirements:**
- Read permission

**Example:**
```python
response = await client.get("/v1/organizations/billing/usage/current")
print(f"Usage: {response['current_month_usage']} credits")
print(f"Estimated cost: ${response['estimated_cost_usd']}")
```

## Response `200`

Successful Response

- CurrentUsageResponse — Response with current month usage.
  - `current_month_usage` integer, required — Credits consumed in current billing cycle
  - `billing_month` string, required — Current billing month (YYYY-MM)
  - `billing_period_start` string, date-time, required — Start of current billing period
  - `billing_period_end` string, date-time, required — End of current billing period
  - `estimated_cost_usd` number, required — Estimated cost for current usage
  - `credit_rate` number — Cost per credit in USD
  - `auto_billing_enabled` boolean, required — Whether auto-billing is enabled
  - `next_invoice_date` string, date-time, required — When next invoice will be generated
  - `plan_usage` PlanUsage — Tier usage vs caps (2026-07 overhaul) — powers the billing page's usage bar and the 80% upgrade CTA. Managed plans report objects; MVS plans report vectors; the irrelevant pair is null. cap_state: ok | warning (>=80%) | exceeded (>=100%; further ingest is rejected with type=QuotaExceededError — reads keep working).
    - `product` string, required
    - `tier` string, required
    - `plan_name` string, required
    - `monthly_minimum_cents` integer, required
    - `period_start` string, date-time, nullable
    - `period_end` string, date-time, nullable
    - `objects_processed` integer, nullable
    - `object_cap` integer, nullable
    - `vectors_stored` integer, nullable
    - `vector_cap` integer, nullable
    - `usage_pct` number, nullable — Percent of the relevant cap consumed.
    - `cap_state` string
  - `usage_v2` object, nullable — Modality+features usage for the period (contract v2 §2): dollars by modality and feature, unit counts, estimated flag. SHADOW data until cutover — informational alongside the credit fields above. None if no v2 records exist yet or aggregation fails (best-effort).
  - `slack_invite` SlackInviteStatus — Slack Connect invite state exposed on usage/current (MS-1150 contract). Five states. 'never_attempted' (the automation never ran for this org) is DISTINCT from 'skipped' (the automation ran and declined this user, e.g. gmail on the free signup path) — collapsing them would tell a paying gmail customer 'we skipped you' when the path was actually dormant.
    - `status` 'never_attempted' | 'pending' | 'sent' | 'failed' | 'skipped' — never_attempted: no invite attempt recorded for this org. pending: attempt in flight. sent: Slack Connect shared-channel invite delivered (Slack emails the recipient). failed: the attempt errored (nothing delivered). skipped: the automation ran and declined this user.
    - `channel_name` string, nullable — The per-customer Slack Connect channel name, once known.
    - `invited_at` string, date-time, nullable — When the invite was sent (status 'sent' only).

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `422` — Validation Error
- `500` — Internal Server Error

---

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