List price watches
Every watch on the account, and how many the plan allows.
Not paged. The example was captured on our own account, which has no allowance, so allowance is null; on a plan it is the plan's number.
Response
200 The watches.
| Field | Type | Description |
|---|---|---|
| data | Watch[] (Watch reference) | The watches. |
| meta | object | Totals. |
| meta.totalCount | integer | Watches held. |
| meta.allowance | integer | null | Watches the plan allows. |
Examples
Real responses from the production API, recorded on 2026-09-24 by the script that also checks every field above against them. Arrays are shown in full.
All watches
curl "https://api.tcggraph.com/v1/watches" \
-H "Authorization: Bearer $TCGGRAPH_API_KEY"const response = await fetch("https://api.tcggraph.com/v1/watches", {
headers: {
Authorization: `Bearer ${process.env.TCGGRAPH_API_KEY}`,
},
});
const body = await response.json();
if (!response.ok) throw new Error(`${body.error.code}: ${body.error.message}`);import os
import requests
response = requests.get(
"https://api.tcggraph.com/v1/watches",
headers={"Authorization": f"Bearer {os.environ['TCGGRAPH_API_KEY']}"},
)
body = response.json()
response.raise_for_status()200 · X-Credits-Cost: 0
{
"data": [
{
"id": "c245e388-33da-446a-89b1-b6afc908cf05",
"cardId": "pkm_sv3pt5_6",
"source": "cardmarket",
"finish": "foil",
"listType": "retail",
"currency": "EUR",
"direction": "below",
"thresholdCents": 2000,
"threshold": 20,
"lastFiredAt": null,
"createdAt": "2026-09-24T07:47:45.432Z"
},
{
"id": "37f6d8df-ac25-438c-90a8-7cfd63892f80",
"cardId": "pkm_sv3pt5_6",
"source": "cardmarket",
"finish": "foil",
"listType": "retail",
"currency": "EUR",
"direction": "above",
"thresholdCents": 10000,
"threshold": 100,
"lastFiredAt": null,
"createdAt": "2026-09-24T07:47:45.687Z"
}
],
"meta": {
"totalCount": 2,
"allowance": null
}
}Errors
Every error has the same body; switch on error.code. Any endpoint can also answer 401, 402, 403 or 429 for reasons of key, plan or rate; those are on Errors.