> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Remove Tags from Many Subscribers

> Remove tags from up to 500 existing subscribers in one request

# Remove Tags from Many Subscribers

Remove one or more tags from up to 500 existing subscribers in a single request. Use this to roll back or reconcile a derived-tag backfill.

Like [Add Tags to Many Subscribers](/api-reference/subscribers/tags/bulk-add), this endpoint never creates contacts: identifiers that do not match an existing subscriber come back in `notFound`.

Identify subscribers by `emails`, `externalIds`, `subscriberIds`, or any combination. All identifier lists together must total at most 500 entries.

## Request

<ParamField body="tags" type="string[]" required>
  Tag names to remove from every matched subscriber, up to 25 per request.
</ParamField>

<ParamField body="emails" type="string[]">
  Subscriber emails to untag.
</ParamField>

<ParamField body="externalIds" type="string[]">
  Your app/customer/user IDs to untag.
</ParamField>

<ParamField body="subscriberIds" type="string[]">
  Sequenzy subscriber IDs to untag.
</ParamField>

```bash theme={null}
curl -X POST "https://api.sequenzy.com/api/v1/subscribers/bulk/tags/remove" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "tags": ["derived-churn-risk"],
    "subscriberIds": ["sub_abc123", "sub_def456"]
  }'
```

## Responses

<ResponseExample>
  ```json 200 theme={null}
  {
    "success": true,
    "tags": ["derived-churn-risk"],
    "requested": 2,
    "matched": 2,
    "updated": 1,
    "unchanged": 1,
    "failed": 0,
    "notFound": {
      "emails": [],
      "externalIds": [],
      "subscriberIds": []
    },
    "failures": [],
    "message": "Untagged 1 subscriber (1 already in the target state, 0 failed)."
  }
  ```

  ```json 400 theme={null}
  {
    "success": false,
    "error": "Provide emails, externalIds, or subscriberIds"
  }
  ```

  ```json 401 theme={null}
  {
    "success": false,
    "error": "Unauthorized"
  }
  ```

  ```json 500 theme={null}
  {
    "success": false,
    "error": "Internal server error"
  }
  ```
</ResponseExample>

<Note>
  Removing a tag does not trigger sequences. Sequenzy does not currently support
  `tag_removed` automation triggers.
</Note>
