1. Affiliate.com API Endpoints
Affiliate.com API Documentation
  • Affiliate.com API Endpoints
    • Account
      • Get User Team Account Information
    • Network Groups
      • List All Network Groups
    • Networks
      • List All Networks
      • Get Single Specific Network
    • Merchants
      • List All Merchants
      • Get Single Specific Merchant Name
      • Get a Single Specific Merchant ID
    • Products
      • Search Products
    • Omni
      • Omni
    • Conversion
      • URL to Barcode
      • Barcode to SKU
      • ASIN to Barcode
      • SKU to Barcode
      • Barcode to ASIN
    • Watch
      • Set Product Watch
      • Get All Product Watches
      • Get Specific Product Watch
      • Get Specific Product Watch from Metadata
      • Edit Product Watch
      • Delete Product Watch
      • Get Single Product Watch Notification History
      • Get Product Watch Notification History via Metadata
    • Product List
      • Create Product List
      • Get Product Lists
      • Get Single List
      • Get List By Metadata
      • Add Products to a List
      • Remove Products from a List
      • Delete Product List
  1. Affiliate.com API Endpoints

Watch

Product Watch API Documentation#

The Affiliate.com Product Watch API allows you to monitor items for price changes, availability updates, and other condition changes, and receive notifications when specified criteria are met.

Watch Types#

The Product Watch API supports three types of watches, each designed for different use cases:

1. Product ID Watch (target_type: "product")#

Monitor products using internal product IDs from the Affiliate.com database.
Use cases:
Track products you've already searched and identified
Monitor up to 100 product IDs per watch
Support for all rule types (price, availability, sale status, etc.)
Filter by network, merchant, currency, or direct URL
Limitations:
Max 100 product IDs per watch
Max 10 rules per watch

2. ASIN Watch (target_type: "asin")#

Monitor Amazon products directly using their ASIN (Amazon Standard Identification Number).
Use cases:
Track Amazon products without first searching in the database
Monitor up to 10 ASINs per watch
Ideal for Amazon-specific tracking
Limitations:
Max 10 ASINs per watch
Max 10 rules per watch
Requires Creator API (v2 or v3) credentials in the request
-- Amazon: credential_id, credential_secret, partner_tag, locale (similar to marketplaces: US, GB, DE, etc.)
start_value is required for all rules
Currently only supports final_price and regular_price rules
Filters are NOT allowed for ASIN watches

3. Barcode Watch (target_type: "barcode")#

Monitor products across all merchants using universal product codes (UPC, EAN, GTIN, ISBN).
Use cases:
Track the same product across multiple merchants
Price comparison across retailers
Monitor product availability broadly
Limitations:
Only 1 barcode per watch (create multiple watches for multiple barcodes)
Only 1 rule per watch
Filters are supported

Core Concepts#

Watch Behavior & Check Frequency
Product watches are checked every 6 hours and will trigger notifications whenever the specified conditions are met during a check. When a watch's rule is met, the watch's status will be set to "completed". Completed watches will NOT automatically resume - you must explicitly reactivate/renew the watch by calling the PUT endpoint to continue watching.
If a product is no longer available, the watch will automatically be removed and you will receive a final notification:
"changes": [
    {
        "field": "__product__",
        "new_value": "unavailable",
        "old_value": "available"
    }
]
Watch Expiration Policy
Every watch must have an expiration time:
Default expiration: 90 days from creation (if not specified)
Maximum expiration: 180 days from the current time
The expiration limit applies to both creating and updating watches
Users will be notified through their specified channel when a watch expires

Metadata Object#

One of the versatile aspects of this endpoint is that it allows up to 16 key:value pairs for you to use however you see fit. These are queryable fields to get specific results and are returned in the results so you can programatically use these however you need.
Metadata key max length is 64 characters, value max length 512 characters.

Advanced Features#

Filters Parameter#

You can provide an optional filters parameter for each watch to narrow down which products trigger the watch. Filters use the same operators and values as the product search API endpoint.
Supported filter fields:
network.id
merchant.id
direct_url
currency
Important limitations:
Filters are supported for product and barcode watch types
Filters are NOT allowed for ASIN watches
Example:
{
  "filters": [
    {
      "field": "merchant.id",
      "operator": "=",
      "value": "41357"
    },
    {
      "field": "currency",
      "operator": "=",
      "value": "USD"
    }
  ]
}

