API reference / Collectors
5 operations.
/api/v1/insights/alertsPrice alerts with the estimates they watch, and wishlist targets.
collector.listPriceAlerts()insights:read(API keys are coming soon)If-None-MatchX-Request-IdThe collector’s price alerts, and their wishlist targets.
currencystringrequiredThe collector’s preferred currency (new alerts use it).
availablebooleanrequiredFalse until price alerts are set up on this deployment.
limitintegerrequiredtargetsarray of objectrequireditemIdstring (uuid)requiredissueIdstring (uuid)requirededitionIdstring (uuid) or nullrequiredseriesTitlestring or nullrequiredissueNumberstring or nullrequiredcoverUrlstring (uri) or nullrequiredtargetCentsintegerrequiredcurrencystringrequiredISO 4217 code, e.g. USD.
minGradenumber or nullrequiredunauthorized: Not signed in (no session or token, or an expired one).
internal: Something went wrong on our side (quote the requestId).
curl 'https://collection.id/api/v1/insights/alerts' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.listPriceAlerts();/api/v1/insights/alertsWatch an issue’s estimate for a grade band; tell me when it goes below or above a target.
collector.createPriceAlert()insights:write(API keys are coming soon)Idempotency-KeyX-Request-Idobject
issueIdstring (uuid)requirededitionIdstring (uuid) or nullrequiredgradedbooleanrequiredbandIdenumrequiredOne of9.8+9.0-9.67.0-8.54.0-6.5under-4
directionenumrequiredOne ofbelowabove
targetCentsintegerrequiredat most 100000000currencystringoptionaldefault "USD"notestring or nulloptionalat most 300 characterscooldownDaysintegeroptional1–90 · default 7sourceItemIdstring (uuid) or nulloptionalobject
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
invalid_idempotency_key: The Idempotency-Key isn’t 1–255 visible ASCII characters.
unauthorized: Not signed in (no session or token, or an expired one).
feature_required: The plan doesn’t include this (details.feature names it).
idempotency_in_progress: The first request with this key is still running.
idempotency_key_reused: This key was used for a different request.
internal: Something went wrong on our side (quote the requestId).
curl -X POST 'https://collection.id/api/v1/insights/alerts' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.createPriceAlert({ body: { … } });/api/v1/insights/alerts/{id}Delete one of your price alerts. Another collector’s alert, or one already gone, is a 404.
collector.deletePriceAlert()insights:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
ok"true"requiredunauthorized: Not signed in (no session or token, or an expired one).
not_found: Nothing at that address.
internal: Something went wrong on our side (quote the requestId).
curl -X DELETE 'https://collection.id/api/v1/insights/alerts/<id>' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.deletePriceAlert({ path: { id } });/api/v1/insights/alerts/{id}The target, direction, note, cool-down, or pause and resume.
collector.updatePriceAlert()insights:write(API keys are coming soon)X-Request-Id| Name | In | Type | About |
|---|---|---|---|
idrequired | path | string (uuid) |
object
directionenumoptionalOne ofbelowabove
targetCentsintegeroptionalat most 100000000notestring or nulloptionalat most 300 charactersisActivebooleanoptionalcooldownDaysintegeroptional1–90object
invalid_request: The query or body doesn’t match the schema (see errors[]).
invalid_json: The body isn’t JSON.
unauthorized: Not signed in (no session or token, or an expired one).
feature_required: The plan doesn’t include this (details.feature names it).
not_found: Nothing at that address.
internal: Something went wrong on our side (quote the requestId).
curl -X PATCH 'https://collection.id/api/v1/insights/alerts/<id>' \
-H "Authorization: Bearer $COLLECTOR_TOKEN" \
-H 'Content-Type: application/json' \
-d @body.jsonawait collector.updatePriceAlert({ path: { id }, body: { … } });/api/v1/insights/alerts/previewWhat an alert would watch right now: the current estimate and the issue’s editions.
collector.previewPriceAlert()insights:read(API keys are coming soon)If-None-MatchX-Request-Id| Name | In | Type | About |
|---|---|---|---|
issuerequired | query | string (uuid) | The issue. |
editionoptional | query | "none" or string (uuid) | An edition, or none for the issue’s pool. |
gradedoptional | query | enum | 1 for slabbed copies, 0 for raw.One of 0, 1default "1" |
bandrequired | query | enum | One of 9.8+, 9.0-9.6, 7.0-8.5, 4.0-6.5, under-4 |
What an alert would watch right now.
currentobject or nullrequiredvalueCentsintegerrequiredlowCentsinteger or nullrequiredhighCentsinteger or nullrequiredcurrencystringrequiredISO 4217 code, e.g. USD.
methodstringrequiredsampleSizeintegerrequiredconfidenceLabelenum or nullrequiredOne oflowfairgoodstrong
updatedAtstring (date-time) or nullrequirededitionsarray of objectrequiredidstring (uuid)requirednamestringrequiredsubjectobjectrequiredseriesTitlestring or nullrequiredseriesSlugstring or nullrequiredstartYearinteger or nullrequiredissueNumberstring or nullrequiredissueSlugstring or nullrequiredcoverUrlstring (uri) or nullrequirededitionNamestring or nullrequiredinvalid_request: The query or body doesn’t match the schema (see errors[]).
unauthorized: Not signed in (no session or token, or an expired one).
not_found: The issue isn’t in the catalog.
internal: Something went wrong on our side (quote the requestId).
curl 'https://collection.id/api/v1/insights/alerts/preview' \
-H "Authorization: Bearer $COLLECTOR_TOKEN"await collector.previewPriceAlert({ query: { … } });