---
title: "save_competitor_exclusions"
method: PUT
path: "/v1/competitor-sets/{setId}/exclusions"
---

# save_competitor_exclusions

`PUT /v1/competitor-sets/{setId}/exclusions`

## Request

- Base URL: `https://app.agentlinkops.com`
- URL: `https://app.agentlinkops.com/v1/competitor-sets/{setId}/exclusions`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Remaining arguments go in a JSON object body.

## Path parameters

- `setId` string, required: set ID from create/list.

## Headers

- `X-Workspace-ID` string

## Request body

- object
  - `expectedRevision` integer, required: Previously read revision; mismatches reject concurrent updates.
  - `rules` object[], required: Customer-owned exclusion rules for the selected competitor revision.
    - `grouping` 'page' | 'source_host', required
    - `value` string, required

## Response `201`

Remaining arguments go in a JSON object body.

- object
  - `set_id` string, required
  - `revision` number, required: Optimistic concurrency revision; supply it as expectedRevision on the next write.
  - `current_revision` number, required
  - `set_revision_at_save` number, nullable, required
  - `saved_by` string, nullable, required
  - `saved_at` string, nullable, required
  - `rules` object[], required
    - `grouping` 'page' | 'source_host', required
    - `value` string, required

## Other responses

- `429`: Request-rate or usage refusal. Inspect error.code and recovery details before retrying.
- `default`: Error envelope. Non-configuration 5xx messages are masked and details omitted; allowlisted configuration errors retain static operator recovery.

---

[API](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api.md) · [All operations](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api/llms.txt) · [OpenAPI document](https://skmtc.dev/agentlinkops/apis/agentlinkops-http-api/revisions/2a712a1dcfa7?raw)
