---
title: Account Management | Runware Docs
url: https://runware.ai/docs/platform/account-management
description: Retrieve account details, team members, API keys, and usage stats (spend, performance, errors) for your organization with the account management API.
relatedDocuments:
  - https://runware.ai/docs/platform/authentication
  - https://runware.ai/docs/platform/rate-limits
---
## Introduction

The `accountManagement` task **reads your organization's account data over the API**: the `team` and their roles, your API keys, the current `balance`, and usage statistics. Reach for it whenever a script needs account state that would otherwise mean opening the web console, like billing automation or a usage alert.

Everything runs through the `operation` parameter: it selects the dataset and **shapes both the request and the response**. Each operation is documented in its own section below.

| Operation | Returns |
| --- | --- |
| `getDetails` | Organization info, team, API keys, and rolling usage totals. |
| `getUsageActivity` | Requests and spend over a date range, broken down by day, model, and/or API key. |
| `getUsagePerformance` | Per-model inference-time percentiles over a date range. |
| `getUsageErrors` | Client (`4xx`) and server (`5xx`) error counts over a date range. |

The three usage operations share the same request parameters (a date window plus optional filters) and the same `usage` response envelope, **differing only in the metrics each row reports**.

## getDetails

Everything about the account in one call, with **no date range or filters**. The response carries the organization identity, the current `balance`, the full `team` roster with roles, and every API key with its lifetime request count.

The `usage` object here holds **rolling totals** rather than a time breakdown: credits and requests for `today`, `last7Days`, `last30Days`, and lifetime `total`. Use `getDetails` for a point-in-time picture of the account, and the operations below when you need consumption sliced across a date range.

