Bowmark AIdocs

Vessi

Vessi's live Shopify catalog (every style, colorway, size, price and stock) plus its own per-style fit-guide — a size-offset recommendation computed from…

Vessi's live Shopify catalog (every style, colorway, size, price and stock) plus its own per-style fit-guide — a size-offset recommendation computed from real return/exchange volume for that exact style, not a static chart — off the storefront's own live data rather than a generic guess.

Domain: vessi.com

Also known as: Vessi, Vessi Footwear, vessi.com

Call it directly

bowmark.providers.vessi.listProducts(productType?: string): Promise<VessiProduct[]>
bowmark.providers.vessi.searchProducts(query: string): Promise<VessiProduct[]>
bowmark.providers.vessi.getProduct(handle: string): Promise<VessiProduct>
bowmark.providers.vessi.getFitGuide(handle: string): Promise<VessiFitGuide | null>

Functions

FunctionWhat it does
listProductsLists every Vessi product from the storefront's own live catalog — colorways, sizes, live prices and stock.
searchProductsSearches the live catalog by a fuzzy match on product title or handle, e.g. "weekend classic" or "tidal sneaker".
getProductReads one product's complete colorway x size grid with live price, SKU and availability — a handle, e.g. "womens-weekend-classic-marble-white". THROWS on an unrecognized handle, naming…
getFitGuideReads Vessi's own computed fit-guide for one style — a size-offset recommendation per foot profile (standard/wide/narrow/between), each backed by that style's real return/exchange data (a…

Types

// Vessi's OWN shapes — not a capability contract.

interface VessiVariant {
  productHandle: string;
  productTitle: string;
  colorway: string;
  size: string;
  sku: string;
  price: number;
  priceFormatted: string;
  available: boolean;
}

interface VessiProduct {
  handle: string;
  title: string;
  productType: string;   // "Shoes" | "Bags" | "Socks" | "Gloves" | "Hats" | "Clothing"
  url: string;
  colorways: string[];
  sizes: string[];
  priceRange: { min: number; max: number };
  variants: VessiVariant[];
}

interface VessiFitGuide {
  productHandle: string;
  colorwayName: string;
  styleDirection: string;         // e.g. "snug"
  introCopy: string;              // the site's own plain-language fit summary
  chips: string[];                // e.g. ["whole_sizes_only", "Slightly snug"]
  sizeChart: { gender: string; headers: string[]; rows: string[][] };
  // keyed by foot profile, e.g. "standard" | "wide" | "narrow" | "between"
  recommendations: Record<string, { offsetSizes: number; reason: string }>;
  returnData: {
    snugPct: number;
    loosePct: number;
    otherPct: number;
    ratioLabel: string;    // e.g. "2.2 to 1"
    window: string;        // e.g. "H1 2026 · current (gendered) SKUs"
    returnedUnits: number; // e.g. 4826
  };
}

Examples

// The goal-flow: read Vessi's own real fit recommendation, not a static chart.
const fitGuide = await bowmark.providers.vessi.getFitGuide("womens-weekend-classic-marble-white");
return {
  advice: fitGuide?.introCopy,
  wideFootOffset: fitGuide?.recommendations.wide?.offsetSizes,
  returnedUnitsThisWindow: fitGuide?.returnData.returnedUnits,
};
// Find a style, then check the exact size/color it's in stock in.
const matches = await bowmark.providers.vessi.searchProducts("weekend classic");
const product = await bowmark.providers.vessi.getProduct(matches[0]!.handle);
return { colorways: product.colorways, sizes: product.sizes, priceRange: product.priceRange };