---
title: "Update a Rate Limit configuration on your Shield Zone"
method: PATCH
path: "/shield/rate-limit/{id}"
tags: ["Rate Limiting"]
---

# Update a Rate Limit configuration on your Shield Zone

`PATCH /shield/rate-limit/{id}`

## Path parameters

- `id` integer, required — The ID of the Rate Limit you would like to update.

## Request body

- UpdateWafRateLimitRequest
  - `ruleName` string, nullable
  - `ruleDescription` string, nullable
  - `ruleConfiguration` CreateWafRateLimitRuleModel
    - `actionType` 1 | 2 | 3 — 1 = RateLimit 2 = Log 3 = Challenge
    - `variableTypes` object, nullable
      - `REQUEST_URI` string
      - `REQUEST_URI_RAW` string
      - `ARGS` string
      - `ARGS_COMBINED_SIZE` string
      - `ARGS_GET` string
      - `ARGS_GET_NAMES` string
      - `ARGS_POST` string
      - `ARGS_POST_NAMES` string
      - `FILES_NAMES` string
      - `GEO` string
      - `REMOTE_ADDR` string
      - `QUERY_STRING` string
      - `REQUEST_BASENAME` string
      - `REQUEST_BODY` string
      - `REQUEST_COOKIES_NAMES` string
      - `REQUEST_COOKIES` string
      - `REQUEST_FILENAME` string
      - `REQUEST_HEADERS_NAMES` string
      - `REQUEST_HEADERS` string
      - `REQUEST_LINE` string
      - `REQUEST_METHOD` string
      - `REQUEST_PROTOCOL` string
      - `RESPONSE_BODY` string
      - `RESPONSE_HEADERS` string
      - `RESPONSE_STATUS` string
      - `FINGERPRINT` string
      - `VERIFIED_BOT_CATEGORY` string
    - `operatorType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 14 | 15 | 17 | 18 — 0 = BEGINSWITH 1 = ENDSWITH 2 = CONTAINS 3 = CONTAINSWORD 4 = STRMATCH 5 = EQ 6 = GE 7 = GT 8 = LE 9 = LT 12 = WITHIN 14 = RX 15 = STREQ 17 = DETECTSQLI 18 = DETECTXSS
    - `severityType` 0 | 1 | 2 — 0 = NOTICE 1 = WARNING 2 = CRITICAL
    - `transformationTypes` WafRuleTransformationType[], nullable
    - `value` string, nullable
    - `isNegated` boolean, nullable
    - `isRegexVariable` boolean, nullable
    - `requestCount` integer
    - `counterKeyType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 — 0 = IP 1 = Host 2 = Country 3 = City 4 = ASN 5 = Organization 6 = JA4 7 = IP_JA4
    - `timeframe` 1 | 10 | 60 | 300 | 900 | 3600 — 1 = PerSecond 10 = PerTenSeconds 60 = PerOneMinute 300 = PerFiveMinutes 900 = PerFifteenMinutes 3600 = PerOneHour
    - `blockTime` 30 | 60 | 300 | 900 | 1800 | 3600 — 30 = ForThirtySeconds 60 = ForOneMinute 300 = ForFiveMinutes 900 = ForFifteenMinutes 1800 = ForThirtyMinutes 3600 = ForOneHour
    - `chainedRuleConditions` WafChainedRuleConditionItem[], nullable
      - `variableTypes` object, nullable
        - `REQUEST_URI` string
        - `REQUEST_URI_RAW` string
        - `ARGS` string
        - `ARGS_COMBINED_SIZE` string
        - `ARGS_GET` string
        - `ARGS_GET_NAMES` string
        - `ARGS_POST` string
        - `ARGS_POST_NAMES` string
        - `FILES_NAMES` string
        - `GEO` string
        - `REMOTE_ADDR` string
        - `QUERY_STRING` string
        - `REQUEST_BASENAME` string
        - `REQUEST_BODY` string
        - `REQUEST_COOKIES_NAMES` string
        - `REQUEST_COOKIES` string
        - `REQUEST_FILENAME` string
        - `REQUEST_HEADERS_NAMES` string
        - `REQUEST_HEADERS` string
        - `REQUEST_LINE` string
        - `REQUEST_METHOD` string
        - `REQUEST_PROTOCOL` string
        - `RESPONSE_BODY` string
        - `RESPONSE_HEADERS` string
        - `RESPONSE_STATUS` string
        - `FINGERPRINT` string
        - `VERIFIED_BOT_CATEGORY` string
      - `operatorType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 14 | 15 | 17 | 18 — 0 = BEGINSWITH 1 = ENDSWITH 2 = CONTAINS 3 = CONTAINSWORD 4 = STRMATCH 5 = EQ 6 = GE 7 = GT 8 = LE 9 = LT 12 = WITHIN 14 = RX 15 = STREQ 17 = DETECTSQLI 18 = DETECTXSS
      - `value` string, nullable
      - `isNegated` boolean, nullable
      - `isRegexVariable` boolean, nullable

## Response `200`

OK

- RateLimitRule
  - `id` integer
  - `shieldZoneId` integer
  - `userId` string, nullable
  - `ruleName` string, nullable
  - `ruleDescription` string, nullable
  - `ruleJson` string, nullable
  - `ruleConfiguration` CreateWafRateLimitRuleModel
    - `actionType` 1 | 2 | 3 — 1 = RateLimit 2 = Log 3 = Challenge
    - `variableTypes` object, nullable
      - `REQUEST_URI` string
      - `REQUEST_URI_RAW` string
      - `ARGS` string
      - `ARGS_COMBINED_SIZE` string
      - `ARGS_GET` string
      - `ARGS_GET_NAMES` string
      - `ARGS_POST` string
      - `ARGS_POST_NAMES` string
      - `FILES_NAMES` string
      - `GEO` string
      - `REMOTE_ADDR` string
      - `QUERY_STRING` string
      - `REQUEST_BASENAME` string
      - `REQUEST_BODY` string
      - `REQUEST_COOKIES_NAMES` string
      - `REQUEST_COOKIES` string
      - `REQUEST_FILENAME` string
      - `REQUEST_HEADERS_NAMES` string
      - `REQUEST_HEADERS` string
      - `REQUEST_LINE` string
      - `REQUEST_METHOD` string
      - `REQUEST_PROTOCOL` string
      - `RESPONSE_BODY` string
      - `RESPONSE_HEADERS` string
      - `RESPONSE_STATUS` string
      - `FINGERPRINT` string
      - `VERIFIED_BOT_CATEGORY` string
    - `operatorType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 14 | 15 | 17 | 18 — 0 = BEGINSWITH 1 = ENDSWITH 2 = CONTAINS 3 = CONTAINSWORD 4 = STRMATCH 5 = EQ 6 = GE 7 = GT 8 = LE 9 = LT 12 = WITHIN 14 = RX 15 = STREQ 17 = DETECTSQLI 18 = DETECTXSS
    - `severityType` 0 | 1 | 2 — 0 = NOTICE 1 = WARNING 2 = CRITICAL
    - `transformationTypes` WafRuleTransformationType[], nullable
    - `value` string, nullable
    - `isNegated` boolean, nullable
    - `isRegexVariable` boolean, nullable
    - `requestCount` integer
    - `counterKeyType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 — 0 = IP 1 = Host 2 = Country 3 = City 4 = ASN 5 = Organization 6 = JA4 7 = IP_JA4
    - `timeframe` 1 | 10 | 60 | 300 | 900 | 3600 — 1 = PerSecond 10 = PerTenSeconds 60 = PerOneMinute 300 = PerFiveMinutes 900 = PerFifteenMinutes 3600 = PerOneHour
    - `blockTime` 30 | 60 | 300 | 900 | 1800 | 3600 — 30 = ForThirtySeconds 60 = ForOneMinute 300 = ForFiveMinutes 900 = ForFifteenMinutes 1800 = ForThirtyMinutes 3600 = ForOneHour
    - `chainedRuleConditions` WafChainedRuleConditionItem[], nullable
      - `variableTypes` object, nullable
        - `REQUEST_URI` string
        - `REQUEST_URI_RAW` string
        - `ARGS` string
        - `ARGS_COMBINED_SIZE` string
        - `ARGS_GET` string
        - `ARGS_GET_NAMES` string
        - `ARGS_POST` string
        - `ARGS_POST_NAMES` string
        - `FILES_NAMES` string
        - `GEO` string
        - `REMOTE_ADDR` string
        - `QUERY_STRING` string
        - `REQUEST_BASENAME` string
        - `REQUEST_BODY` string
        - `REQUEST_COOKIES_NAMES` string
        - `REQUEST_COOKIES` string
        - `REQUEST_FILENAME` string
        - `REQUEST_HEADERS_NAMES` string
        - `REQUEST_HEADERS` string
        - `REQUEST_LINE` string
        - `REQUEST_METHOD` string
        - `REQUEST_PROTOCOL` string
        - `RESPONSE_BODY` string
        - `RESPONSE_HEADERS` string
        - `RESPONSE_STATUS` string
        - `FINGERPRINT` string
        - `VERIFIED_BOT_CATEGORY` string
      - `operatorType` 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 12 | 14 | 15 | 17 | 18 — 0 = BEGINSWITH 1 = ENDSWITH 2 = CONTAINS 3 = CONTAINSWORD 4 = STRMATCH 5 = EQ 6 = GE 7 = GT 8 = LE 9 = LT 12 = WITHIN 14 = RX 15 = STREQ 17 = DETECTSQLI 18 = DETECTXSS
      - `value` string, nullable
      - `isNegated` boolean, nullable
      - `isRegexVariable` boolean, nullable
  - `errorResponse` GenericRequestResponse — Generic response object containing status information for API operations.
    - `statusCode` 100 | 101 | 102 | 103 | 200 | 201 | 202 | 203 | 204 | 205 | 206 | 207 | 208 | 226 | 300 | 301 | 302 | 303 | 304 | 305 | 306 | 307 | 308 | 400 | 401 | 402 | 403 | 404 | 405 | 406 | 407 | 408 | 409 | 410 | 411 | 412 | 413 | 414 | 415 | 416 | 417 | 421 | 422 | 423 | 424 | 426 | 428 | 429 | 431 | 451 | 500 | 501 | 502 | 503 | 504 | 505 | 506 | 507 | 508 | 510 | 511 — 100 = Continue 101 = SwitchingProtocols 102 = Processing 103 = EarlyHints 200 = OK 201 = Created 202 = Accepted 203 = NonAuthoritativeInformation 204 = NoContent 205 = ResetContent 206 = PartialContent 207 = MultiStatus 208 = AlreadyReported 226 = IMUsed 300 = MultipleChoices 300 = Ambiguous 301 = MovedPermanently 301 = Moved 302 = Found 302 = Redirect 303 = SeeOther 303 = RedirectMethod 304 = NotModified 305 = UseProxy 306 = Unused 307 = TemporaryRedirect 307 = RedirectKeepVerb 308 = PermanentRedirect 400 = BadRequest 401 = Unauthorized 402 = PaymentRequired 403 = Forbidden 404 = NotFound 405 = MethodNotAllowed 406 = NotAcceptable 407 = ProxyAuthenticationRequired 408 = RequestTimeout 409 = Conflict 410 = Gone 411 = LengthRequired 412 = PreconditionFailed 413 = RequestEntityTooLarge 414 = RequestUriTooLong 415 = UnsupportedMediaType 416 = RequestedRangeNotSatisfiable 417 = ExpectationFailed 421 = MisdirectedRequest 422 = UnprocessableEntity 422 = UnprocessableContent 423 = Locked 424 = FailedDependency 426 = UpgradeRequired 428 = PreconditionRequired 429 = TooManyRequests 431 = RequestHeaderFieldsTooLarge 451 = UnavailableForLegalReasons 500 = InternalServerError 501 = NotImplemented 502 = BadGateway 503 = ServiceUnavailable 504 = GatewayTimeout 505 = HttpVersionNotSupported 506 = VariantAlsoNegotiates 507 = InsufficientStorage 508 = LoopDetected 510 = NotExtended 511 = NetworkAuthenticationRequired
    - `success` boolean — Indicates whether the operation was successful.
    - `message` string, nullable — Human-readable message describing the result of the operation.
    - `errorKey` string, nullable — Unique error key for programmatic error handling, if applicable.

## Other responses

- `202` — Accepted
- `401` — Unauthorized
- `500` — Internal Server Error

---

[API](https://skmtc.net/bunny/apis/bunny-net-cdn-logging.md) · [All operations](https://skmtc.net/bunny/apis/bunny-net-cdn-logging/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/bunny/bunny-net-cdn-logging/versions/9e622620664b/schema)
