POST /v1/products/omni to search Amazon and your affiliate product database simultaneously in a single request. Rather than calling the Amazon API and your affiliate database separately and merging the results yourself, this endpoint aggregates both sources and returns a unified response.
Advantages
- Single call — one request retrieves Amazon results and affiliate database results together
- Flexible criteria — search by ASIN, product URL, barcode, keyword, or broad
anyfield - Advanced filtering — apply precise field-level filters on top of any criteria type
- Grouped responses — use
group_byto receive results organized by each search criteria item
Request
Endpoint:POST /v1/products/omni
Headers
string
required
Must be
application/json.string
required
Your API key as a Bearer token:
Bearer {your_api_key}.Body parameters
array
required
An array of search criteria objects. Each object specifies a See Criteria fields below for details on each option.
field and value. Only one criteria type is permitted per query.Supported fields: asin, url, barcode, keyword, any.object
Network-specific configurations. When omitted, Amazon
commission_url values contain @@@ and ### placeholders. When provided, the API substitutes your IDs automatically.For Amazon results, provide your Creator API credentials under the "amazon" key:locale maps to the marketplace (e.g., US, GB, DE, CA, JP). Other networks that require additional fields:array
Advanced filtering applied on top of the See Filter fields and operators for all supported fields.
criteria search. Each filter object requires field, operator, and value.array | string
Fields to include in each product object. Pass an array of strings or a comma-separated string.
integer
default:"100"
Results per page. Minimum
1; maximum depends on your subscription plan.integer
Page number for pagination. Minimum
1.string
Cursor for deep pagination beyond 10,000 results. Use the
after value from the previous response’s meta object.boolean
default:"false"
By default,
meta.total does not count past 10,000 matches — if there are more, it reports 10000. Set to true for the precise count instead; this runs an extra query, so expect a bit of added latency.string
Sort field. Accepted values:
relevance, criteria_url, barcode, ean, gtin, name, currency, regular_price, final_price, sale_discount, stock_quantity, brand, category, network.name, merchant.name. Any other value returns 422.Omni’s sortable set is narrower than the one on POST /v1/products. These values are accepted there but return 422 here: id, upc, isbn, asin, commissionable_status, color, gender, size, author, network.id, merchant.id, added_at, updated_at. Use the .name form of the relationship sorts, not .id.criteria_url is a virtual, Omni-only value — it resolves to relevance at the query layer, but places the products matched directly off your url criteria ahead of the barcode-expansion results. This placement only applies to page 1; page 2 onward returns only the barcode-expansion continuation results.string
Sort direction:
asc or desc.string
Group results by a criteria index. Use
"criteria.0" to group by the first (and typically only) criteria item — useful when searching multiple ASINs and wanting results organized per ASIN. Use "none" (default) for a flat, ungrouped list.string[]
Explicit list of network IDs to include in results.
string[]
Explicit list of merchant IDs to include in results.
string[]
Network IDs to exclude from results.
string[]
Merchant IDs to exclude from results.
object
Optional configurations for supported third-party services. Each key is a service identifier and maps to a service-specific config object.Shopnomix — pass your
campaign_id to have the API populate urls.shopnomix with a ready-to-use Shopnomix link:string
Bare ULID of a pool belonging to the authenticated team (the
pool_-prefixed form returns 422). The pool’s networks and merchants are combined with any explicitly passed filter values. Only one pool_id may be passed per request. Returns 422 if the pool does not exist or belongs to another team.string
Remove duplicate results based on field values. Two syntaxes:Comma (AND) — each field is applied independently; OR — drop a result if either field has already appeared. At most 2 fields, no Invalid combinations return
[N] caps results per unique value.[N] limits, cannot mix with comma syntax. total is an estimated upper bound.422. Supported fields: name, image_url, direct_url, barcode, merchant.id.array
Retrieve aggregated statistics about the result set. Supported values:
final_price, network, merchant.boolean
default:"false"
When
true, replaces your sub-ID with a click_id for consolidated reporting.Criteria fields
You can pass multiple values to a single criteria using
|| (logical OR), for example "B07QK2SPP7||B08N5WRWNW" for ASINs. Case-sensitive fields (barcode, sku, mpn, asin) must match exactly.Filter fields and operators
Thefilter array supports a rich set of fields and operators for precise result refinement.
Operator reference:
Response
A successful request returnsmeta, an optional facets object, a data array, and a links object.
meta object
facets object
Only present when you include the facets parameter.
Use
final_prices to drive price range sliders. Use networks and merchants to build filter checkbox lists showing only options that have matching results.
data array
When group_by is "none" (default), data is a flat array of product objects identical in structure to the /v1/products search response, with the addition of added_at.
When group_by is "criteria.0", each item in data has this shape:
links object
Product object
Product objects contain the same fields as the/v1/products response, plus one additional field:
Amazon ASIN limitations
- Maximum 10 ASINs per request (use
||to separate them in thevaluestring) - Amazon results require Creator API credentials in the
networksobject under the"amazon"key - For watches, include
start_valuein the criteria object