Amazon ASIN Watch Requirements#

Amazon Creator API Keys Required
Creator API keys are required for watching ASINs. Include your Creator API credentials in the request body using the networks object format (same as search/omni endpoints).
Amazon ASIN Limitations
When watching Amazon ASINs, the following limitations apply:
start_value is required for all rules - without it, start_value will be null and the watch will never trigger
Currently only final_price and regular_price are supported
Use target_type: "asin" for Amazon product watching

Endpoints#

All watch endpoints:
GET /v1/products/watches - Get all product watches
GET /v1/products/watches/{watch_uuid} - Get specific product watch
POST /v1/products/watches - Create product watch
PUT /v1/products/watches/{watch_uuid} - Update product watch
DELETE /v1/products/watches/{watch_uuid} - Delete product watch
GET /v1/products/watches/histories - Get all watch notification histories
GET /v1/products/watches/{watch_uuid}/histories - Get notification history for specific watch

Create Product Watch#

Sets up a new watch for one or more products with specified rules and notification preferences.
POST /v1/products/watches

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token
Content-TypeYesapplication/json

Request Body#

Product ID Watch Example (max 100 product IDs allowed):
{
  "name": "Nike Shoe Price Drop Watch",
  "target_type": "product",
  "target_ids": [
    "9200-us-B01AFOIO3K",
    "8413578780281943353"  // max 100 product ids allowed
  ],
  "status": "active",  // or "paused"
  "rules": [  // max 10 rules allowed
    {
      "field": "final_price",
      "condition": "decrease",
      "start_value": 199.99,
      "threshold": {
        "type": "percentage",
        "value": 50
      }
    },
    {
      "field": "on_sale",
      "condition": "equals",
      "threshold": {
        "type": "value",
        "value": true
      }
    }
  ],
  "notifications": [
    {
      "channel": "webhook",
      "target": "https://example.com/webhooks/watch",
      "frequency": "immediately"
    }
  ],
  "metadata": {  // max 16 pairs allowed
    "key1": "value1",
    "key16": "value16"  // max length for key: 64 chars, max length for value: 512 chars
  },
  "filters": [
    {
      "field": "merchant.id",
      "operator": "=",
      "value": "41357"
    }
  ],
  "expire_timestamp": 1764822840  // optional UNIX timestamp
}

ASIN Watch Example (max 10 ASINs allowed)#

{
  "name": "Amazon Product Price Watch",
  "target_type": "asin",
  "target_ids": [
    "B01AFOIO3K",
    "B09J1TB35S"  // max 10 ASINs allowed
  ],
  "status": "active",  // or "paused"
  "rules": [  // max 10 rules allowed
    {
      "field": "final_price",
      "start_value": 123.99,
      "condition": "decrease",
      "threshold": {
        "type": "percentage",
        "value": 50
      }
    },
    {
      "field": "on_sale",
      "condition": "equals",
      "threshold": {
        "type": "value",
        "value": true
      }
    }
  ],
  "notifications": [
    {
      "channel": "webhook",
      "target": "https://example.com/webhooks/watch",
      "frequency": "immediately"
    }
  ],
  "metadata": {
    "key1": "value1",
    "key16": "value16"
  },
  // "filters": []  // filters are NOT allowed for ASIN watches!
  "expire_timestamp": 1764822840,  // optional UNIX timestamp
  "networks": {
    "amazon": {
      "credential_id": "{your_credential_id}",
      "credential_secret": "{your_credential_secret}",
      "partner_tag": "{your_partner_tag}",
      "locale": "US"
    }
  }
}
ASIN Watches - start_value Required
When creating watches for Amazon ASINs, you must provide a start_value for each rule. Without it, the start_value will be null and the watch will never trigger. Creator API credentials are required in the networks object for ASIN watching (except BTB products).
ASIN Watch Limitations
Filters are NOT allowed for ASIN watches
Max 10 ASINs per watch
Metadata key max length is 64 characters, value max length 512 characters

Barcode Watch Example (only 1 barcode allowed)#

