Select pairs
Rows always use
match_id ASC ordering. This endpoint has no public sort parameter or observation-date filter.
needs_review means the pair currently requires review; auto means it meets the automatic review policy; approved means it is currently approved; rejected means it has been rejected or manually removed. These are review-workspace statuses. They do not by themselves establish whether a price qualifies for downstream pricing inputs.
Read identity and decisions
Each entry inmatches contains its stable match_id, current version, rg_item_id and competitor_product_id, plus the item details, competitor, listing URL, relation, method, confidence, manual flag and review metadata. Item details come from the catalog used by the review workspace. Observations and confidence may be null.
competitor.id is the registry ID when available. Legacy rows may have a null ID; use the returned canonical competitor.domain to identify and filter those rows. Display names can change and are not identifiers.
Decision timestamps include a timezone offset. Missing legacy decision metadata stays unknown; observation time and
matched_at do not stand in for decision time.
match.is_manual includes explicit human intent such as approving an automatically produced link. It does not prove the original match was created manually. A rematch leaves the old pair readable as rejected and exposes the replacement with its actual link-add metadata. Do not transfer the old pair’s approval to the replacement.
Follow pages and reconcile changes
The response includesexternal_org_id, matches, total, counts, next_cursor and has_more:
countsalways containsneeds_review,auto,approvedandrejected, including zeroes. Counts apply the item and competitor filters but omit the selected status filter.totalis the count after applying the status filter, or the sum of all four counters when no status is selected.- Counts and totals cover the complete selection, independently of the current page and cursor.
- When
has_moreis true, request the returnednext_cursor. A final page hashas_more: falseandnext_cursor: null.
cursor when reconciling subsequent reviewer decisions; latest_decided_at is not a synchronization checkpoint.
Cursors are bound to the organization, catalog generation and selection. A catalog-generation change returns 409; restart without a cursor. Ordinary review decisions and observation updates do not require a traversal restart. Invalid, altered or mismatched cursors are rejected. Invalid query values return 422; missing, invalid or revoked API keys return 401. An unavailable upstream workspace returns an error rather than an empty success. Existing usage limits apply.
For an upload reconciliation example, see Matching uploads.
