---
title: Delete a rate limit
---

[Skip to content](#%5Ftop) 

[API Reference](https://developers.cloudflare.com/api/typescript)

[Rate Limits](https://developers.cloudflare.com/api/typescript/resources/rate%5Flimits)

Copy Markdown

Open in **Claude**

Open in **ChatGPT**

Open in **Cursor**

---

**Copy Markdown**

**View as Markdown**

# Delete a rate limit

Deprecated: Rate limiting API is deprecated in favour of using the Ruleset Engine. See https://developers.cloudflare.com/fundamentals/api/reference/deprecations/#rate-limiting-api-previous-version for full details.

client.rateLimits.delete(stringrateLimitID, RateLimitDeleteParams { zone\_id } params, RequestOptionsoptions?): [RateLimitDeleteResponse](https://developers.cloudflare.com/api/typescript/resources/rate%5Flimits#%28resource%29%20rate%5Flimits%20%3E%20%28model%29%20rate%5Flimit%5Fdelete%5Fresponse%20%3E%20%28schema%29) { id, action, bypass, 5 more } 

DELETE/zones/{zone\_id}/rate\_limits/{rate\_limit\_id}

**Deprecated**: This endpoint returns 410 Gone. Please use the Rulesets API instead.

##### Security

API Token

The preferred authorization scheme for interacting with the Cloudflare API. [Create a token](https://developers.cloudflare.com/fundamentals/api/get-started/create-token/).

**Example:**`Authorization: Bearer Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY`

API Email + API Key

The previous authorization scheme for interacting with the Cloudflare API, used in conjunction with a Global API key.

**Example:**`X-Auth-Email: user@example.com`

The previous authorization scheme for interacting with the Cloudflare API. When possible, use API tokens instead of Global API keys.

**Example:**`X-Auth-Key: 144c9defac04969c7bfad8efaa8ea194`

##### Accepted Permissions (at least one required)

`Firewall Services Write`

##### ParametersExpand Collapse 

rateLimitID: string

Defines the unique identifier of the rate limit.

maxLength32

params: RateLimitDeleteParams { zone\_id } 

zone\_id: string

Defines an identifier.

maxLength32

##### ReturnsExpand Collapse 

RateLimitDeleteResponse { id, action, bypass, 5 more } 

id?: string

The unique identifier of the rate limit.

maxLength32

action?: Action { mode, response, timeout } 

The action to perform when the threshold of matched traffic within the configured period is exceeded.

mode?: "simulate" | "ban" | "challenge" | 2 more

The action to perform.

One of the following:

"simulate"

"ban"

"challenge"

"js\_challenge"

"managed\_challenge"

response?: Response { body, content\_type } 

A custom content type and reponse to return when the threshold is exceeded. The custom response configured in this object will override the custom error for the zone. This object is optional. Notes: If you omit this object, Cloudflare will use the default HTML error page. If “mode” is “challenge”, “managed\_challenge”, or “js\_challenge”, Cloudflare will use the zone challenge pages and you should not provide the “response” object.

body?: string

The response body to return. The value must conform to the configured content type.

maxLength10240

content\_type?: string

The content type of the body. Must be one of the following: `text/plain`, `text/xml`, or `application/json`.

maxLength50

timeout?: number

The time in seconds during which Cloudflare will perform the mitigation action. Must be an integer value greater than or equal to the period. Notes: If “mode” is “challenge”, “managed\_challenge”, or “js\_challenge”, Cloudflare will use the zone’s Challenge Passage time and you should not provide this value.

maximum86400

minimum1

bypass?: Array<Bypass\>

Criteria specifying when the current rate limit should be bypassed. You can specify that the rate limit should not apply to one or more URLs.

name?: "url"

value?: string

The URL to bypass.

description?: string

An informative summary of the rule. This value is sanitized and any tags will be removed.

maxLength1024

disabled?: boolean

When true, indicates that the rate limit is currently disabled.

match?: Match { headers, request, response } 

Determines which traffic the rate limit counts towards the threshold.

headers?: Array<Header\>

name?: string

The name of the response header to match.

op?: "eq" | "ne"

The operator used when matching: `eq` means “equal” and `ne` means “not equal”.

One of the following:

"eq"

"ne"

value?: string

The value of the response header, which must match exactly.

request?: Request { methods, schemes, url } 

methods?: Array<"GET" | "POST" | "PUT" | 4 more\>

The HTTP methods to match. You can specify a subset (for example, `['POST','PUT']`) or all methods (`['_ALL_']`). This field is optional when creating a rate limit.

One of the following:

"GET"

"POST"

"PUT"

"DELETE"

"PATCH"

"HEAD"

"\_ALL\_"

schemes?: Array<string\>

The HTTP schemes to match. You can specify one scheme (`['HTTPS']`), both schemes (`['HTTP','HTTPS']`), or all schemes (`['_ALL_']`). This field is optional.

url?: string

The URL pattern to match, composed of a host and a path such as `example.org/path*`. Normalization is applied before the pattern is matched. `*` wildcards are expanded to match applicable traffic. Query strings are not matched. Set the value to `*` to match all traffic to your zone.

maxLength1024

response?: Response { origin\_traffic } 

origin\_traffic?: boolean

When true, only the uncached traffic served from your origin servers will count towards rate limiting. In this case, any cached traffic served by Cloudflare will not count towards rate limiting. This field is optional. Notes: This field is deprecated. Instead, use response headers and set “origin\_traffic” to “false” to avoid legacy behaviour interacting with the “response\_headers” property.

period?: number

The time in seconds (an integer value) to count matching traffic. If the count exceeds the configured threshold within this period, Cloudflare will perform the configured action.

maximum86400

minimum10

threshold?: number

The threshold that will trigger the configured mitigation action. Configure this value along with the `period` property to establish a threshold per period.

minimum1

### Delete a rate limit

TypeScript

HTTPHTTP

TypeScriptTypeScript

PythonPython

GoGo

TerraformTerraform

```
import Cloudflare from 'cloudflare';

const client = new Cloudflare({
  apiToken: process.env['CLOUDFLARE_API_TOKEN'], // This is the default and can be omitted
});

const rateLimit = await client.rateLimits.delete('372e67954025e0ba6aaa6d586b9e0b59', {
  zone_id: '023e105f4ecef8ad9ca31a8372d0c353',
});

console.log(rateLimit.id);
```

200 example

```
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "id": "372e67954025e0ba6aaa6d586b9e0b59",
    "action": {
      "mode": "challenge",
      "response": {
        "body": "<error>This request has been rate-limited.</error>",
        "content_type": "text/xml"
      },
      "timeout": 86400
    },
    "bypass": [
      {
        "name": "url",
        "value": "api.example.com/*"
      }
    ],
    "description": "Prevent multiple login failures to mitigate brute force attacks",
    "disabled": false,
    "match": {
      "headers": [
        {
          "name": "Cf-Cache-Status",
          "op": "ne",
          "value": "HIT"
        }
      ],
      "request": {
        "methods": [
          "GET",
          "POST"
        ],
        "schemes": [
          "HTTP",
          "HTTPS"
        ],
        "url": "*.example.org/path*"
      },
      "response": {
        "origin_traffic": true
      }
    },
    "period": 900,
    "threshold": 60
  },
  "success": true
}
```

##### Returns Examples

200 example

```
{
  "errors": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "messages": [
    {
      "code": 1000,
      "message": "message",
      "documentation_url": "documentation_url",
      "source": {
        "pointer": "pointer"
      }
    }
  ],
  "result": {
    "id": "372e67954025e0ba6aaa6d586b9e0b59",
    "action": {
      "mode": "challenge",
      "response": {
        "body": "<error>This request has been rate-limited.</error>",
        "content_type": "text/xml"
      },
      "timeout": 86400
    },
    "bypass": [
      {
        "name": "url",
        "value": "api.example.com/*"
      }
    ],
    "description": "Prevent multiple login failures to mitigate brute force attacks",
    "disabled": false,
    "match": {
      "headers": [
        {
          "name": "Cf-Cache-Status",
          "op": "ne",
          "value": "HIT"
        }
      ],
      "request": {
        "methods": [
          "GET",
          "POST"
        ],
        "schemes": [
          "HTTP",
          "HTTPS"
        ],
        "url": "*.example.org/path*"
      },
      "response": {
        "origin_traffic": true
      }
    },
    "period": 900,
    "threshold": 60
  },
  "success": true
}
```