Skip to main content
A message has a role (user or assistant) and a list of parts. Parts are the blocks your UI renders — text, an image the shopper sent, or product cards from a catalog tool.

What the shopper sends

User parts are text and image. You can send either, or both.
image.url accepts a data: URL or a public https:// URL. data: URIs are uploaded and rewritten server-side. If you send only an image, Channel3 finds the products in it (same as Find products in the image.).

What the agent sends

Assistant parts are text and tool. A tool part is one catalog call. Buy URLs already carry your affiliate tracking. The Product objects are the same type as the Search API. tool_name is search_products, show_products, compare_products, or image_search. The model may also run an internal lookup (lookup_products) that never appears in your UI. For search_products, show_products, and compare_products, render output.products as product cards.
image_search runs when the shopper sends a photo. Render output.things the same way as find-products-in-image: one heading per thing and a product rail from that group’s matches. There is no top-level products list on this tool.
The assistant message may also include suggestions: tap-ready follow-ups for your UI, like “in brown instead”.