Dedupe Check
Resolve the dedupe verdict of up to 60 cards inline, in one request.
Owner-scoped (owner = active organization). Returns matches only:
already_imported (exact source id, score 1.0) and duplicate (the
card's image has exactly the perceptual hashes of one of the owner's revision-1
images, score 0.995). Unmatched cards are absent. At most 60 cards per call;
503 when the match exceeds its statement timeout. No job, no polling.
HTTPBearerAuthorizationBearer <token>application/json- body
POST /product-research/dedupe-check — up to 60 cards per request.
max_length bounds one request's inline work (exact source ids + concurrent
image hashing + the owned match); send more cards as several requests of at
most 60.
items?array<>items <= 60Successful Response
application/json- response
POST /product-research/dedupe-check — the full verdict in one response.
results folds the exact source-id hits (already_imported, score
1.0) and the perceptual-hash duplicate matches (score 0.995) into
one per-card list holding matches only,
keyed by product_id. There is no job handle and no polling — the whole
page resolves in this single request.
intra_list_duplicates is the orthogonal within-page dedup: cards that
match an earlier card in the same page (not the catalogue). A card can appear
in both lists.
results?array<>intra_list_duplicates?array<>curl -X POST 'https://app.copyhero.app/api/v1/product-research/dedupe-check' \ -H 'Content-Type: application/json' \ -d '{}'{ "results": [ { "product_id": "string", "band": "already_imported", "matched_internal_product_id": "8bd3f9b9-2404-487c-86f5-b16763986167", "score": 0 } ], "intra_list_duplicates": [ { "product_id": "string", "duplicate_of_product_id": "string", "score": 0, "reason": "source_id" } ]}Competitor Trends Graph GET
Competitor publish rate for ``keyword`` over the same last-90-days window as ``/trends`` — 13 weekly buckets of how many semantically matching products the caller's SUBSCRIBED watched stores listed. Aggregates only (no product ids); no subscription → an all-zero response, never an error.
Keyword Trends Graph GET
Google Trends interest-over-time (last 3 months) via DataForSEO.