POST /api/v2/buyer/discovery/{discoveryId}/products
Adds products to the session selection. Each product must already have been surfaced by Discover products or Browse products — pass the productId, salesAgentId, groupId, and groupName from those results. Optionally pin a budget, pricing option, or bid. By default products merge into the existing selection; set replace: true to swap the whole set.
Request
Parameters
| Field | Type | Required | Notes |
|---|---|---|---|
products | array | Yes | Products to add (min 1) |
products[].productId | string | Yes | Product ID from the discovery results |
products[].salesAgentId | string | Yes | Sales agent the product came from |
products[].groupId | string | Yes | Group the product was discovered in |
products[].groupName | string | Yes | Name of that group |
products[].pricingOptionId | string | No | Pricing option ID from the product’s pricingOptions |
products[].bidPrice | number | No | Bid for non-fixed options (isFixed: false); read from pricingOptions[].rate or floorPrice |
products[].budget | number | No | Budget allocation for this product |
replace | boolean | No | When true, replaces all existing products instead of merging |
Response
Errors
400 VALIDATION_ERROR— emptyproducts, missing a required selection field, or aproductIdnot present in the session’s discovery results.404 NOT_FOUND—discoveryIddoes not exist or is not visible to the authenticated customer.
Related
Discovery overview
Selection model and budget allocation
Get products
List the current selection
Remove products
Drop products from the selection
Apply proposal
Add a whole proposal at once