# Update alerts

URL: https://docs.hanzo.ai/docs/openapi/billing/patch-billing-alerts-by-id

> Changes one spend cap: raise or lower the ceiling, flip enforcement, retune the rate limit.

`PATCH /v1/billing/alerts/{id}`

> [Billing →](https://docs.hanzo.ai/docs/openapi/billing) · [All API references →](https://docs.hanzo.ai/docs/openapi) · [Get started →](https://docs.hanzo.ai/docs/guides)

|               |                                               |
| ------------- | --------------------------------------------- |
| **Address**   | `https://api.hanzo.ai/v1/billing/alerts/{id}` |
| **Method**    | `PATCH`                                       |
| **Operation** | `patch_billing_alerts_by_id`                  |
| **Auth**      | `Authorization: Bearer $HANZO_API_KEY`        |

Changes one spend cap: raise or lower the ceiling, flip enforcement, retune
the rate limit.

Only the fields the body carries move. Every mutable field is optional, and an
absent one is PRESERVED rather than reset — so a change that flips enforcement
cannot silently wipe the threshold it enforces.

A cap belonging to another org is a 404, not a 403: a guessed id must not
become an oracle for what anyone else holds.

A named handler, not a closure, so zipdoc can lift this prose into the registry.

## Request

10 fields, body `application/json` (required).

| Field          | In   | Type            | Required | Description |
| -------------- | ---- | --------------- | -------- | ----------- |
| `id`           | path | string          | yes      |             |
| `enforce`      | body | boolean         | —        |             |
| `id`           | body | string          | —        |             |
| `project`      | body | string          | —        |             |
| `rateLimitRpm` | body | integer (int64) | —        |             |
| `service`      | body | string          | —        |             |
| `softPct`      | body | integer (int64) | —        |             |
| `subject`      | body | string          | —        |             |
| `threshold`    | body | integer (int64) | —        |             |
| `title`        | body | string          | —        |             |

## Response

| Status    | Body            | Meaning |
| --------- | --------------- | ------- |
| `200`     | billing.Alert   | ok      |
| `default` | problem-details | refused |

`200` body — 18 fields.

| Field              | In   | Type            | Always | Description |
| ------------------ | ---- | --------------- | ------ | ----------- |
| `createdAt`        | body | string          | —      |             |
| `currency`         | body | string          | —      |             |
| `enforce`          | body | boolean         | —      |             |
| `id`               | body | string          | —      |             |
| `over`             | body | boolean         | —      |             |
| `period`           | body | string          | —      |             |
| `periodSpentCents` | body | integer (int64) | —      |             |
| `project`          | body | string          | —      |             |
| `rateLimitRpm`     | body | integer (int64) | —      |             |
| `resetsAt`         | body | string          | —      |             |
| `service`          | body | string          | —      |             |
| `softPct`          | body | integer (int64) | —      |             |
| `threshold`        | body | integer (int64) | —      |             |
| `title`            | body | string          | —      |             |
| `triggeredAt`      | body | string          | —      |             |
| `updatedAt`        | body | string          | —      |             |
| `userId`           | body | string          | —      |             |
| `warn`             | body | boolean         | —      |             |

Failure carries the platform error shape — see [Errors](https://docs.hanzo.ai/docs/errors).

## Examples

**CLI**

```bash
hanzo billing alerts update <id>
```

**SDK**

**.ts**

```ts
import { Configuration, BillingApi } from 'hanzoai';

const api = new BillingApi(new Configuration({ accessToken: process.env.HANZO_API_KEY }));
const { data } = await api.patchBillingAlertsById({ id: 'id', enforce: false, id: "<id>" });
```

**.py**

```python
from hanzoai.cloud import ApiClient, Configuration
from hanzoai.cloud.api import BillingApi

client = ApiClient(Configuration(access_token=os.environ["HANZO_API_KEY"]))
result = BillingApi(client).patch_billing_alerts_by_id(id='id', enforce=False, id="<id>")
```

**.go**

```go
cfg := hanzoai.NewConfiguration()
cfg.AddDefaultHeader("Authorization", "Bearer "+os.Getenv("HANZO_API_KEY"))
client := hanzoai.NewAPIClient(cfg)

resp, _, err := client.BillingAPI.PatchBillingAlertsById(context.Background()).Execute()
if err != nil {
	return err
}
```

**.rs**

```rust
use hanzo_client::apis::{configuration::Configuration, billing_api};

let mut cfg = Configuration::new();
cfg.bearer_access_token = std::env::var("HANZO_API_KEY").ok();

let result = billing_api::patch_billing_alerts_by_id(&cfg, Default::default()).await?;
```

**.java**

```java
import ai.hanzo.cloud.ApiClient;
import ai.hanzo.cloud.api.BillingApi;

ApiClient client = new ApiClient();
client.setBearerToken(System.getenv("HANZO_API_KEY"));

var result = new BillingApi(client).patchBillingAlertsById();
```

**HTTP**

```bash
curl -X PATCH https://api.hanzo.ai/v1/billing/alerts/<id> \
  -H "Authorization: Bearer $HANZO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
       "enforce": false,
       "id": "<id>"
     }'
```

**MCP**

MCP reaches **billing** through the `billing` tool, which names its 39 operations with its own verbs — this one among them, under a name only MCP declares. `describe` explains any of them:

```bash
curl -X POST https://api.hanzo.ai/v1/mcp \
  -H "Content-Type: application/json" \
  -d '{
       "jsonrpc": "2.0",
       "id": 1,
       "method": "tools/call",
       "params": {
         "name": "describe",
         "arguments": {
           "op": "list_billing_accounts"
         }
       }
     }'
```

---

[Billing API](https://docs.hanzo.ai/docs/openapi/billing) · [All Hanzo APIs](https://docs.hanzo.ai/docs/openapi) · [Interactive reference](https://docs.hanzo.ai/docs/openapi/reference)
