---
title: "Pro: watch codes and get a webhook when a rate or China status changes"
method: GET
path: "/api/watch"
tags: ["Dutyfinch"]
---

# Pro: watch codes and get a webhook when a rate or China status changes

`GET /api/watch`

## Request

- Base URL: `https://dutyfinch.cybermaxtools.com`
- URL: `https://dutyfinch.cybermaxtools.com/api/watch`
- Auth: one of:
  - none
  - API key in header `x-api-key`
  - HTTP bearer

Pro plan. GET lists your watched codes, baselines and recent alerts. POST {"codes": ["8516.60.40", ...], "webhook": "https://your.app/hook"} adds codes (up to 100); {"replace": true} replaces the list; {"test": true} sends a test webhook; {"remove": ["8516.60.40"]} removes codes and {"remove": "all"} removes the watch. Alerts are POSTed as JSON: event tariff_change, code, changes [{field, before, after}], release, detectedAt.

## Response `200`

Results (same field names as the bulk version's dataset records) plus the free-tier limits.

- object

## Other responses

- `400`: Invalid input
- `401`: Invalid or revoked API key
- `429`: Free tier used up (50/day per IP) or rate/plan limit reached; the body has an upgrade link.
- `504`: Took too long; ask for fewer items

---

[API](https://skmtc.dev/cybermaxtools/apis/dutyfinch-api.md) · [All operations](https://skmtc.dev/cybermaxtools/apis/dutyfinch-api/llms.txt) · [OpenAPI document](https://skmtc.dev/cybermaxtools/apis/dutyfinch-api/revisions/e333c51ba697?raw)
