openapi: 3.1.0 info: title: Curie 3D Product Commerce Catalog 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: Catalog paths: /api/catalog/search: get: operationId: searchCatalog summary: Search the unified product catalog across all stores description: Search products across all connected Shopify stores. Supports natural language queries, brand filtering, category filtering, and pagination. Returns products with images, prices, 3D model availability, and store information. security: - oauth2: - read:products parameters: - name: q in: query required: true schema: type: string description: Search query. Supports natural language like 'ergonomic office chair' or 'vintage leather bag' example: wireless noise-canceling headphones - name: limit in: query schema: type: integer default: 10 minimum: 1 maximum: 50 description: Maximum number of results to return - name: page in: query schema: type: integer default: 1 minimum: 1 description: Page number for pagination - 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: has3dModel in: query schema: type: boolean description: When true, only return products with interactive 3D models responses: '200': description: Search results from the unified catalog 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 limit: type: integer hasMore: type: boolean description: Whether more pages of results exist query: type: string description: The search query that was executed '401': description: Authentication required (Curie Pro subscription needed) tags: - Catalog 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