### Request

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const result = await client.accountManagement({
  operation: 'getDetails'
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        result = await client.account_management({
            "operation": "getDetails"
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "accountManagement",
      "taskUUID": "f4dd3dfe-955f-49d5-a785-7e3b633d6e7a",
      "operation": "getDetails"
    }
  ]'
```

**CLI**:

```bash
runware account details
```

**JSON**:

```json
{
  "taskType": "accountManagement",
  "taskUUID": "f4dd3dfe-955f-49d5-a785-7e3b633d6e7a",
  "operation": "getDetails"
}
```

---

### [taskType](#request-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task being performed

### [taskUUID](#request-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.

### [operation](#request-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getDetails`

The specific account management operation to perform.

### Response

```json
{
  "data": [
    {
      "taskType": "accountManagement",
      "taskUUID": "f4dd3dfe-955f-49d5-a785-7e3b633d6e7a",
      "operation": "getDetails",
      "organizationUUID": "a6379343-9ff2-46a0-996b-e4a7b3057c88",
      "organizationName": "Acme Corporation",
      "balance": { "amount": 2450.75, "freeBalance": 120.00, "currency": "USD" },
      "team": [
        { "name": "John Smith", "email": "john.smith@acme.com", "roles": ["Owner"], "joinedAt": "2024-01-15T10:30:00Z" }
      ],
      "apiKeys": [
        { "name": "Production API Key", "apiKey": "YHluz4gk5KU4ZZWr****************", "enabled": true, "createdAt": "2024-01-20T11:00:00Z", "requests": 15420, "lastUsedAt": "2025-10-12T08:45:30Z" }
      ],
      "usage": {
        "today": { "credits": 35.80, "requests": 1850 },
        "last7Days": { "credits": 412.25, "requests": 21400 },
        "last30Days": { "credits": 1685.90, "requests": 87560 },
        "total": { "credits": 48920.50, "requests": 2540318 }
      }
    }
  ]
}
```

---

### [taskType](#response-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task this response belongs to.

### [taskUUID](#response-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier echoed from the original request, used to match async responses to their tasks.

### [operation](#response-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getDetails`

The account management operation that produced this response.

### [organizationName](#response-organizationname)

- **Type**: `string`

The name of the organization.

### [organizationUUID](#response-organizationuuid)

- **Type**: `string`
- **Format**: `UUID v4`

Unique identifier for the organization.

### [balance](#response-balance)

- **Path**: `balance.amount`
- **Type**: `object (3 properties)`

Current account balance and currency.

#### [amount](#response-balance-amount)

- **Path**: `balance.amount`
- **Type**: `float`
- **Required**: true

Current balance amount.

#### [freeBalance](#response-balance-freebalance)

- **Path**: `balance.freeBalance`
- **Type**: `float`

Available free credit balance.

#### [currency](#response-balance-currency)

- **Path**: `balance.currency`
- **Type**: `string`
- **Required**: true

Currency code.

### [team](#response-team)

- **Path**: `team.name`
- **Type**: `array of objects (4 properties)`

List of team members.

#### [name](#response-team-name)

- **Path**: `team.name`
- **Type**: `string`
- **Required**: true

Full name of the team member.

#### [email](#response-team-email)

- **Path**: `team.email`
- **Type**: `string`
- **Required**: true
- **Format**: `email`

Email address of the team member.

#### [roles](#response-team-roles)

- **Path**: `team.roles`
- **Type**: `array of strings`
- **Required**: true

Each team member is assigned a role that determines their level of access within the organization.

| Capability | Owner | Admin | Developer |
| --- | --- | --- | --- |
| API generation and Playground | ✓ | ✓ | ✓ |
| Manage Playground workflows | ✓ | ✓ | ✓ |
| Create and manage API keys | ✓ | ✓ |  |
| View API logs and usage analytics | ✓ | ✓ |  |
| Manage billing and payment methods | ✓ | ✓ |  |
| Invite and remove team members | ✓ | ✓ |  |
| Assign Admin and Developer roles | ✓ | ✓ |  |
| Assign Owner role | ✓ |  |  |
| Delete organization | ✓ |  |  |

#### [joinedAt](#response-team-joinedat)

- **Path**: `team.joinedAt`
- **Type**: `string`
- **Format**: `date-time`

Date and time when the member joined.

### [apiKeys](#response-apikeys)

- **Path**: `apiKeys.apiKey`
- **Type**: `array of objects (7 properties)`

List of API keys associated with the account.

#### [apiKey](#response-apikeys-apikey)

- **Path**: `apiKeys.apiKey`
- **Type**: `string`
- **Required**: true

The API key string (partially masked).

#### [name](#response-apikeys-name)

- **Path**: `apiKeys.name`
- **Type**: `string`
- **Required**: true

Name or label for the API key.

#### [description](#response-apikeys-description)

- **Path**: `apiKeys.description`
- **Type**: `string`

Description of the API key.

#### [enabled](#response-apikeys-enabled)

- **Path**: `apiKeys.enabled`
- **Type**: `boolean`
- **Required**: true

Whether the API key is active.

#### [createdAt](#response-apikeys-createdat)

- **Path**: `apiKeys.createdAt`
- **Type**: `string`
- **Required**: true
- **Format**: `date-time`

Date and time when the key was created.

#### [lastUsedAt](#response-apikeys-lastusedat)

- **Path**: `apiKeys.lastUsedAt`
- **Type**: `string`
- **Format**: `date-time`

Date and time when the key was last used.

#### [requests](#response-apikeys-requests)

- **Path**: `apiKeys.requests`
- **Type**: `integer`

Total number of requests made with this key.

### [usage](#response-usage)

- **Path**: `usage.today`
- **Type**: `object (12 properties)`

Account usage statistics.

#### [today](#response-usage-today)

- **Path**: `usage.today`
- **Type**: `object (2 properties)`

Usage stats for today.

##### [credits](#response-usage-today-credits)

- **Path**: `usage.today.credits`
- **Type**: `float`
- **Required**: true

Total credits consumed.

##### [requests](#response-usage-today-requests)

- **Path**: `usage.today.requests`
- **Type**: `integer`
- **Required**: true

Total API requests made.

#### [last7Days](#response-usage-last7days)

- **Path**: `usage.last7Days`
- **Type**: `object (2 properties)`

Usage stats for the last 7 days.

##### [credits](#response-usage-last7days-credits)

- **Path**: `usage.last7Days.credits`
- **Type**: `float`
- **Required**: true

Total credits consumed.

##### [requests](#response-usage-last7days-requests)

- **Path**: `usage.last7Days.requests`
- **Type**: `integer`
- **Required**: true

Total API requests made.

#### [last30Days](#response-usage-last30days)

- **Path**: `usage.last30Days`
- **Type**: `object (2 properties)`

Usage stats for the last 30 days.

##### [credits](#response-usage-last30days-credits)

- **Path**: `usage.last30Days.credits`
- **Type**: `float`
- **Required**: true

Total credits consumed.

##### [requests](#response-usage-last30days-requests)

- **Path**: `usage.last30Days.requests`
- **Type**: `integer`
- **Required**: true

Total API requests made.

#### [total](#response-usage-total)

- **Path**: `usage.total`
- **Type**: `object (2 properties)`

Total lifetime usage stats.

##### [credits](#response-usage-total-credits)

- **Path**: `usage.total.credits`
- **Type**: `float`
- **Required**: true

Total credits consumed.

##### [requests](#response-usage-total-requests)

- **Path**: `usage.total.requests`
- **Type**: `integer`
- **Required**: true

Total API requests made.

## getUsageActivity

How much the account spent and how many requests it ran, over the window you set with `startDate` and `endDate`. This is the call behind a **usage dashboard** or a **monthly billing report**.

`groupBy` controls how the totals are sliced. Ask for `date` and you get a `timeseries` of per-day rows. Ask for `model` or `apiKey` and the same totals come back **split by that dimension**, and you can request several at once. Each slice lands under `usage` as its own breakdown: a `data` array with one row per bucket (`count` and `spend`), plus a `meta` roll-up that totals the window and projects a 30-day spend.

### Request

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const result = await client.accountManagement({
  operation: 'getUsageActivity',
  startDate: '2026-07-01',
  endDate: '2026-07-06',
  groupBy: [
    'date',
    'model'
  ],
  timezone: 'America/New_York'
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        result = await client.account_management({
            "operation": "getUsageActivity",
            "startDate": "2026-07-01",
            "endDate": "2026-07-06",
            "groupBy": [
                "date",
                "model"
            ],
            "timezone": "America/New_York"
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "accountManagement",
      "taskUUID": "b7e0a3f2-3c1a-4d9e-8f2b-1a2c3d4e5f60",
      "operation": "getUsageActivity",
      "startDate": "2026-07-01",
      "endDate": "2026-07-06",
      "groupBy": [
        "date",
        "model"
      ],
      "timezone": "America/New_York"
    }
  ]'
```

**CLI**:

```bash
runware account getUsageActivity
```

**JSON**:

```json
{
  "taskType": "accountManagement",
  "taskUUID": "b7e0a3f2-3c1a-4d9e-8f2b-1a2c3d4e5f60",
  "operation": "getUsageActivity",
  "startDate": "2026-07-01",
  "endDate": "2026-07-06",
  "groupBy": [
    "date",
    "model"
  ],
  "timezone": "America/New_York"
}
```

---

### [taskType](#request-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task being performed

### [taskUUID](#request-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.

### [operation](#request-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getUsageActivity`

The specific account management operation to perform.

### [startDate](#request-startdate)

- **Type**: `string`
- **Format**: `date`

Start of the usage window (inclusive).

### [endDate](#request-enddate)

- **Type**: `string`
- **Format**: `date`

End of the usage window (inclusive). Must be on or after startDate, and the span must not exceed 30 days.

### [models](#request-models)

- **Type**: `array of strings`
- **Max items**: `100`

Restrict usage to these model AIRs. Defaults to all models.

### [apiKeys](#request-apikeys)

- **Type**: `array of strings`
- **Max items**: `100`

Restrict usage to these API key UUIDs. Defaults to all keys.

### [groupBy](#request-groupby)

- **Type**: `array of strings`
- **Default**: `date,model`

Breakdowns to return.

### [timezone](#request-timezone)

- **Type**: `string`
- **Default**: `UTC`

IANA timezone name used for day-bucketing.

### Response

```json
{
  "data": [
    {
      "taskType": "accountManagement",
      "taskUUID": "b7e0a3f2-3c1a-4d9e-8f2b-1a2c3d4e5f60",
      "operation": "getUsageActivity",
      "startDate": "2026-07-01",
      "endDate": "2026-07-06",
      "usage": {
        "timeseries": {
          "data": [{ "date": "2026-07-01", "count": 340, "spend": 120.05154 }],
          "meta": { "totalRequests": 1197, "totalResults": 1197, "totalSpend": 493.7819, "avgDailySpend": 87.37, "projectedSpend": 2708.55 }
        },
        "model": {
          "data": [{ "date": "2026-07-01", "model": "google:gemini@omni-flash", "modelName": "Gemini Omni Flash", "count": 207, "spend": 101.457393 }],
          "meta": { "totalRequests": 1197, "totalResults": 1197, "totalSpend": 493.7819, "avgDailySpend": 87.37, "projectedSpend": 2708.55 }
        }
      }
    }
  ]
}
```

---

### [taskType](#response-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task this response belongs to.

### [taskUUID](#response-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier echoed from the original request, used to match async responses to their tasks.

### [operation](#response-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getUsageActivity`

The account management operation that produced this response.

### [startDate](#response-startdate)

- **Type**: `string`
- **Format**: `date`

Start of the returned window (inclusive).

### [endDate](#response-enddate)

- **Type**: `string`
- **Format**: `date`

End of the returned window (inclusive).

### [usage](#response-usage)

- **Path**: `usage.today`
- **Type**: `object (46 properties)`

Account usage statistics.

#### [today](#response-usage-today)

- **Path**: `usage.today`
- **Type**: `object`

Usage stats for today.

#### [last7Days](#response-usage-last7days)

- **Path**: `usage.last7Days`
- **Type**: `object`

Usage stats for the last 7 days.

#### [last30Days](#response-usage-last30days)

- **Path**: `usage.last30Days`
- **Type**: `object`

Usage stats for the last 30 days.

#### [total](#response-usage-total)

- **Path**: `usage.total`
- **Type**: `object`

Total lifetime usage stats.

#### [timeseries](#response-usage-timeseries)

- **Path**: `usage.timeseries`
- **Type**: `object (13 properties)`

Per-day breakdown (from groupBy date).

##### [data](#response-usage-timeseries-data)

- **Path**: `usage.timeseries.data`
- **Type**: `array of objects (6 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-timeseries-data-date)

- **Path**: `usage.timeseries.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-timeseries-data-model)

- **Path**: `usage.timeseries.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-timeseries-data-modelname)

- **Path**: `usage.timeseries.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-timeseries-data-apikey)

- **Path**: `usage.timeseries.data.apiKey`
- **Type**: `string`

API key UUID.

##### [count](#response-usage-timeseries-data-count)

- **Path**: `usage.timeseries.data.count`
- **Type**: `integer`

Number of requests in this bucket.

##### [spend](#response-usage-timeseries-data-spend)

- **Path**: `usage.timeseries.data.spend`
- **Type**: `float`

Amount spent in this bucket.

##### [meta](#response-usage-timeseries-meta)

- **Path**: `usage.timeseries.meta`
- **Type**: `object (5 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalRequests](#response-usage-timeseries-meta-totalrequests)

- **Path**: `usage.timeseries.meta.totalRequests`
- **Type**: `integer`

Total requests across the window.

##### [totalResults](#response-usage-timeseries-meta-totalresults)

- **Path**: `usage.timeseries.meta.totalResults`
- **Type**: `integer`

Total results produced across the window.

##### [totalSpend](#response-usage-timeseries-meta-totalspend)

- **Path**: `usage.timeseries.meta.totalSpend`
- **Type**: `float`

Total spend across the window.

##### [avgDailySpend](#response-usage-timeseries-meta-avgdailyspend)

- **Path**: `usage.timeseries.meta.avgDailySpend`
- **Type**: `float`

Average spend per day. An estimate that drifts between calls.

##### [projectedSpend](#response-usage-timeseries-meta-projectedspend)

- **Path**: `usage.timeseries.meta.projectedSpend`
- **Type**: `float`

Projected 30-day spend extrapolated from the window. An estimate that drifts between calls.

#### [model](#response-usage-model)

- **Path**: `usage.model`
- **Type**: `object (13 properties)`

Per-model breakdown (from groupBy model).

##### [data](#response-usage-model-data)

- **Path**: `usage.model.data`
- **Type**: `array of objects (6 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-model-data-date)

- **Path**: `usage.model.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-model-data-model)

- **Path**: `usage.model.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-model-data-modelname)

- **Path**: `usage.model.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-model-data-apikey)

- **Path**: `usage.model.data.apiKey`
- **Type**: `string`

API key UUID.

##### [count](#response-usage-model-data-count)

- **Path**: `usage.model.data.count`
- **Type**: `integer`

Number of requests in this bucket.

##### [spend](#response-usage-model-data-spend)

- **Path**: `usage.model.data.spend`
- **Type**: `float`

Amount spent in this bucket.

##### [meta](#response-usage-model-meta)

- **Path**: `usage.model.meta`
- **Type**: `object (5 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalRequests](#response-usage-model-meta-totalrequests)

- **Path**: `usage.model.meta.totalRequests`
- **Type**: `integer`

Total requests across the window.

##### [totalResults](#response-usage-model-meta-totalresults)

- **Path**: `usage.model.meta.totalResults`
- **Type**: `integer`

Total results produced across the window.

##### [totalSpend](#response-usage-model-meta-totalspend)

- **Path**: `usage.model.meta.totalSpend`
- **Type**: `float`

Total spend across the window.

##### [avgDailySpend](#response-usage-model-meta-avgdailyspend)

- **Path**: `usage.model.meta.avgDailySpend`
- **Type**: `float`

Average spend per day. An estimate that drifts between calls.

##### [projectedSpend](#response-usage-model-meta-projectedspend)

- **Path**: `usage.model.meta.projectedSpend`
- **Type**: `float`

Projected 30-day spend extrapolated from the window. An estimate that drifts between calls.

#### [apiKey](#response-usage-apikey)

- **Path**: `usage.apiKey`
- **Type**: `object (13 properties)`

Per-key breakdown (from groupBy apiKey).

##### [data](#response-usage-apikey-data)

- **Path**: `usage.apiKey.data`
- **Type**: `array of objects (6 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-apikey-data-date)

- **Path**: `usage.apiKey.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-apikey-data-model)

- **Path**: `usage.apiKey.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-apikey-data-modelname)

- **Path**: `usage.apiKey.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-apikey-data-apikey)

