Curie Products API

The Products API from Curie — 6 operation(s) for products.

OpenAPI Specification

curie-products-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: Curie 3D Product Commerce Catalog Products API
  description: Search and discover products across thousands of Shopify stores with interactive 3D models. Browse by category, brand, or keyword. Products with 3D models can be viewed using GLB and USDZ formats. Requires Curie Pro subscription for full access.
  version: 2.0.0
  contact:
    name: Curie Vision
    email: support@curie.co
    url: https://curie.io
servers:
- url: https://chat.curie.app
  description: Curie Shopify App (unified catalog + OAuth)
- url: https://curie-api.curievision.workers.dev
  description: Curie Cloudflare Worker API (legacy product endpoints)
security:
- oauth2: []
tags:
- name: Products
paths:
  /api/products:
    get:
      operationId: searchProducts
      summary: Search products by name, brand, or category
      description: List and filter products from the catalog. Supports text search, brand filtering, pagination, and filtering by 3D model availability. Returns product metadata including images, prices, and 3D model URLs.
      parameters:
      - name: q
        in: query
        schema:
          type: string
        description: Search query to match against product name, brand, description, or SKU
        example: wireless headphones
      - name: limit
        in: query
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 100
        description: Maximum number of products to return
      - name: page
        in: query
        schema:
          type: integer
          default: 1
          minimum: 1
        description: Page number for pagination
      - name: pageSize
        in: query
        schema:
          type: integer
          default: 20
          minimum: 1
          maximum: 100
        description: Number of products per page
      - name: brand
        in: query
        schema:
          type: string
        description: Filter by brand name
        example: Sony
      - name: category
        in: query
        schema:
          type: string
        description: Filter by product category
        example: Electronics
      - name: hasProductionGradeModel
        in: query
        schema:
          type: boolean
        description: When true, only return products that have high-quality 3D models available for viewing
      responses:
        '200':
          description: List of products matching the query
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                  total:
                    type: integer
                    description: Total number of matching products
                  page:
                    type: integer
                  pageSize:
                    type: integer
                  hasMore:
                    type: boolean
                    description: Whether more pages of results exist
      tags:
      - Products
  /api/products/{productId}:
    get:
      operationId: getProduct
      summary: Get detailed product info including 3D model URLs
      description: Retrieve full details for a single product by ID. Includes all metadata, images, 3D model URLs (GLB and USDZ), pricing, and vendor links.
      parameters:
      - name: productId
        in: path
        required: true
        schema:
          type: string
        description: Unique product identifier (UUID)
      responses:
        '200':
          description: Full product details
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Product'
        '404':
          description: Product not found
          content:
            application/json:
              schema:
                type: object
                properties:
                  error:
                    type: string
                    example: Product not found
      tags:
      - Products
  /api/products/search:
    get:
      operationId: searchProductsFull
      summary: Full-text search with relevance scoring
      description: Perform a full-text search across all product fields with relevance-based ranking. More powerful than the basic /api/products query parameter. Use this for natural language product searches.
      parameters:
      - name: q
        in: query
        required: true
        schema:
          type: string
        description: Search query. Supports natural language like 'ergonomic standing desk under $500'
        example: wireless noise-canceling headphones
      - name: size
        in: query
        schema:
          type: integer
          default: 10
          minimum: 1
          maximum: 50
        description: Number of results to return
      responses:
        '200':
          description: Search results ranked by relevance
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                  total:
                    type: integer
                  query:
                    type: string
                    description: The search query that was executed
      tags:
      - Products
  /api/products/{productId}/related:
    get:
      operationId: getRelatedProducts
      summary: Get products related to a specific product
      description: Find products similar or related to a given product. Uses brand, category, and attribute matching to suggest alternatives and complementary items.
      parameters:
      - name: productId
        in: path
        required: true
        schema:
          type: string
        description: Product ID to find related products for
      responses:
        '200':
          description: List of related products
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
                  sourceProductId:
                    type: string
        '404':
          description: Source product not found
      tags:
      - Products
  /api/products/featured:
    get:
      operationId: getFeaturedProducts
      summary: Get featured products with 3D models
      description: Retrieve a curated list of featured products that have high-quality 3D models and are popular or noteworthy.
      responses:
        '200':
          description: List of featured products
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
      tags:
      - Products
  /api/products/new-arrivals:
    get:
      operationId: getNewArrivals
      summary: Get newest products added to the catalog
      description: Retrieve the most recently added products, sorted by creation date (newest first).
      responses:
        '200':
          description: List of newest products
          content:
            application/json:
              schema:
                type: object
                properties:
                  products:
                    type: array
                    items:
                      $ref: '#/components/schemas/Product'
      tags:
      - Products
components:
  schemas:
    Product:
      type: object
      properties:
        id:
          type: string
          description: Unique product identifier (UUID)
        title:
          type: string
          description: Product display name
        productName:
          type: string
          description: Alternative product name field
        brand:
          type: string
          description: Brand name
        displayPrice:
          type: string
          description: Formatted price string (e.g. '$180')
        productCategory:
          type: string
          description: Product category (e.g. Electronics, Apparel, Home & Garden)
        gender:
          type: string
          description: Target gender (e.g. Men, Women, Unisex)
        sku:
          type: string
          description: Product SKU / style code
        genAiDescription:
          type: string
          description: AI-generated product description
        imageUrl:
          type: string
          format: uri
          description: Primary product image URL
        hasProductionGradeModel:
          type: boolean
          description: Whether this product has a high-quality 3D model available
        reconstructionModelGlb:
          type: string
          format: uri
          description: URL to GLB 3D model file (for web 3D viewers)
        reconstructionModelUsdz:
          type: string
          format: uri
          description: URL to USDZ 3D model file (for Apple AR Quick Look)
        reconstructionUrl:
          type: string
          format: uri
          description: Alternative GLB model URL
        reconstructionUrlUsdz:
          type: string
          format: uri
          description: Alternative USDZ model URL
        premierVendor:
          type: object
          description: Primary retailer for this product
          properties:
            shop_name:
              type: string
            link:
              type: string
              format: uri
            price:
              type: string
        affiliateLinks:
          type: array
          description: Purchase links from various retailers
          items:
            type: object
            properties:
              shop_name:
                type: string
              url:
                type: string
                format: uri
              price:
                type: string
        storeName:
          type: string
          description: Name of the Shopify store this product belongs to
        storeId:
          type: string
          description: ID of the store this product belongs to
        createdAt:
          type: string
          format: date-time
          description: When the product was added to the catalog
        updatedAt:
          type: string
          format: date-time
          description: When the product was last updated
  securitySchemes:
    oauth2:
      type: oauth2
      description: OAuth 2.0 authorization code flow. Requires Curie Pro subscription.
      flows:
        authorizationCode:
          authorizationUrl: https://chat.curie.app/api/oauth/authorize
          tokenUrl: https://chat.curie.app/api/oauth/token
          scopes:
            read:products: Search and view products in the catalog