{
  "name": "Nike Shoe Barcode Price Drop Watch",
  "target_type": "barcode",
  "target_ids": [
    "6947681533400"  // only ONE barcode is allowed
  ],
  "status": "active",  // or "paused"
  "rules": [  // only ONE rule allowed for barcode watches
    {
      "field": "final_price",
      "condition": "decrease",
      "threshold": {
        "type": "percentage",
        "value": 10
      }
    }
  ],
  "notifications": [
    {
      "channel": "webhook",
      "target": "https://example.com/webhooks/watch",
      "frequency": "immediately"
    }
  ],
  "metadata": {
    "key1": "value1",
    "key16": "value16"
  },
  "filters": [
    {
      "field": "merchant.id",
      "operator": "=",
      "value": "138553"
    }
  ],
  "expire_timestamp": 1764822840  // optional UNIX timestamp
}
Barcode Watch Limitations
Only ONE barcode is allowed per watch. To track multiple barcodes, create multiple watches.
Only ONE rule is allowed per barcode watch
Filters are supported for barcode watches

Availability Watch#

Availability watches allow you to monitor when products come in or out of stock. There are two ways to configure availability watches:

Availability Watch - Equals/Not Equals Condition#

Monitor for specific availability states:
{
  "name": "In Stock Alert Watch",
  "target_type": "product",
  "target_ids": [
    "8413578780281943353"
  ],
  "rules": [
    {
      "field": "availability",
      "condition": "equals",  // or "not_equals"
      "threshold": {
        "type": "value",  // threshold.type can only be "value" for availability
        "value": "InStock"  // allowed values: "InStock", "OutOfStock", "Unknown"
      }
    }
  ],
  "notifications": [
    {
      "channel": "webhook",
      "target": "https://example.com/webhooks/watch",
      "frequency": "immediately"
    }
  ]
}

Availability Watch - Change Condition#

Monitor for any availability state change (threshold is ignored):
{
  "name": "Availability Change Watch",
  "target_type": "product",
  "target_ids": [
    "8413578780281943353"
  ],
  "rules": [
    {
      "field": "availability",
      "condition": "change"
      // threshold is ignored for "change" condition
    }
  ],
  "notifications": [
    {
      "channel": "webhook",
      "target": "https://example.com/webhooks/watch",
      "frequency": "immediately"
    }
  ]
}
Availability Field
Allowed threshold values when threshold.type is "value":
"InStock"
"OutOfStock"
"Unknown"
Note: The "change" condition does not require a threshold.

Get All Product Watches#

Retrieves all product watches configured for your account.
GET /v1/products/watches

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token

Response#