- **Path**: `usage.apiKey.data.apiKey`
- **Type**: `string`

API key UUID.

##### [count](#response-usage-apikey-data-count)

- **Path**: `usage.apiKey.data.count`
- **Type**: `integer`

Number of requests in this bucket.

##### [spend](#response-usage-apikey-data-spend)

- **Path**: `usage.apiKey.data.spend`
- **Type**: `float`

Amount spent in this bucket.

##### [meta](#response-usage-apikey-meta)

- **Path**: `usage.apiKey.meta`
- **Type**: `object (5 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalRequests](#response-usage-apikey-meta-totalrequests)

- **Path**: `usage.apiKey.meta.totalRequests`
- **Type**: `integer`

Total requests across the window.

##### [totalResults](#response-usage-apikey-meta-totalresults)

- **Path**: `usage.apiKey.meta.totalResults`
- **Type**: `integer`

Total results produced across the window.

##### [totalSpend](#response-usage-apikey-meta-totalspend)

- **Path**: `usage.apiKey.meta.totalSpend`
- **Type**: `float`

Total spend across the window.

##### [avgDailySpend](#response-usage-apikey-meta-avgdailyspend)

- **Path**: `usage.apiKey.meta.avgDailySpend`
- **Type**: `float`

Average spend per day. An estimate that drifts between calls.

##### [projectedSpend](#response-usage-apikey-meta-projectedspend)

- **Path**: `usage.apiKey.meta.projectedSpend`
- **Type**: `float`

Projected 30-day spend extrapolated from the window. An estimate that drifts between calls.

## getUsagePerformance

How fast the account's models run. For a date window, each `model` row reports the **average, p90, and p99 inference time** in seconds, so you can track tail latency per model.

Percentiles are only meaningful within a single model, so the data lives in the `model` breakdown and the `timeseries` breakdown **comes back empty**.

### Request

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const result = await client.accountManagement({
  operation: 'getUsagePerformance',
  startDate: '2026-07-01',
  endDate: '2026-07-06',
  groupBy: [
    'date',
    'model'
  ]
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        result = await client.account_management({
            "operation": "getUsagePerformance",
            "startDate": "2026-07-01",
            "endDate": "2026-07-06",
            "groupBy": [
                "date",
                "model"
            ]
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "accountManagement",
      "taskUUID": "ed936635-488f-48c2-8c4d-dbf117c8a7b1",
      "operation": "getUsagePerformance",
      "startDate": "2026-07-01",
      "endDate": "2026-07-06",
      "groupBy": [
        "date",
        "model"
      ]
    }
  ]'
```

