---
title: "List the billable workflows behind the current billing period (teams and organizations)"
method: GET
path: "/v5/workspaces/{workspaceId}/billable-workflows"
tags: ["Workspaces"]
---

# List the billable workflows behind the current billing period (teams and organizations)

`GET /v5/workspaces/{workspaceId}/billable-workflows`

## Request

- Base URL: `https://api.kadoa.com`
- URL: `https://api.kadoa.com/v5/workspaces/{workspaceId}/billable-workflows`
- Auth: one of:
  - API key in header `x-api-key`
  - HTTP bearer

The per-workflow detail behind the approved-workflows count. A workflow is billable if it has at least one successful (FINISHED), non-preview run whose finished_at falls inside the current billing period — of any current state, deleted included (deleted workflows still bill if they ran). Sourced from workflow jobs (immutable run facts), so the result is drift-free and reproducible.

## Path parameters

- `workspaceId` string, uuid, required

## Headers

- `x-api-key` string
- `Authorization` string

## Response `200`

Billable workflows retrieved successfully

- object
  - `billingPeriod` object, nullable: Null for a renewal-anchored workspace with no renewal_date (trial); the workflows list is then empty.
    - `start` string, date-time
    - `end` string, date-time
  - `count` integer: Number of billable workflows in the period
  - `scheduledWorkflows` integer: ACTIVE workflows with an enabled schedule or a real-time runtime
  - `activeCount` integer: Number of workflows in the Active billing model right now
  - `activeSlotUsage` number, float: Weighted slot usage for activeWorkflows
  - `slotUsage` number, float: Weighted slot usage for workflows in the current billing period
  - `activeWorkflows` object[]: Workflow detail behind activeCount, using the enabled scheduled-or-realtime rule
    - `workflowId` string, uuid
    - `name` string, nullable
    - `state` string
    - `scheduled` boolean: Enabled scheduled or real-time workflow
    - `firstRunAt` string, date-time, nullable: First successful non-preview run in the trailing 30-day detail window
    - `activeUntil` string, date-time, nullable: Retained for compatibility; always null because Active membership no longer expires from run history
    - `billingMultiplier` number, float: Slot usage assigned by Kadoa (0.1 Simple, 1 Standard, 2-10 Complex)
    - `runsInPeriod` integer: Successful non-preview runs in the trailing 30-day detail window
    - `totalRows` integer
  - `workflows` object[]
    - `workflowId` string, uuid
    - `name` string, nullable
    - `state` string: Current workflow state (includes DELETED)
    - `scheduled` boolean: ACTIVE and either on an active schedule or a live real-time monitor (recurring); else completed/one-off
    - `firstRunAt` string, date-time
    - `billingMultiplier` number, float: Slot usage assigned by Kadoa (0.1 Simple, 1 Standard, 2-10 Complex)
    - `runsInPeriod` integer
    - `totalRows` integer: Total rows extracted across the in-period runs

## Other responses

- `400`: Bad request
- `401`: Unauthorized
- `403`: Forbidden - insufficient permissions
- `404`: Workspace not found
- `500`: Internal server error

---

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