{
  "meta": {
    "total": `1,
    "from": 1,
    "to": 1,
    "current_page": 1,
    "last_page": 1,
    "per_page": 10,
    "fields": [],
    "trace_id": "f12a3d45-6b78-90c1-2d3e-4f5678901234"
  },
  "data": [
    {
      "watch_id": "9eba92e7-af9a-4877-9a50-b366610fabcd",
      "name": "Smart Home Price Drop Watch",
      "target_id": "8099982740095203709",
      "status": "active",
      "metadata": {
        "category": "electronics",
        "campaign": "summer_sale"
      },
      "rules": [
        {
          "field": "final_price",
          "start_value": 123.99,
          "condition": "decrease",
          "threshold": {
            "type": "percentage",
            "value": 15
          }
        },
        {
          "field": "on_sale",
          "start_value": null,
          "condition": "equals",
          "threshold": {
            "type": "value",
            "value": true
          }
        }
      ],
      "notifications": [
        {
          "channel": "webhook",
          "channel_target": "https://example.com/api/webhook"
        }
      ]
    }
  ]
}

Get Specific Product Watch#

Retrieves details for a specific product watch by its ID.
GET /v1/products/watches/{watch_id}

Path Parameters#

ParameterRequiredDescription
watch_idYesID of the product watch

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token

Response#

{
  "data": {
    "watch_id": "a0b49c91-2eef-4aa1-9b30-4816147680f0",
    "name": "Nike Shoe Price Drop Watch",
    "target_type": "product",
    "target_id": "8099987467386791069",
    "status": "active",
    "metadata": {
      "key1": "value1",
      "campaign": "summer_sale"
    },
    "rules": [
      {
        "field": "final_price",
        "start_value": 199.99,
        "condition": "decrease",
        "threshold": {
          "type": "percentage",
          "value": 50
        }
      }
    ],
    "notifications": [
      {
        "channel": "webhook",
        "channel_target": "https://example.com/webhooks/watch",
        "frequency": "immediately",
        "enabled": true
      }
    ],
    "filters": [
      {
        "field": "merchant.id",
        "operator": "=",
        "value": "41357"
      }
    ],
    "expire_timestamp": 1774751812,
    "created_at": "2025-12-29 02:36:53",
    "last_checked_at": null
  },
  "meta": {
    "trace_id": "019b74ed-15fe-72f5-a0c8-26727cbc0285"
  }
}

Query Watches by Metadata#

Filter watches based on metadata key-value pairs you defined when creating the watch.
GET /v1/products/watches?metadata[key1]=value1

Query Parameters#

You can filter by one or more metadata fields using the format metadata[your_key]=your_value:
Parameter FormatRequiredDescriptionExample
metadata[{key}]NoFilter by metadata key-value pair where {key} is your custom keymetadata[campaign]=summer_sale
Example Queries:
Single metadata filter: /v1/products/watches?metadata[campaign]=summer_sale
Multiple metadata filters: /v1/products/watches?metadata[campaign]=summer_sale&metadata[priority]=high
Category filter: /v1/products/watches?metadata[category]=electronics

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token

Response#

{
  "meta": {
    "total": `1,
    "from": 1,
    "to": 1,
    "current_page": 1,
    "last_page": 1,
    "per_page": 10,
    "fields": [],
    "trace_id": "f12a3d45-6b78-90c1-2d3e-4f5678901234"
  },
  "data": [
    {
      "watch_id": "9eba92e7-af9a-4877-9a50-b366610fabcd",
      "name": "Smart Home Price Drop Watch",
      "target_id": "8099982740095203709",
      "status": "active",
      "metadata": {
        "category": "electronics",
        "campaign": "summer_sale"
      },
      "rules": [
        {
          "field": "final_price",
          "start_value": null,
          "condition": "decrease",
          "threshold": {
            "type": "percentage",
            "value": 15
          }
        },
        {
          "field": "on_sale",
          "start_value": null,
          "condition": "equals",
          "threshold": {
            "type": "value",
            "value": true
          }
        }
      ],
      "notifications": [
        {
          "channel": "webhook",
          "channel_target": "https://example.com/api/webhook"
        }
      ]
    }
  ]
}

Edit Product Watch#

Updates an existing product watch with new parameters. It is the same format as the POST creation
PUT /v1/products/watches/{{watch_id}}

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token
Content-TypeYesapplication/json

Path Parameters#

ParameterRequiredDescription
watch_idYesID of the product watch

Request Body#

{
  "name": "Smart Home Price Alert",
  "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"
  }
}

Response#

