## Remove a condition from a notification group

`DELETE /v1/notifications/groups/:groupId/conditions`

Removes a single condition from a group the user created — the module and event pair named in the query parameters.

## Parameters

| Parameter | Type | Required | Description |
|----------|-----|:-----:|---------|
| `groupId` (path) | number | yes | Group identifier — the `tag` value of a group with `isEditable: true` from the [group list](/docs/notifications/groups/list), passed as a number |
| `module` (query) | string | yes | Condition module, 1 to 255 characters, passed once. The group's modules are the keys of `conditions.moduleConditions` in the [group list](/docs/notifications/groups/list) |
| `event` (query) | string | yes | Condition event, 1 to 255 characters, passed once. The module's events are the `events` array under its key in `conditions.moduleConditions` |

## Examples

### curl — personal key

```bash
curl -X DELETE "https://vibecode.bitrix24.com/v1/notifications/groups/12/conditions?module=calendar&event=invite" \
  -H "X-Api-Key: YOUR_API_KEY"
```

### curl — OAuth application

```bash
curl -X DELETE "https://vibecode.bitrix24.com/v1/notifications/groups/12/conditions?module=calendar&event=invite" \
  -H "X-Api-Key: YOUR_APP_KEY" \
  -H "Authorization: Bearer USER_SESSION_TOKEN"
```

### JavaScript — personal key

```javascript
const params = new URLSearchParams({ module: 'calendar', event: 'invite' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/notifications/groups/12/conditions?${params}`, {
  method: 'DELETE',
  headers: { 'X-Api-Key': 'YOUR_API_KEY' },
})

const { success } = await res.json()
console.log('Condition removed:', success)
```

### JavaScript — OAuth application

```javascript
const params = new URLSearchParams({ module: 'calendar', event: 'invite' })
const res = await fetch(`https://vibecode.bitrix24.com/v1/notifications/groups/12/conditions?${params}`, {
  method: 'DELETE',
  headers: {
    'X-Api-Key': 'YOUR_APP_KEY',
    'Authorization': 'Bearer USER_SESSION_TOKEN',
  },
})

const { success } = await res.json()
console.log('Condition removed:', success)
```

## Response fields

| Field | Type | Description |
|------|-----|---------|
| `success` | boolean | Always `true` on success |
| `data.result` | boolean | Always `true`. The success indicator is the HTTP code `200`, not the value |

## Response example

HTTP 200:

```json
{
  "success": true,
  "data": {
    "result": true
  }
}
```

## Error response example

400 — `event` was not passed:

```json
{
  "success": false,
  "error": {
    "code": "INVALID_PARAMS",
    "message": "Query parameter `event` must be a non-empty string of up to 255 characters."
  }
}
```

## Errors

| HTTP | Code | Description |
|------|-----|----------|
| 400 | `INVALID_PARAMS` | `groupId` is not a positive integer, including a system group tag such as `mention` |
| 400 | `INVALID_PARAMS` | `module` or `event` was not passed, is empty, is longer than 255 characters or was passed twice. The parameter name is in `message` |
| 400 | `INVALID_PARAMS` | Another query parameter or a body field was passed, or the body is not a JSON object. The name is in `message` |
| 404 | `ENTITY_NOT_FOUND` | The group does not exist — it was deleted or belongs to another user. The portal code `GROUP_NOT_FOUND` is in the `error.b24Code` field. On a portal whose interface language is neither Russian nor English, the same refusal arrives as `422 BITRIX_ERROR` — rely on `error.b24Code` |
| 422 | `BITRIX_ERROR` | Bitrix24 rejected the removal; the portal code is in the `error.b24Code` field |
| 403 | `SCOPE_DENIED` | The key lacks the `im` scope |
| 403 | `WRITE_BLOCKED_READONLY_KEY` | The key is in read-only mode |
| 401 | `TOKEN_MISSING` | The key has no configured tokens |

Full list of common API errors — [Errors](/docs/errors).

## Known specifics

- Removing the last condition also deletes the group itself: it disappears from the [group list](/docs/notifications/groups/list). To replace the only condition of a group, [add the new one](/docs/notifications/groups/conditions-create) first, then remove the old one.
- A request with a module and event pair the group does not have also returns `200` with `data.result: true`. Such a response does not confirm that the condition was in the group — check against the group list.

## See also

- [Notification groups](/docs/notifications/groups)
- [Add a condition to a notification group](/docs/notifications/groups/conditions-create)
- [Delete a notification group](/docs/notifications/groups/delete)
- [List notification groups](/docs/notifications/groups/list)
