---
title: Set Spend Limit
url: https://platform.claude.com/docs/en/api/php/beta/organization/spend_limits/set
---

# Set Spend Limit

`$client->beta->organization->spendLimits->set(?string amount, Scope scope, ?SpendLimitPeriod period, ?list<AnthropicBeta> betas): SpendLimit`

**POST** `/v1/organizations/spend_limits`

Set a spend limit.

Upsert keyed on (scope, period): setting a limit that already exists
overwrites it in place. A Claude Enterprise organization sets `user`
limits. Its seat-tier, group, and organization-level defaults are configured
in claude.ai. A Claude Console organization sets `organization` and
`workspace` limits, which are monthly and always carry an amount. Setting those
limits is in an early access preview. To request access, contact your
Anthropic account team.

## Parameters

- `amount: string`

  Limit amount as a non-negative integer decimal string in the minor unit of the organization's billing currency (cents for USD): "50000" is $500.00. `null` sets an explicit no-limit override for this scope and `period` only — each period resolves independently, so caps for other periods still apply.

- `scope: Scope`

  What the limit applies to. Claude Enterprise organizations set `user` limits. Claude Console organizations set `organization` and `workspace` limits. Any other combination returns 400. Setting `organization` and `workspace` limits through the API is in an early access preview. To request access, contact your Anthropic account team.

- `period?:optional SpendLimitPeriod`

- `betas?:optional list<AnthropicBeta>` (header parameter)

  Optional header to specify the beta version(s) you want to use.

## Returns

- `class SpendLimit`

  - `"spend_limit" type`

    Object type. Always `spend_limit`.

  - `string id`

    Unique tagged ID of the spend limit (`spl_...`).

  - `?string amount`

    Limit amount as a non-negative integer decimal string in the minor unit of `currency` (cents for USD): "50000" is $500.00. `null` means no numeric cap is configured at this scope — see the effective report for whether a limit applies.

  - `\Datetime createdAt`

    RFC 3339 datetime at which the spend limit was created.

  - `string currency`

    ISO 4217 code of the organization's billing currency; the unit for `amount`.

  - `bool isEnabled`

    Read-only. `false` when extra usage is switched off for this organization (`organization` limit); `amount` is kept and applies again when it's switched back on. Always `true` for other limits.

  - `SpendLimitPeriod period`

    Length of the window the limit resets over. `amount` caps spend within each period.

  - `Scope scope`

    What the limit applies to. A tagged union on `type`; each variant carries the identifier for its scope.

  - `\Datetime updatedAt`

    RFC 3339 datetime at which the spend limit was last modified.

## Example

```php
<?php

require_once dirname(__DIR__) . '/vendor/autoload.php';

use Anthropic\Client;
use Anthropic\Beta\AnthropicBeta;
use Anthropic\Beta\Organization\SpendLimits\SpendLimitPeriod;

$client = new Client(apiKey: 'my-anthropic-api-key');

$betaSpendLimit = $client->beta->organization->spendLimits->set(
  amount: '50000',
  scope: ['type' => 'user', 'userID' => 'user_01WCz1FkmYMm4gnmykNKUu3Q'],
  period: SpendLimitPeriod::MONTHLY,
  betas: [AnthropicBeta::MESSAGE_BATCHES_2024_09_24],
);

var_dump($betaSpendLimit);
```

### Response (200)

```json
{
  "id": "id",
  "amount": "50000",
  "created_at": "2019-12-27T18:11:19.117Z",
  "currency": "USD",
  "is_enabled": true,
  "period": "daily",
  "scope": {
    "type": "user",
    "user_id": "user_01WCz1FkmYMm4gnmykNKUu3Q"
  },
  "type": "spend_limit",
  "updated_at": "2019-12-27T18:11:19.117Z"
}
```