{
  "meta": {
    "total": `1,
    "from": 1,
    "to": 1,
    "current_page": 1,
    "last_page": 1,
    "per_page": 10,
    "fields": [],
    "trace_id": "f12a3d45-6b78-90c1-2d3e-4f5678901234"
  },
  "data": [
    {
      "watch_id": "9eba92e7-af9a-4877-9a50-b366610fabcd",
      "name": "Smart Home Price Drop Watch",
      "target_id": "1234567890123456789",
      "status": "active",
      "metadata": {
        "category": "electronics",
        "campaign": "summer_sale"
      },
      "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/webhook"
        }
      ]
    }
  ]
}

Delete Product Watch#

Deletes a specific product watch by its ID.
DELETE /v1/products/watches/{watch_id}

Path Parameters#

ParameterRequiredDescription
watch_idYesID of the product watch

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token

Response#

{
  "status": "deleted",
  "watch_id": "a123b456-c789-4d0e-f123-456789abcdef",
  "meta": {
    "trace_id": "d1e2f3g4-5h6i-7j8k-9l0m-1n2o3p4q5r6"
  }
}

Get Product Watch Notification History#

Retrieves the history of notifications sent for a specific product watch.
GET /v1/products/watches/{watch_id}/histories

Path Parameters#

ParameterRequiredDescription
watch_idYesID of the product watch

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token

Response#

{
  "watch_id": "a123b456-c789-4d0e-f123-456789abcdef",
  "name": "Smart Home Price Drop Watch",
  "target_id": "1234567890123456789",
  "histories": [
    {
      "watch_id": "a123b456-c789-4d0e-f123-456789abcdef",
      "id": "a123b456-c789-4d0e-f123-456789abwxyz",
      "changes": [
        {
          "field": "final_price",
          "old_value": 199.00,
          "new_value": 149.00
        }
      ],
      "notified_at": "2025-02-19T15:30:45Z"
    }
  ],
  "meta": {
    "total_histories": 1,
    "page_size": 20,
    "page": 1
  }
}

Get All Watch Notification Histories#

Retrieves the notification history for watches filtered by metadata.
GET /v1/products/watches/histories?metadata[key1]=value1

Query Parameters#

You must filter by at least one metadata field using the format metadata[your_key]=your_value:
Parameter FormatRequiredDescriptionExample
metadata[{key}]YesFilter by metadata key-value pair where {key} is your custom keymetadata[campaign]=summer_sale
Example Queries:
Single metadata filter: /v1/products/watches/histories?metadata[campaign]=summer_sale
Multiple metadata filters: /v1/products/watches/histories?metadata[campaign]=summer_sale&metadata[priority]=high

Headers#

HeaderRequiredDescription
AuthorizationYesBearer token

Response#

{
  "meta": {
    "total": 1,
    "from": 1,
    "to": 1,
    "current_page": 1,
    "last_page": 1,
    "per_page": 20,
    "trace_id": "f12a3d45-6b78-90c1-2d3e-4f5678901234"
  },
  "data": [
    {
      "watch_id": "a123b456-c789-4d0e-f123-456789abcdef",
      "id": "a123b456-c789-4d0e-f123-456789abwxyz",
      "changes": [
        {
          "field": "final_price",
          "old_value": 199.00,
          "new_value": 149.00
        }
      ],
      "notified_at": "2025-02-19T15:30:45Z"
    }
  ]
}

Rule Types and Conditions#

Rules are the core concept of the watch API. Below is a comprehensive guide to all supported fields, conditions, and threshold types.

Supported Watch Fields by Watch Type#

Watch Typeavailabilityfinal_priceon_salesale_discount
product✓✓✓✓
barcode✓✓✓✓
asin✓✓✓✗

All Available Conditions#

ConditionDescriptionWorks with Threshold?
increaseTriggers when value increases by threshold amount✓
decreaseTriggers when value decreases by threshold amount✓
equalsTriggers when value equals threshold value✓
not_equalsTriggers when value does not equal threshold value✓
greater_thanTriggers when value is greater than threshold✓
less_thanTriggers when value is less than threshold✓
changeTriggers when value has any change✗ (threshold ignored)

Supported Conditions by Field#

Fieldchangeequalsnot_equalsincreasedecreasegreater_thanless_than
availability✓✓✓✗✗✗✗
on_sale✓✓✓✗✗✗✗
sale_discount✓✓✓✓✓✓✓
final_price✓✓✓✓✓✓✓

Supported Threshold Types by Field#

Fieldvaluepercentage
availability✓✗
on_sale✓✗
sale_discount✓✓
final_price✓✓

Allowed Threshold Values by Field#

When threshold.type is "value":
FieldAllowed Values
availability"OutOfStock", "InStock", "Unknown"
on_sale"true", "false"
sale_discountnumeric (float), 0-100 inclusive
final_pricenumeric > 0
When threshold.type is "percentage":
FieldAllowed Values
sale_discount1-100 (%)
final_price1-100 (%)
Change condition does not require a threshold
When using condition: "change", the threshold parameter is ignored.

Notification Channels#

Available Channels#

ChannelDescriptionTarget Format
webhookHTTP POST to specified URLValid URL
Endpoint Verification
When creating a watch with webhook notifications, we will send a test verification packet to your endpoint to ensure it's accessible and properly configured.

Webhook Verification Test#

When you create or update a watch with a webhook notification channel, the system sends a test payload to verify your endpoint is accessible:
{
  "watch_history_id": "uuid-uuid-uuid-uuid",
  "watch_event_type": "product_watch_alert",
  "timestamp": "2026-01-02T19:18:50+00:00",
  "watch_id": "uuid-uuid-uuid-uuid",
  "watch_name": "Test Watch",
  "metadata": {
    "key1": "value1",
    "key16": "value16"
  },
  "details": [
    {
      "id": "abc-123456789",
      "network": {
        "id": 335,
        "name": "Impact US"
      },
      "merchant": {
        "id": 54419,
        "name": "Target"
      },
      "changes": [
        {
          "field": "final_price",
          "old_value": 199,
          "new_value": 149
        },
        {
          "field": "on_sale",
          "old_value": false,
          "new_value": true
        }
      ]
    }
  ]
}
Your endpoint should respond with a 2xx status code to pass verification. If the verification fails, the watch creation/update will be rejected.

Webhook Format (Actual Notifications)#

Watch Check Frequency
Product watches are checked every 6 hours. When a watch rule is triggered, you will receive a notification shortly after the check completes.
Standard Product Change Notification:
When a watch rule is triggered by a product change, you will receive a webhook with the following format:
{
  "watch_history_id": "a0c88d4d-8c49-4257-be33-e7fe8e3b019c",
  "watch_event_type": "product_watch_alert",
  "timestamp": "2026-01-08T00:30:45+00:00",
  "watch_id": "a0c88cfc-7f54-4384-8bde-3f588d703a57",
  "watch_name": "Price Drop Alert Watch",
  "metadata": {
    "key1": "test-campaign"
  },
  "details": [
    {
      "id": "9200-us-B08HC1N3K1",
      "name": "DIFF Reading glasses for Women, Lightweight Oversized Readers Darcy 1.5 designer blue light glasses with magnification, Beige Tortoise",
      "network": {
        "id": 9200,
        "name": "Example Network"
      },
      "merchant": {
        "id": 921239,
        "name": "DIFF Eyewear"
      },
      "changes": [
        {
          "field": "final_price",
          "old_value": "999",
          "new_value": 31.99
        }
      ]
    }
  ]
}
Product Unavailable Notification:
When a product is no longer available in the database, the watch will be automatically removed and you will receive a final notification:
{
  "watch_history_id": "a0c8850f-a945-461e-8cb4-8b022bb6858f",
  "watch_event_type": "product_watch_alert",
  "timestamp": "2026-01-08T00:07:43+00:00",
  "watch_id": "a0c884a5-48e1-48cc-9eb1-ea767df2eb79",
  "watch_name": "Price Drop Alert Watch",
  "metadata": {
    "key1": "test-campaign"
  },
  "details": [
    {
      "id": "9200-us-B0CGKLGRPT",
      "name": "Unknown",
      "network": {
        "id": null,
        "name": "Unknown"
      },
      "merchant": {
        "id": null,
        "name": "Unknown"
      },
      "changes": [
        {
          "field": "__product__",
          "old_value": "available",
          "new_value": "unavailable"
        }
      ]
    }
  ]
}
Metadata in Webhooks
The metadata object in webhook notifications will contain all the key-value pairs you defined when creating the watch. This allows you to programmatically route and process notifications based on your custom metadata fields.

Watch Expiration Notification#

When a watch expires (reaches its expire_timestamp), you will receive a notification through your configured webhook:
{
  "watch_history_id": "a0bea68c-f6ae-4b0a-a980-e6a7cab53c93",
  "watch_event_type": "product_watch_alert",
  "timestamp": "2026-01-03T02:23:06.000000Z",
  "watch_id": "a0bdafe6-1ce0-48a0-9085-b2efc2178a98",
  "watch_name": "Nike Shoe Price Drop Watch",
  "target_id": "39800028808",
  "changes": [
    {
      "field": "__watch__",
      "new_value": "expired",
      "old_value": "active"
    }
  ],
  "metadata": {
    "key1": "value1",
    "campaign": "summer_sale"
  }
}
Field Explanation:
field: "__watch__" - Indicates this is a watch status change (not a product field change)
new_value: "expired" - The watch has reached its expiration timestamp
old_value: "active" - The previous watch status
After receiving an expiration notification, you must create a new watch or update the existing watch with a new expire_timestamp if you want to continue monitoring.
Modified at 2026-03-10 20:47:39
Previous
Barcode to ASIN
Next
Set Product Watch