**CLI**:

```bash
runware account getUsagePerformance
```

**JSON**:

```json
{
  "taskType": "accountManagement",
  "taskUUID": "ed936635-488f-48c2-8c4d-dbf117c8a7b1",
  "operation": "getUsagePerformance",
  "startDate": "2026-07-01",
  "endDate": "2026-07-06",
  "groupBy": [
    "date",
    "model"
  ]
}
```

---

### [taskType](#request-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task being performed

### [taskUUID](#request-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.

### [operation](#request-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getUsagePerformance`

The specific account management operation to perform.

### [startDate](#request-startdate)

- **Type**: `string`
- **Format**: `date`

Start of the usage window (inclusive).

### [endDate](#request-enddate)

- **Type**: `string`
- **Format**: `date`

End of the usage window (inclusive). Must be on or after startDate, and the span must not exceed 30 days.

### [models](#request-models)

- **Type**: `array of strings`
- **Max items**: `100`

Restrict usage to these model AIRs. Defaults to all models.

### [apiKeys](#request-apikeys)

- **Type**: `array of strings`
- **Max items**: `100`

Restrict usage to these API key UUIDs. Defaults to all keys.

### [groupBy](#request-groupby)

- **Type**: `array of strings`
- **Default**: `date,model`

Breakdowns to return.

