API Reference
Well Suited API
Get AI-powered outfit recommendations and packing lists based on real-time weather data. All endpoints return JSON.
Base URL: https://wellsuited.style/api
Send your API key as the x-ww-key header. Day-mode requests can also include optional variation headers to improve outfit-family rotation.
/api/outfit-dayGet a full outfit recommendation for a specific day.
Parameters
qstringrequiredCity or location namedaynumberDay index (0 = today, 1 = tomorrow, up to 6). Default: 0Headers
x-ww-key: your public API key
x-ww-variation-id: stable anonymous id (optional)
x-ww-recent-families: comma-separated recent family ids (optional)Example request
curl "https://wellsuited.style/api/outfit-day?q=New+York&day=0" \
-H "x-ww-key: YOUR_API_KEY" \
-H "x-ww-variation-id: anon-demo-1" \
-H "x-ww-recent-families: city_dress,skirt_separates"Response
{
"location": "New York, New York, United States",
"day": {
"date": "2026-04-10",
"tempMax": 68,
"tempMin": 52,
"uvIndexMax": 5.2,
"precipitationProbability": 20
},
"dayIndex": 0,
"totalDays": 7,
"moments": [
{
"label": "Walk out the door",
"timeRange": "7–9am",
"temp": 54,
"sunFeel": 62,
"shadeFeel": 50,
"windSpeed": 8,
"uvIndex": 1.2,
"precipChance": 10
},
{ "label": "Midday", "timeRange": "11am–3pm", ... },
{ "label": "Evening", "timeRange": "6–10pm", ... }
],
"outfit": {
"family": "city_dress",
"headline": "Olive layers, warm neutrals",
"walkOut": {
"summary": "Crisp morning, layer up",
"base": {
"kind": "dress",
"dress": "Olive cotton poplin midi dress"
},
"layer": "Caramel cotton chore jacket",
"shoes": "White leather sneakers",
"accessories": ["Tortoise sunglasses"]
},
"carry": {
"summary": "Warm enough to shed the jacket",
"add": [],
"remove": ["Chore jacket"],
"note": "Stash in bag, you'll want it back by 6pm"
},
"evening": {
"summary": "Pull the jacket back on",
"add": ["Chore jacket"],
"note": "Wind picks up after sunset"
},
"bagEssentials": ["SPF 30", "Light scarf"]
}
}/api/tripGet a consolidated packing list for a multi-day trip.
Parameters
qstringrequiredDestination city or locationstartDatestringrequiredStart date in YYYY-MM-DD formatendDatestringrequiredEnd date in YYYY-MM-DD formatExample request
curl "https://wellsuited.style/api/trip?q=Paris&startDate=2026-04-15&endDate=2026-04-19"Response
{
"location": "Paris, Ile-de-France, France",
"isHistorical": false,
"days": [
{
"dayName": "Wednesday",
"date": "2026-04-15",
"tempRange": "48–62°F",
"precipChance": 30
},
...
],
"packingList": {
"headline": "Layered neutrals, rain-ready",
"weatherSummary": "Cool mornings, mild afternoons with scattered showers",
"categories": [
{
"name": "Tops",
"items": [
"2 long-sleeve cotton shirts",
"1 lightweight merino sweater"
]
},
{ "name": "Bottoms", "items": [...] },
{ "name": "Outerwear", "items": [...] },
{ "name": "Shoes", "items": [...] },
{ "name": "Accessories", "items": [...] }
],
"skipList": ["Heavy coat", "Shorts"],
"proTip": "Pack a compact umbrella — afternoon showers likely"
}
}/api/outfit-imageGenerate a fashion editorial image for an outfit. Returns a base64-encoded PNG.
Headers
Content-Type: application/json
x-ww-key: your public API keyRequest body
{
"outfit": {
"family": "city_dress",
"headline": "Olive layers, warm neutrals",
"walkOut": {
"summary": "Cool enough for one light layer",
"base": {
"kind": "dress",
"dress": "Olive cotton poplin midi dress"
},
"layer": "Caramel cotton chore jacket",
"shoes": "White leather sneakers",
"accessories": ["Tortoise sunglasses"]
},
"carry": {
"summary": "Warm enough to lose the jacket",
"add": [],
"remove": ["Chore jacket"],
"note": "Keep it folded in your tote"
},
"evening": {
"summary": "Bring the jacket back after sunset",
"add": ["Chore jacket"],
"note": "Wind picks up by dinner"
},
"bagEssentials": ["SPF 30", "Lip balm"]
},
"location": "New York, New York",
"temp": 60
}Response
{
"image": "data:image/png;base64,iVBOR..."
}Image generation uses more resources. Consider caching results on your end.
Notes
Weather data comes from Open-Meteo and covers 7-day forecasts. For trip dates beyond the forecast window, historical averages are used instead.
Outfit generation uses Claude Sonnet to reason about temperature, UV, wind, and precipitation — then recommends specific garments with colors and fabrics.
Day-mode variation is family-aware. If you pass a stable anonymous variation id plus recent family history, the API can rotate silhouettes more deliberately across similar weather days.