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

# PUT /v1/products/watches/{id} — update a watch

> Update an existing product watch to change its rules, webhook target, filters, or status — including reactivating a completed or expired watch.

The `PUT /v1/products/watches/{watch_id}` endpoint replaces the configuration of an existing watch with the values you provide. The request body format is identical to `POST /v1/products/watches`. Use this endpoint to change rules, update your webhook URL, add filters, or renew a watch that has expired or completed.

## Endpoint

```
PUT /v1/products/watches/{watch_id}
```

## Path parameters

<ParamField path="watch_id" type="string" required>
  The unique identifier of the watch to update.
</ParamField>

## Headers

<ParamField header="Authorization" type="string" required>
  Bearer token for authentication. Format: `Bearer {your_api_key}`.
</ParamField>

<ParamField header="Content-Type" type="string" required>
  Must be `application/json`.
</ParamField>

## Request body

The request body follows the same structure as [Create Watch](/api-reference/watches/create-watch#request-body). All fields you include replace the existing values; omitted optional fields revert to defaults.

## Example request

Reactivate a completed watch with a new price rule and extended expiration:

```bash theme={null}
curl --request PUT \
  --url 'https://api.affiliate.com/v1/products/watches/9e84ce37-63be-41cf-87ef-72465fb8ead2' \
  --header 'Authorization: Bearer {your_api_key}' \
  --header 'Content-Type: application/json' \
  --data '{
    "name": "Smart Home Price Alert",
    "target_type": "product",
    "target_ids": [
      "1301920351976391947"
    ],
    "status": "active",
    "rules": [
      {
        "field": "final_price",
        "condition": "decrease",
        "threshold": {
          "type": "percentage",
          "value": 20
        }
      },
      {
        "field": "on_sale",
        "condition": "equals",
        "threshold": {
          "type": "value",
          "value": true
        }
      }
    ],
    "notifications": [
      {
        "channel": "webhook",
        "target": "https://example.com/api/callback",
        "frequency": "immediately"
      }
    ],
    "metadata": {
      "category": "electronics",
      "priority": "high"
    },
    "expire_timestamp": 1806288000
  }'
```

## Response

A successful update returns `200 OK` with the updated watch list in the same paginated format as [list watches](/api-reference/watches/list-watches).

```json theme={null}
{
  "meta": {
    "total": 1,
    "from": 1,
    "to": 1,
    "current_page": 1,
    "last_page": 1,
    "per_page": 100,
    "fields": [],
    "trace_id": "f12a3d45-6b78-90c1-2d3e-4f5678901234"
  },
  "data": [
    {
      "watch_id": "9e84ce37-63be-41cf-87ef-72465fb8ead2",
      "name": "Smart Home Price Alert",
      "target_type": "product",
      "target_id": "1301920351976391947",
      "status": "active",
      "metadata": {
        "category": "electronics",
        "priority": "high"
      },
      "rules": [
        {
          "field": "final_price",
          "start_value": null,
          "condition": "decrease",
          "threshold": {
            "type": "percentage",
            "value": 20
          }
        },
        {
          "field": "on_sale",
          "start_value": null,
          "condition": "equals",
          "threshold": {
            "type": "value",
            "value": true
          }
        }
      ],
      "notifications": [
        {
          "channel": "webhook",
          "channel_target": "https://example.com/api/callback",
          "frequency": "immediately",
          "enabled": true
        }
      ]
    }
  ]
}
```

<Note>
  To renew a watch that has expired or completed, set `status: "active"` and supply a new `expire_timestamp` no more than 180 days from the current time. The watch resumes checking on the next 6-hour cycle.
</Note>