### [timezone](#request-timezone)

- **Type**: `string`
- **Default**: `UTC`

IANA timezone name used for day-bucketing.

### Response

```json
{
  "data": [
    {
      "taskType": "accountManagement",
      "taskUUID": "ed936635-488f-48c2-8c4d-dbf117c8a7b1",
      "operation": "getUsagePerformance",
      "startDate": "2026-07-01",
      "endDate": "2026-07-06",
      "usage": {
        "model": {
          "data": [{ "date": "2026-07-03", "model": "bytedance:video-upscaler@standard", "modelName": "Bytedance Video Upscaler", "avgInferenceTime": 134.8486, "p90InferenceTime": 226.245, "p99InferenceTime": 291.6665 }],
          "meta": { "totalRequests": 164, "totalResults": 164, "totalSpend": 1.6226, "avgDailySpend": 0.2704, "projectedSpend": 8.38, "avgInferenceTime": 134.8486, "p50InferenceTime": 144.49, "p90InferenceTime": 226.245, "p99InferenceTime": 291.6665 }
        }
      }
    }
  ]
}
```

---

### [taskType](#response-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task this response belongs to.

### [taskUUID](#response-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier echoed from the original request, used to match async responses to their tasks.

### [operation](#response-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getUsagePerformance`

The account management operation that produced this response.

### [startDate](#response-startdate)

- **Type**: `string`
- **Format**: `date`

Start of the returned window (inclusive).

### [endDate](#response-enddate)

- **Type**: `string`
- **Format**: `date`

End of the returned window (inclusive).

### [usage](#response-usage)

- **Path**: `usage.today`
- **Type**: `object (61 properties)`

Account usage statistics.

#### [today](#response-usage-today)

- **Path**: `usage.today`
- **Type**: `object`

Usage stats for today.

#### [last7Days](#response-usage-last7days)

- **Path**: `usage.last7Days`
- **Type**: `object`

Usage stats for the last 7 days.

#### [last30Days](#response-usage-last30days)

- **Path**: `usage.last30Days`
- **Type**: `object`

Usage stats for the last 30 days.

#### [total](#response-usage-total)

- **Path**: `usage.total`
- **Type**: `object`

Total lifetime usage stats.

#### [timeseries](#response-usage-timeseries)

- **Path**: `usage.timeseries`
- **Type**: `object (18 properties)`

Per-day breakdown (from groupBy date).

##### [data](#response-usage-timeseries-data)

- **Path**: `usage.timeseries.data`
- **Type**: `array of objects (7 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-timeseries-data-date)

- **Path**: `usage.timeseries.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-timeseries-data-model)

- **Path**: `usage.timeseries.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-timeseries-data-modelname)

- **Path**: `usage.timeseries.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-timeseries-data-apikey)

- **Path**: `usage.timeseries.data.apiKey`
- **Type**: `string`

API key UUID.

##### [avgInferenceTime](#response-usage-timeseries-data-avginferencetime)

- **Path**: `usage.timeseries.data.avgInferenceTime`
- **Type**: `float | null`

Average inference time in seconds, or null when there were no inferences.

##### [p90InferenceTime](#response-usage-timeseries-data-p90inferencetime)

- **Path**: `usage.timeseries.data.p90InferenceTime`
- **Type**: `float | null`

90th-percentile inference time in seconds, or null when there were no inferences.

##### [p99InferenceTime](#response-usage-timeseries-data-p99inferencetime)

- **Path**: `usage.timeseries.data.p99InferenceTime`
- **Type**: `float | null`

99th-percentile inference time in seconds, or null when there were no inferences.

##### [meta](#response-usage-timeseries-meta)

- **Path**: `usage.timeseries.meta`
- **Type**: `object (9 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalRequests](#response-usage-timeseries-meta-totalrequests)

- **Path**: `usage.timeseries.meta.totalRequests`
- **Type**: `integer`

Total requests across the window.

##### [totalResults](#response-usage-timeseries-meta-totalresults)

- **Path**: `usage.timeseries.meta.totalResults`
- **Type**: `integer`

Total results produced across the window.

##### [totalSpend](#response-usage-timeseries-meta-totalspend)

- **Path**: `usage.timeseries.meta.totalSpend`
- **Type**: `float`

Total spend across the window.

##### [avgDailySpend](#response-usage-timeseries-meta-avgdailyspend)

- **Path**: `usage.timeseries.meta.avgDailySpend`
- **Type**: `float`

Average spend per day. An estimate that drifts between calls.

##### [projectedSpend](#response-usage-timeseries-meta-projectedspend)

- **Path**: `usage.timeseries.meta.projectedSpend`
- **Type**: `float`

Projected 30-day spend extrapolated from the window. An estimate that drifts between calls.

##### [avgInferenceTime](#response-usage-timeseries-meta-avginferencetime)

- **Path**: `usage.timeseries.meta.avgInferenceTime`
- **Type**: `float`

Average inference time in seconds.

##### [p50InferenceTime](#response-usage-timeseries-meta-p50inferencetime)

- **Path**: `usage.timeseries.meta.p50InferenceTime`
- **Type**: `float`

Median inference time in seconds.

##### [p90InferenceTime](#response-usage-timeseries-meta-p90inferencetime)

- **Path**: `usage.timeseries.meta.p90InferenceTime`
- **Type**: `float`

90th-percentile inference time in seconds.

##### [p99InferenceTime](#response-usage-timeseries-meta-p99inferencetime)

- **Path**: `usage.timeseries.meta.p99InferenceTime`
- **Type**: `float`

99th-percentile inference time in seconds.

#### [model](#response-usage-model)

- **Path**: `usage.model`
- **Type**: `object (18 properties)`

Per-model breakdown (from groupBy model).

##### [data](#response-usage-model-data)

- **Path**: `usage.model.data`
- **Type**: `array of objects (7 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-model-data-date)

