# Delete an IP rule

`DELETE /v1/service/@id/waf/ip-rules/@rule` · scope `waf:write`

Deletes one block/allow entry by ID (UUID).

## HTTP request

| Item | Value |
| --- | --- |
| URL | `https://api.tino.vn/v1/service/@id/waf/ip-rules/@rule` |
| Method | `DELETE` |
| Scope | `waf:write` |
| Header | `Authorization: Bearer <token>` |
| Content-Type | — (no body) |
| Tokens that can call it | app tokens (`tinoat_`), personal API tokens (`tinopat_`) |

## Parameters

| Name | In | Type | Required | Description |
| --- | --- | --- | --- | --- |
| `id` | path | int | yes | Service ID |
| `rule` | path | string | yes | ID (UUID) of the IP block/allow entry |

## Example request

```bash
curl -X DELETE "https://api.tino.vn/v1/service/100001/waf/ip-rules/9e8d7c6b-5a49-4382-a1b0-c9d8e7f6a5b4" \
  -H "Authorization: Bearer $TINO_TOKEN"
```

`$TINO_TOKEN` is a token with the scope `waf:write`. Path parameters in the example are sample values.

SDK ([SDK & examples](/en/docs/sdk)): no dedicated function yet, use `client.request("DELETE", "/service/@id/waf/ip-rules/@rule")`.

## Example response

No live sample: the route changes real data or the test account has no data for it. The answer is a JSON object; errors follow the common shape in [Calling the Tino API](/en/docs/api#errors).
