---
title: "Create a versioned quota strategy"
description: "POST /admin/v1/workspaces/{workspaceId}/plan-strategies/quota — Create a versioned quota strategy"
---

> Documentation Index
> Fetch the complete documentation index at: https://nexus.microvoid.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Create a versioned quota strategy

## Endpoint

```http
POST /admin/v1/workspaces/{workspaceId}/plan-strategies/quota
```

Operation ID: `createQuotaStrategy`

## Authentication

Send a Nexus Management Key as `Authorization: Bearer <management-key>`. This credential is control-plane only.

## Idempotency

This operation does not declare an `Idempotency-Key` requirement in the accepted OpenAPI contract.

## Request

### Parameters

| Name          | Location | Required | Schema   | Description |
| ------------- | -------- | -------- | -------- | ----------- |
| `workspaceId` | path     | Yes      | `string` | —           |

### application/json body

Required: **Yes**

Type: `CreateQuotaStrategyDto`

| Field                      | Required | Type                     | Description |
| -------------------------- | -------- | ------------------------ | ----------- |
| `key`                      | Yes      | `string`                 | —           |
| `resetInterval`            | Yes      | `string (MONTH \| YEAR)` | —           |
| `quotaUnits`               | Yes      | `string`                 | —           |
| `inputMultiplierPpm`       | Yes      | `string`                 | —           |
| `outputMultiplierPpm`      | Yes      | `string`                 | —           |
| `cachedInputMultiplierPpm` | Yes      | `string`                 | —           |
| `maxOutputTokens`          | Yes      | `number`                 | —           |

## Responses

| Status | Description | Content type     | Schema             |
| ------ | ----------- | ---------------- | ------------------ |
| `201`  | —           | application/json | `QuotaStrategyDto` |

Only responses explicitly declared by the accepted Admin OpenAPI contract are shown. The current contract does not declare operation-specific error bodies; the SDK preserves any non-success status and body in [`AdminApiError`](/management-sdk/error-handling).

### `201` application/json schema

Type: `QuotaStrategyDto`

| Field                      | Required | Type                     | Description                                 |
| -------------------------- | -------- | ------------------------ | ------------------------------------------- |
| `id`                       | Yes      | `string`                 | —                                           |
| `workspaceId`              | Yes      | `string`                 | —                                           |
| `key`                      | Yes      | `string`                 | —                                           |
| `version`                  | Yes      | `number`                 | —                                           |
| `type`                     | Yes      | `string (QUOTA)`         | —                                           |
| `resetInterval`            | Yes      | `string (MONTH \| YEAR)` | —                                           |
| `quotaUnits`               | Yes      | `string`                 | 64-bit integer encoded as a decimal string. |
| `inputMultiplierPpm`       | Yes      | `string`                 | —                                           |
| `outputMultiplierPpm`      | Yes      | `string`                 | —                                           |
| `cachedInputMultiplierPpm` | Yes      | `string`                 | —                                           |
| `maxOutputTokens`          | Yes      | `number`                 | —                                           |
| `status`                   | Yes      | `string`                 | —                                           |

## Examples

### TypeScript Management SDK

`NexusAdminClient.createQuotaStrategy` uses `AdminOperationInput<"createQuotaStrategy">` and returns `Promise<AdminOperationOutput<"createQuotaStrategy">>`.

```ts
import { NexusAdminClient } from '@nexus/sdk-typescript';

const nexus = new NexusAdminClient({
  baseUrl: 'https://nexus.microvoid.io',
  managementKey: process.env.NEXUS_MANAGEMENT_KEY,
});

const result = await nexus.createQuotaStrategy({
  path: {
    workspaceId: '533c4e1e-2823-4349-86b9-d6f1a869a2ca',
  },
  body: {
    key: 'example-key',
    resetInterval: 'MONTH',
    quotaUnits: 'string',
    inputMultiplierPpm: 'string',
    outputMultiplierPpm: 'string',
    cachedInputMultiplierPpm: 'string',
    maxOutputTokens: 1,
  },
});
```

### Fetch

```ts
const response = await fetch(
  'https://nexus.microvoid.io/admin/v1/workspaces/533c4e1e-2823-4349-86b9-d6f1a869a2ca/plan-strategies/quota',
  {
    method: 'POST',
    headers: {
      Authorization: `Bearer ${process.env.NEXUS_MANAGEMENT_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      key: 'example-key',
      resetInterval: 'MONTH',
      quotaUnits: 'string',
      inputMultiplierPpm: 'string',
      outputMultiplierPpm: 'string',
      cachedInputMultiplierPpm: 'string',
      maxOutputTokens: 1,
    }),
  },
);

if (!response.ok) throw new Error(`Nexus request failed: ${response.status}`);
```

### curl

```bash
curl --request POST \
  "https://nexus.microvoid.io/admin/v1/workspaces/533c4e1e-2823-4349-86b9-d6f1a869a2ca/plan-strategies/quota" \
  --header "Authorization: Bearer ${NEXUS_MANAGEMENT_KEY}" \
  --header "Content-Type: application/json" \
  --data "{\"key\":\"example-key\",\"resetInterval\":\"MONTH\",\"quotaUnits\":\"string\",\"inputMultiplierPpm\":\"string\",\"outputMultiplierPpm\":\"string\",\"cachedInputMultiplierPpm\":\"string\",\"maxOutputTokens\":1}"
```

## Related guide

- [Workspace plans](/docs/control-plans-and-quota/workspace-plans)
- [API Reference overview](/api-reference)

Source: https://nexus.microvoid.io/api-reference/admin/plans-and-strategies/create-quota-strategy/index.mdx