- **Path**: `usage.model.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-model-data-model)

- **Path**: `usage.model.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-model-data-modelname)

- **Path**: `usage.model.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-model-data-apikey)

- **Path**: `usage.model.data.apiKey`
- **Type**: `string`

API key UUID.

##### [avgInferenceTime](#response-usage-model-data-avginferencetime)

- **Path**: `usage.model.data.avgInferenceTime`
- **Type**: `float | null`

Average inference time in seconds, or null when there were no inferences.

##### [p90InferenceTime](#response-usage-model-data-p90inferencetime)

- **Path**: `usage.model.data.p90InferenceTime`
- **Type**: `float | null`

90th-percentile inference time in seconds, or null when there were no inferences.

##### [p99InferenceTime](#response-usage-model-data-p99inferencetime)

- **Path**: `usage.model.data.p99InferenceTime`
- **Type**: `float | null`

99th-percentile inference time in seconds, or null when there were no inferences.

##### [meta](#response-usage-model-meta)

- **Path**: `usage.model.meta`
- **Type**: `object (9 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalRequests](#response-usage-model-meta-totalrequests)

- **Path**: `usage.model.meta.totalRequests`
- **Type**: `integer`

Total requests across the window.

##### [totalResults](#response-usage-model-meta-totalresults)

- **Path**: `usage.model.meta.totalResults`
- **Type**: `integer`

Total results produced across the window.

##### [totalSpend](#response-usage-model-meta-totalspend)

- **Path**: `usage.model.meta.totalSpend`
- **Type**: `float`

Total spend across the window.

##### [avgDailySpend](#response-usage-model-meta-avgdailyspend)

- **Path**: `usage.model.meta.avgDailySpend`
- **Type**: `float`

Average spend per day. An estimate that drifts between calls.

##### [projectedSpend](#response-usage-model-meta-projectedspend)

- **Path**: `usage.model.meta.projectedSpend`
- **Type**: `float`

Projected 30-day spend extrapolated from the window. An estimate that drifts between calls.

##### [avgInferenceTime](#response-usage-model-meta-avginferencetime)

- **Path**: `usage.model.meta.avgInferenceTime`
- **Type**: `float`

Average inference time in seconds.

##### [p50InferenceTime](#response-usage-model-meta-p50inferencetime)

- **Path**: `usage.model.meta.p50InferenceTime`
- **Type**: `float`

Median inference time in seconds.

##### [p90InferenceTime](#response-usage-model-meta-p90inferencetime)

- **Path**: `usage.model.meta.p90InferenceTime`
- **Type**: `float`

90th-percentile inference time in seconds.

##### [p99InferenceTime](#response-usage-model-meta-p99inferencetime)

- **Path**: `usage.model.meta.p99InferenceTime`
- **Type**: `float`

99th-percentile inference time in seconds.

#### [apiKey](#response-usage-apikey)

- **Path**: `usage.apiKey`
- **Type**: `object (18 properties)`

Per-key breakdown (from groupBy apiKey).

##### [data](#response-usage-apikey-data)

- **Path**: `usage.apiKey.data`
- **Type**: `array of objects (7 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-apikey-data-date)

- **Path**: `usage.apiKey.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-apikey-data-model)

- **Path**: `usage.apiKey.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-apikey-data-modelname)

- **Path**: `usage.apiKey.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-apikey-data-apikey)

- **Path**: `usage.apiKey.data.apiKey`
- **Type**: `string`

API key UUID.

##### [avgInferenceTime](#response-usage-apikey-data-avginferencetime)

- **Path**: `usage.apiKey.data.avgInferenceTime`
- **Type**: `float | null`

Average inference time in seconds, or null when there were no inferences.

##### [p90InferenceTime](#response-usage-apikey-data-p90inferencetime)

- **Path**: `usage.apiKey.data.p90InferenceTime`
- **Type**: `float | null`

90th-percentile inference time in seconds, or null when there were no inferences.

##### [p99InferenceTime](#response-usage-apikey-data-p99inferencetime)

- **Path**: `usage.apiKey.data.p99InferenceTime`
- **Type**: `float | null`

99th-percentile inference time in seconds, or null when there were no inferences.

##### [meta](#response-usage-apikey-meta)

