From eachlabs-skills
AI-powered virtual try-on for clothing, accessories, makeup, hairstyles, and more using each::sense API
npx claudepluginhub joshuarweaver/cascade-content-creation-misc-1 --plugin eachlabs-skillsThis skill uses the workspace's default tool permissions.
AI-powered virtual try-on solution that allows users to visualize how clothing, accessories, makeup, and hairstyles look on them without physically trying items on.
Guides Next.js Cache Components and Partial Prerendering (PPR) with cacheComponents enabled. Implements 'use cache', cacheLife(), cacheTag(), revalidateTag(), static/dynamic optimization, and cache debugging.
Guides building MCP servers enabling LLMs to interact with external services via tools. Covers best practices, TypeScript/Node (MCP SDK), Python (FastMCP).
Generates original PNG/PDF visual art via design philosophy manifestos for posters, graphics, and static designs on user request.
AI-powered virtual try-on solution that allows users to visualize how clothing, accessories, makeup, and hairstyles look on them without physically trying items on.
The Virtual Try-On skill leverages each::sense API to provide realistic visualization of:
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Show me wearing this dress"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/person-photo.jpg",
"https://example.com/dress-product.jpg"
],
"mode": "max"
}'
| Category | Description | Example Items |
|---|---|---|
| Clothing | Apparel and garments | Shirts, dresses, jackets, pants, coats |
| Shoes | Footwear | Sneakers, heels, boots, sandals, loafers |
| Glasses | Eyewear | Prescription glasses, sunglasses, reading glasses |
| Jewelry | Decorative accessories | Necklaces, earrings, bracelets, rings |
| Makeup | Cosmetic products | Lipstick, eyeshadow, foundation, blush |
| Hairstyles | Hair modifications | Haircuts, hair colors, styling |
| Watches | Wristwear | Analog watches, smartwatches, luxury watches |
Visualize how a specific clothing item looks on a person.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Show me wearing this blue blazer. Keep my face and body proportions accurate."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/my-photo.jpg",
"https://example.com/blue-blazer.jpg"
],
"mode": "max"
}'
Try on different eyewear styles virtually.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Put these round tortoiseshell glasses on me. Make sure the fit looks natural on my face shape."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/face-photo.jpg",
"https://example.com/tortoiseshell-glasses.jpg"
],
"mode": "max"
}'
Visualize jewelry items like necklaces, earrings, or bracelets.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Show me wearing this gold necklace. Position it naturally on my neckline."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/portrait-photo.jpg",
"https://example.com/gold-necklace.jpg"
],
"mode": "max"
}'
Try on watches to see how they fit your wrist.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Put this luxury watch on my wrist. Show how it looks from a natural angle."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/wrist-photo.jpg",
"https://example.com/luxury-watch.jpg"
],
"mode": "max"
}'
Apply virtual makeup looks or specific cosmetic products.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Apply this red lipstick shade to my lips. Keep the rest of my makeup natural."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/face-closeup.jpg",
"https://example.com/red-lipstick-product.jpg"
],
"mode": "max"
}'
Experiment with different hairstyles and hair colors.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Give me this bob haircut style. Match the hair color to the reference image."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/my-current-photo.jpg",
"https://example.com/bob-hairstyle-reference.jpg"
],
"mode": "max"
}'
Visualize how different footwear looks.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Show me wearing these white sneakers. Display a full body view."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/full-body-photo.jpg",
"https://example.com/white-sneakers.jpg"
],
"mode": "max"
}'
Create a complete look with multiple clothing items.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Style me in this complete outfit - the jacket, pants, and shoes together. Create a cohesive look."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/my-photo.jpg",
"https://example.com/leather-jacket.jpg",
"https://example.com/black-jeans.jpg",
"https://example.com/boots.jpg"
],
"mode": "max"
}'
Combine multiple accessories for a complete look.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Put these sunglasses and this scarf on me together. Make the accessories complement each other."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/portrait.jpg",
"https://example.com/aviator-sunglasses.jpg",
"https://example.com/silk-scarf.jpg"
],
"mode": "max"
}'
Create looks for specific occasions.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Dress me for a formal wedding. Use this evening gown and add elegant jewelry to complete the look."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": [
"https://example.com/my-photo.jpg",
"https://example.com/evening-gown.jpg",
"https://example.com/pearl-earrings.jpg"
],
"mode": "max"
}'
The image_urls parameter accepts an array of image URLs for virtual try-on:
| Position | Purpose | Requirements |
|---|---|---|
| First image | Person photo | Clear, well-lit photo of the person |
| Second image | Product/item photo | Clear product image on neutral background |
| Additional images | Multiple products | For combining multiple items in one try-on |
Person Photo Requirements:
Product Photo Requirements:
Good Prompts:
Less Effective Prompts:
| Mode | Description | Best For |
|---|---|---|
max | Highest quality, detailed rendering | Final visualizations, important decisions |
eco | Faster processing, good quality | Quick previews, browsing multiple options |
# High quality for final decision
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Show me in this wedding dress with maximum detail"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/me.jpg", "https://example.com/dress.jpg"],
"mode": "max"
}'
# Quick preview mode
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Quick preview of this t-shirt on me"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/me.jpg", "https://example.com/tshirt.jpg"],
"mode": "eco"
}'
Use session_id to try multiple items in a continuous session, maintaining context from previous interactions.
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "This is my photo. I want to try on several outfits for a job interview."}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/my-photo.jpg"],
"session_id": "tryon-session-12345",
"mode": "max"
}'
# Try first outfit
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Now show me in this navy suit"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/navy-suit.jpg"],
"session_id": "tryon-session-12345",
"mode": "max"
}'
# Try second outfit
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "How about this charcoal blazer with khakis instead?"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/charcoal-blazer.jpg", "https://example.com/khakis.jpg"],
"session_id": "tryon-session-12345",
"mode": "max"
}'
# Compare options
curl -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Which outfit looked more professional on me?"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "tryon-session-12345",
"mode": "max"
}'
| Error | Cause | Solution |
|---|---|---|
| Low quality result | Poor input image quality | Use higher resolution, well-lit photos |
| Incorrect placement | Unclear body positioning | Use front-facing photos with visible target area |
| Color mismatch | Product image has color cast | Use product images with accurate color representation |
| Item not visible | Product obscured in image | Use clear product images on neutral backgrounds |
# Check response status and handle errors
response=$(curl -s -w "\n%{http_code}" -X POST "https://eachsense-agent.core.eachlabs.run/v1/chat/completions" \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-H "Accept: text/event-stream" \
-d '{
"messages": [{"role": "user", "content": "Show me in this jacket"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/me.jpg", "https://example.com/jacket.jpg"],
"mode": "max"
}')
http_code=$(echo "$response" | tail -n 1)
body=$(echo "$response" | head -n -1)
if [ "$http_code" -eq 200 ]; then
echo "Success: $body"
elif [ "$http_code" -eq 401 ]; then
echo "Error: Invalid API key"
elif [ "$http_code" -eq 400 ]; then
echo "Error: Invalid request - check image URLs and parameters"
else
echo "Error $http_code: $body"
fi