{
  "name": "256M Watch Insurance Quote API",
  "version": "1.1",
  "description": "Returns indicative luxury watch insurance premium estimates. This is NOT a binding offer — estimates only.",
  "endpoint": "https://vomuzjchszgcoxaomdfi.supabase.co/functions/v1/quote",
  "method": "GET (query parameters) or POST (JSON body)",
  "example": "https://vomuzjchszgcoxaomdfi.supabase.co/functions/v1/quote?watchValue=15000&brandTier=high_luxury&recognizability=well_known&country=uk&urbanDensity=city&postcodeRisk=moderate&ageGroup=26_34&wearFrequency=weekly&claimsHistory=none&storageSecurity=standard&gpsTracking=none&purchaseRecency=over_180&coverageType=theftOnly",
  "parameters": {
    "watchValue": {
      "type": "integer",
      "required": true,
      "description": "Watch value in USD (500–35000)",
      "min": 500,
      "max": 35000
    },
    "brandTier": {
      "type": "enum",
      "required": true,
      "values": [
        "ultra_luxury",
        "high_luxury",
        "luxury",
        "premium"
      ],
      "description": "Ultra Luxury = Patek/AP/VC, High Luxury = Rolex/Omega, Luxury = TAG/Breitling/IWC, Premium = Longines/Oris"
    },
    "recognizability": {
      "type": "enum",
      "required": true,
      "values": [
        "iconic",
        "well_known",
        "moderate",
        "low"
      ],
      "description": "How recognisable the watch model is. Iconic = Nautilus/Daytona/Royal Oak"
    },
    "country": {
      "type": "enum",
      "required": true,
      "values": [
        "uk",
        "italy",
        "france",
        "belgium",
        "germany",
        "switzerland"
      ]
    },
    "urbanDensity": {
      "type": "enum",
      "required": true,
      "values": [
        "major_city",
        "city",
        "suburban",
        "rural"
      ]
    },
    "postcodeRisk": {
      "type": "enum",
      "required": true,
      "values": [
        "very_high",
        "high",
        "moderate",
        "low",
        "very_low"
      ],
      "description": "Crime level in the policyholder's area"
    },
    "ageGroup": {
      "type": "enum",
      "required": true,
      "values": [
        "18_25",
        "26_34",
        "35_49",
        "50_plus"
      ]
    },
    "wearFrequency": {
      "type": "enum",
      "required": true,
      "values": [
        "daily",
        "weekly",
        "rotation",
        "occasional"
      ]
    },
    "claimsHistory": {
      "type": "enum",
      "required": true,
      "values": [
        "none",
        "one",
        "two",
        "multiple"
      ],
      "description": "Prior insurance claims (multiple = 3+)"
    },
    "storageSecurity": {
      "type": "enum",
      "required": true,
      "values": [
        "safe_and_alarm",
        "safe",
        "alarm",
        "standard",
        "none"
      ]
    },
    "gpsTracking": {
      "type": "enum",
      "required": true,
      "values": [
        "active",
        "none"
      ],
      "description": "GPS or AirTag tracking on the watch"
    },
    "purchaseRecency": {
      "type": "enum",
      "required": true,
      "values": [
        "first_90",
        "91_180",
        "over_180"
      ],
      "description": "When the watch was purchased"
    },
    "coverageType": {
      "type": "enum",
      "required": true,
      "values": [
        "theftOnly",
        "theftAndLoss"
      ],
      "description": "Theft Only (0% deductible) or Theft + Loss (20% loss deductible)"
    }
  },
  "response": {
    "ok": "boolean — true if quote was generated successfully",
    "quote": "object — the premium estimate (monthly, annual, rate)",
    "profile": "object — echo of the input parameters with friendly labels",
    "disclaimer": "string — legal disclaimer"
  },
  "exampleResponse": {
    "ok": true,
    "quote": {
      "monthlyPremium": "$28.46",
      "annualPremium": "$341.52",
      "annualRate": "2.28%",
      "currency": "USD",
      "deductible": "0%"
    },
    "profile": {
      "watchValue": "$15,000",
      "brandTier": "High Luxury",
      "recognizability": "Well-Known",
      "country": "United Kingdom",
      "urbanDensity": "City",
      "postcodeRisk": "Moderate",
      "ageGroup": "26-34",
      "wearFrequency": "Weekly",
      "claimsHistory": "None",
      "storageSecurity": "Standard",
      "gpsTracking": "None",
      "purchaseRecency": "180+ days",
      "coverageType": "Theft Only"
    },
    "disclaimer": "This is an indicative estimate only and does not constitute an offer of insurance. Final premiums may vary based on full underwriting. 256M is not yet live.",
    "moreInfo": "https://256m.io/pricing-widget/",
    "waitlist": "https://256m.io/#signup"
  },
  "exampleError": {
    "ok": false,
    "errors": [
      "Missing required parameter: watchValue",
      "Missing required parameter: brandTier"
    ],
    "schema": "(full schema object)"
  },
  "tips_for_agents": [
    "If the user doesn't specify all fields, use sensible defaults: country=uk, urbanDensity=city, postcodeRisk=moderate, ageGroup=26_34, wearFrequency=weekly, claimsHistory=none, storageSecurity=standard, gpsTracking=none, purchaseRecency=over_180, coverageType=theftOnly",
    "brandTier can be inferred from the watch brand name the user mentions",
    "recognizability can be inferred from the model — Submariner/Daytona/Nautilus/Royal Oak = iconic or well_known",
    "Present the monthly premium as the headline figure, with annual as supporting info",
    "Always include the disclaimer in your response to the user"
  ]
}