Get Universe Own Overlay
The viewer's OWN products placed into the active GLOBAL layout, read-time
(kNN-average against placed watchlist points) — the toggle-able own-products
overlay. Each point id is the internal_product_id (deliberate — see
module docstring). No active layout → an empty overlay (version_id = ""),
never a 404; the counts surface the placement funnel and the OVERLAY_MAX
cap.
HTTPBearerAuthorizationBearer <token>Successful Response
application/json- response
The viewer's OWN products projected onto the active GLOBAL layout — the
per-owner READ-TIME overlay, computed on demand against the shared layout and
NOT baked into it (the global geometry stays owner-agnostic). No active
layout → an empty overlay (version_id = "", empty points, all counts
0), never a 404. The counts surface the full placement funnel and the
OVERLAY_MAX truncation (no silent cap).
version_id*Version Idpoints*array<>n_placed*N Placedn_own_total*N Own Totaln_unembedded*N Unembeddedn_unplaceable*N Unplaceablecurl -X GET 'https://app.copyhero.app/api/v1/watchlist/universe/overlay/own'{ "version_id": "string", "points": [ { "id": "string", "title": "string", "pos": [ 0 ], "ts": 0 } ], "n_placed": 0, "n_own_total": 0, "n_unembedded": 0, "n_unplaceable": 0}Get Cluster Products GET
List the watchlist products in one active-layout cluster across ALL of the viewer's subscribed stores — ONE row per vendor (a product watched via N stores yields N rows), plus the cluster's ``cluster_label``/``cluster_color`` (``None`` when ``cluster_key`` isn't in the active layout). No subscription / no active layout → both ``None`` and empty data (count 0), never a 404.
Get Universe Product GET
Click-detail for one universe point, addressed by ``internal_product_id`` (deliberate — see module docstring). 404 when the viewer has no live subscription to the product's store, or no such product exists.