- **Path**: `usage.apiKey.meta`
- **Type**: `object (9 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalRequests](#response-usage-apikey-meta-totalrequests)

- **Path**: `usage.apiKey.meta.totalRequests`
- **Type**: `integer`

Total requests across the window.

##### [totalResults](#response-usage-apikey-meta-totalresults)

- **Path**: `usage.apiKey.meta.totalResults`
- **Type**: `integer`

Total results produced across the window.

##### [totalSpend](#response-usage-apikey-meta-totalspend)

- **Path**: `usage.apiKey.meta.totalSpend`
- **Type**: `float`

Total spend across the window.

##### [avgDailySpend](#response-usage-apikey-meta-avgdailyspend)

- **Path**: `usage.apiKey.meta.avgDailySpend`
- **Type**: `float`

Average spend per day. An estimate that drifts between calls.

##### [projectedSpend](#response-usage-apikey-meta-projectedspend)

- **Path**: `usage.apiKey.meta.projectedSpend`
- **Type**: `float`

Projected 30-day spend extrapolated from the window. An estimate that drifts between calls.

##### [avgInferenceTime](#response-usage-apikey-meta-avginferencetime)

- **Path**: `usage.apiKey.meta.avgInferenceTime`
- **Type**: `float`

Average inference time in seconds.

##### [p50InferenceTime](#response-usage-apikey-meta-p50inferencetime)

- **Path**: `usage.apiKey.meta.p50InferenceTime`
- **Type**: `float`

Median inference time in seconds.

##### [p90InferenceTime](#response-usage-apikey-meta-p90inferencetime)

- **Path**: `usage.apiKey.meta.p90InferenceTime`
- **Type**: `float`

90th-percentile inference time in seconds.

##### [p99InferenceTime](#response-usage-apikey-meta-p99inferencetime)

- **Path**: `usage.apiKey.meta.p99InferenceTime`
- **Type**: `float`

99th-percentile inference time in seconds.

## getUsageErrors

Reliability, sliced the same way `getUsageActivity` slices spend. Each row splits failures into **client errors** (`4xx`) and **server errors** (`5xx`), and the `meta` roll-up carries the window's `totalErrors` and an `errorRate` as a percentage.

Group by `model` or `apiKey` to see **which one is failing**.

### Request

**TypeScript**:

```typescript
import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const result = await client.accountManagement({
  operation: 'getUsageErrors',
  startDate: '2026-07-01',
  endDate: '2026-07-06',
  groupBy: [
    'date',
    'model'
  ]
})
```

**Python**:

```python
import asyncio
import os

from runware import Runware

async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        result = await client.account_management({
            "operation": "getUsageErrors",
            "startDate": "2026-07-01",
            "endDate": "2026-07-06",
            "groupBy": [
                "date",
                "model"
            ]
        })

asyncio.run(main())
```

**cURL**:

```bash
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "accountManagement",
      "taskUUID": "cb460b4c-0d63-4fe2-9694-2115b2ce2161",
      "operation": "getUsageErrors",
      "startDate": "2026-07-01",
      "endDate": "2026-07-06",
      "groupBy": [
        "date",
        "model"
      ]
    }
  ]'
```

**CLI**:

```bash
runware account getUsageErrors
```

**JSON**:

```json
{
  "taskType": "accountManagement",
  "taskUUID": "cb460b4c-0d63-4fe2-9694-2115b2ce2161",
  "operation": "getUsageErrors",
  "startDate": "2026-07-01",
  "endDate": "2026-07-06",
  "groupBy": [
    "date",
    "model"
  ]
}
```

---

### [taskType](#request-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task being performed

### [taskUUID](#request-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier for tracking tasks and matching async responses. Must be unique per task.

### [operation](#request-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getUsageErrors`

The specific account management operation to perform.

### [startDate](#request-startdate)

- **Type**: `string`
- **Format**: `date`

Start of the usage window (inclusive).

### [endDate](#request-enddate)

- **Type**: `string`
- **Format**: `date`

End of the usage window (inclusive). Must be on or after startDate, and the span must not exceed 30 days.

### [models](#request-models)

- **Type**: `array of strings`
- **Max items**: `100`

Restrict usage to these model AIRs. Defaults to all models.

### [apiKeys](#request-apikeys)

- **Type**: `array of strings`
- **Max items**: `100`

Restrict usage to these API key UUIDs. Defaults to all keys.

### [groupBy](#request-groupby)

- **Type**: `array of strings`
- **Default**: `date,model`

Breakdowns to return.

### [timezone](#request-timezone)

- **Type**: `string`
- **Default**: `UTC`

IANA timezone name used for day-bucketing.

### Response

```json
{
  "data": [
    {
      "taskType": "accountManagement",
      "taskUUID": "cb460b4c-0d63-4fe2-9694-2115b2ce2161",
      "operation": "getUsageErrors",
      "startDate": "2026-07-01",
      "endDate": "2026-07-06",
      "usage": {
        "timeseries": {
          "data": [{ "date": "2026-07-03", "clientErrors": 126, "serverErrors": 0 }],
          "meta": { "totalErrors": 128, "errorRate": 78.05 }
        },
        "model": {
          "data": [{ "date": "2026-07-03", "model": "bytedance:video-upscaler@standard", "modelName": "Bytedance Video Upscaler", "clientErrors": 126, "serverErrors": 0 }],
          "meta": { "totalErrors": 128, "errorRate": 78.05 }
        }
      }
    }
  ]
}
```

---

### [taskType](#response-tasktype)

- **Type**: `string`
- **Required**: true
- **Value**: `accountManagement`

Identifier for the type of task this response belongs to.

### [taskUUID](#response-taskuuid)

- **Type**: `string`
- **Required**: true
- **Format**: `UUID v4`

UUID v4 identifier echoed from the original request, used to match async responses to their tasks.

### [operation](#response-operation)

- **Type**: `string`
- **Required**: true
- **Value**: `getUsageErrors`

The account management operation that produced this response.

### [startDate](#response-startdate)

- **Type**: `string`
- **Format**: `date`

Start of the returned window (inclusive).

### [endDate](#response-enddate)

- **Type**: `string`
- **Format**: `date`

End of the returned window (inclusive).

### [usage](#response-usage)

- **Path**: `usage.today`
- **Type**: `object (37 properties)`

