> ## Documentation Index
> Fetch the complete documentation index at: https://docs.zaymo.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get Products

> Retrieve product information for in-email product blocks. This endpoint should support two modes:

- **Without `email` parameter**: Return all available products. These are your general/default product recommendations shown to any customer.
- **With `email` parameter**: Return personalized products tailored to the specific customer. Use the customer's purchase history, preferences, or any other data to curate a relevant product list.

In both cases, the response format is the same — only the product selection should differ.



## OpenAPI

````yaml /openapi.json get /zaymo/upsells/products
openapi: 3.0.1
info:
  title: Zaymo Custom Integration API
  description: >-
    API for managing product upsells, customer interactions, and custom actions
    in email campaigns
  license:
    name: MIT
  version: 1.0.0
servers:
  - url: https://api.your-domain.com/example/
security:
  - apiKeyAuth: []
tags:
  - name: Upsells
    description: Endpoints for managing product upsells in emails
  - name: Customer Portal
    description: Endpoints for customer subscription management portal
  - name: Swap Up
    description: Endpoints for swapping a customer's current subscription product
  - name: Reactivate
    description: Endpoints for reactivating cancelled subscriptions
  - name: Custom Actions
    description: Endpoints for executing custom actions from email buttons
  - name: Discounts
    description: Endpoints for retrieving discount information
paths:
  /zaymo/upsells/products:
    get:
      tags:
        - Upsells
      summary: Get Products
      description: >-
        Retrieve product information for in-email product blocks. This endpoint
        should support two modes:


        - **Without `email` parameter**: Return all available products. These
        are your general/default product recommendations shown to any customer.

        - **With `email` parameter**: Return personalized products tailored to
        the specific customer. Use the customer's purchase history, preferences,
        or any other data to curate a relevant product list.


        In both cases, the response format is the same — only the product
        selection should differ.
      parameters:
        - name: email
          in: query
          description: >-
            The email address of the customer opening the email. When this
            parameter is provided, the endpoint should return personalized
            product recommendations tailored to this specific customer (e.g.,
            based on their purchase history or preferences). When omitted, the
            endpoint should return all available products as general
            recommendations suitable for any customer.
          required: false
          schema:
            type: string
            format: email
      responses:
        '200':
          description: Successful response with product list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductsResponse'
        '401':
          description: Authentication error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
components:
  schemas:
    ProductsResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          description: Indicates if the request was successful
        data:
          type: object
          required:
            - products
          properties:
            products:
              type: array
              items:
                $ref: '#/components/schemas/Product'
    Error:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          example: false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
              description: Error code identifier
            message:
              type: string
              description: Human-readable error message
    Product:
      type: object
      required:
        - id
        - title
        - price
        - images
      properties:
        id:
          type: string
          description: Unique identifier for the product
        title:
          type: string
          description: Name or title of the product
        price:
          type: number
          format: float
          description: Price of the product before any discounts
          example: 29.99
        compare_at_price:
          type: number
          format: float
          description: Strike through price to be shown with product
          example: 39.99
        images:
          type: array
          items:
            type: string
            format: uri
          description: Array of image URL strings for the product
        description:
          type: string
          description: Optional description of the product
  securitySchemes:
    apiKeyAuth:
      type: apiKey
      in: header
      name: X-Zaymo-API-Key
      description: Zaymo will authenticate requests using the API key you provide

````