---
title: "Delete a batch of rules by pattern."
method: POST
path: "/limits/rules/bulk-delete"
tags: ["rule"]
---

# Delete a batch of rules by pattern.

`POST /limits/rules/bulk-delete`

Each entry may carry an `expected_version`; if present the rule
must exist at that exact version, otherwise the batch fails.
Without `expected_version` the delete is unconditional and
idempotent: a pattern that's already absent is silently skipped.
Returns the patterns that this batch actually removed.

## Request body

- DeleteRuleRequest[]
  - `expected_version` integer, nullable — Optimistic-concurrency match. Absent → unconditional delete (idempotent: deleting an already-absent rule succeeds as a no-op). Present → reject unless the rule's current version is the supplied value.
  - `pattern` string, required

## Response `200`

Patterns that were actually removed

- string[]

## Other responses

- `409` — Conflict
- `422` — Unprocessable entity
- `500` — Internal server error

## Changes

> 8 revisions in range; 1 could not be searched.

- **2026-06-19** `7381abc4d9a3` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/restatedev/apis/admin-api/changes/limits/rules/bulk-delete/post.md)

---

[API](https://skmtc.dev/restatedev/apis/admin-api.md) · [All operations](https://skmtc.dev/restatedev/apis/admin-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/restatedev/admin-api/revisions/5361f4818c71/schema)