Account usage statistics.

#### [today](#response-usage-today)

- **Path**: `usage.today`
- **Type**: `object`

Usage stats for today.

#### [last7Days](#response-usage-last7days)

- **Path**: `usage.last7Days`
- **Type**: `object`

Usage stats for the last 7 days.

#### [last30Days](#response-usage-last30days)

- **Path**: `usage.last30Days`
- **Type**: `object`

Usage stats for the last 30 days.

#### [total](#response-usage-total)

- **Path**: `usage.total`
- **Type**: `object`

Total lifetime usage stats.

#### [timeseries](#response-usage-timeseries)

- **Path**: `usage.timeseries`
- **Type**: `object (10 properties)`

Per-day breakdown (from groupBy date).

##### [data](#response-usage-timeseries-data)

- **Path**: `usage.timeseries.data`
- **Type**: `array of objects (6 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-timeseries-data-date)

- **Path**: `usage.timeseries.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-timeseries-data-model)

- **Path**: `usage.timeseries.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-timeseries-data-modelname)

- **Path**: `usage.timeseries.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-timeseries-data-apikey)

- **Path**: `usage.timeseries.data.apiKey`
- **Type**: `string`

API key UUID.

##### [clientErrors](#response-usage-timeseries-data-clienterrors)

- **Path**: `usage.timeseries.data.clientErrors`
- **Type**: `integer`

Number of 4xx (client) errors in this bucket.

##### [serverErrors](#response-usage-timeseries-data-servererrors)

- **Path**: `usage.timeseries.data.serverErrors`
- **Type**: `integer`

Number of 5xx (server) errors in this bucket.

##### [meta](#response-usage-timeseries-meta)

- **Path**: `usage.timeseries.meta`
- **Type**: `object (2 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalErrors](#response-usage-timeseries-meta-totalerrors)

- **Path**: `usage.timeseries.meta.totalErrors`
- **Type**: `integer`

Total errors across the window.

##### [errorRate](#response-usage-timeseries-meta-errorrate)

- **Path**: `usage.timeseries.meta.errorRate`
- **Type**: `float`

Error rate across the window, as a percentage.

#### [model](#response-usage-model)

- **Path**: `usage.model`
- **Type**: `object (10 properties)`

Per-model breakdown (from groupBy model).

##### [data](#response-usage-model-data)

- **Path**: `usage.model.data`
- **Type**: `array of objects (6 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-model-data-date)

- **Path**: `usage.model.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-model-data-model)

- **Path**: `usage.model.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-model-data-modelname)

- **Path**: `usage.model.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-model-data-apikey)

- **Path**: `usage.model.data.apiKey`
- **Type**: `string`

API key UUID.

##### [clientErrors](#response-usage-model-data-clienterrors)

- **Path**: `usage.model.data.clientErrors`
- **Type**: `integer`

Number of 4xx (client) errors in this bucket.

##### [serverErrors](#response-usage-model-data-servererrors)

- **Path**: `usage.model.data.serverErrors`
- **Type**: `integer`

Number of 5xx (server) errors in this bucket.

##### [meta](#response-usage-model-meta)

- **Path**: `usage.model.meta`
- **Type**: `object (2 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalErrors](#response-usage-model-meta-totalerrors)

- **Path**: `usage.model.meta.totalErrors`
- **Type**: `integer`

Total errors across the window.

##### [errorRate](#response-usage-model-meta-errorrate)

- **Path**: `usage.model.meta.errorRate`
- **Type**: `float`

Error rate across the window, as a percentage.

#### [apiKey](#response-usage-apikey)

- **Path**: `usage.apiKey`
- **Type**: `object (10 properties)`

Per-key breakdown (from groupBy apiKey).

##### [data](#response-usage-apikey-data)

- **Path**: `usage.apiKey.data`
- **Type**: `array of objects (6 properties)`
- **Required**: true

Rows for this breakdown.

##### [date](#response-usage-apikey-data-date)

- **Path**: `usage.apiKey.data.date`
- **Type**: `string`
- **Format**: `date`

Day bucket.

##### [model](#response-usage-apikey-data-model)

- **Path**: `usage.apiKey.data.model`
- **Type**: `string`

Model AIR.

##### [modelName](#response-usage-apikey-data-modelname)

- **Path**: `usage.apiKey.data.modelName`
- **Type**: `string`

Human-friendly model name. Falls back to the AIR when none exists.

##### [apiKey](#response-usage-apikey-data-apikey)

- **Path**: `usage.apiKey.data.apiKey`
- **Type**: `string`

API key UUID.

##### [clientErrors](#response-usage-apikey-data-clienterrors)

- **Path**: `usage.apiKey.data.clientErrors`
- **Type**: `integer`

Number of 4xx (client) errors in this bucket.

##### [serverErrors](#response-usage-apikey-data-servererrors)

- **Path**: `usage.apiKey.data.serverErrors`
- **Type**: `integer`

Number of 5xx (server) errors in this bucket.

##### [meta](#response-usage-apikey-meta)

- **Path**: `usage.apiKey.meta`
- **Type**: `object (2 properties)`
- **Required**: true

Roll-up totals for a breakdown. Which fields are present depends on the operation.

##### [totalErrors](#response-usage-apikey-meta-totalerrors)

- **Path**: `usage.apiKey.meta.totalErrors`
- **Type**: `integer`

Total errors across the window.

##### [errorRate](#response-usage-apikey-meta-errorrate)

- **Path**: `usage.apiKey.meta.errorRate`
- **Type**: `float`

Error rate across the window, as a percentage.