From eachlabs-skills
Generate professional real estate photography, virtual staging, interior design visuals, and architectural renders using each::sense API
npx claudepluginhub joshuarweaver/cascade-content-creation-misc-1 --plugin eachlabs-skillsThis skill uses the workspace's default tool permissions.
Generate stunning real estate visuals using the each::sense API. Create professional listing photos, virtually stage empty rooms, design interior spaces, render architectural concepts, and preview renovations - all through natural language prompts.
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.
Generate stunning real estate visuals using the each::sense API. Create professional listing photos, virtually stage empty rooms, design interior spaces, render architectural concepts, and preview renovations - all through natural language prompts.
The each::sense API provides comprehensive real estate visualization capabilities:
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": "Generate a professional real estate photo of a modern 3-bedroom house exterior with manicured lawn, blue sky, warm afternoon lighting"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
| Content Type | Description | Best Use Cases |
|---|---|---|
| Exterior Shots | Front facade, curb appeal photos | MLS listings, marketing materials |
| Interior Rooms | Living rooms, bedrooms, kitchens, bathrooms | Property tours, virtual walkthroughs |
| Virtual Staging | Digitally furnished empty spaces | Vacant property marketing |
| Twilight Shots | Dusk/evening exterior photography | Luxury listings, dramatic presentation |
| Aerial Views | Drone-style overhead perspectives | Large properties, lot visualization |
| Architectural Renders | 3D visualization of designs | New construction, pre-sale marketing |
| Renovation Previews | Before/after transformations | Fixer-upper potential, investor presentations |
Generate a classic front-of-house listing photo:
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": "Professional real estate exterior photo of a two-story colonial house with white siding, black shutters, red front door, landscaped front yard with flowering bushes, paved driveway, bright sunny day with blue sky and white clouds, wide angle lens perspective, HDR photography style"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Create an inviting living space photo:
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": "Bright and airy open concept living room, hardwood floors, large windows with natural light streaming in, modern gray sectional sofa, white walls, fireplace with stone surround, 10 foot ceilings, professional real estate interior photography, wide angle shot"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Showcase a stunning kitchen:
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": "Modern farmhouse kitchen with white shaker cabinets, quartz countertops, stainless steel appliances, large center island with pendant lighting, subway tile backsplash, breakfast nook with window, professional real estate photography, bright natural lighting, wide angle perspective highlighting the spacious layout"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Transform an empty room using an existing photo:
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": "Virtually stage this empty living room with contemporary furniture: a modern beige sectional sofa, glass coffee table, area rug, floor lamp, wall art, potted plants. Keep the existing room architecture, flooring, and windows. Make it look professionally staged and inviting for real estate listing"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/empty-living-room.jpg"],
"mode": "max"
}'
Create dramatic evening curb appeal:
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": "Luxury home exterior at twilight, dusk photography, warm interior lights glowing through windows, dramatic purple and orange sky, landscape lighting illuminating walkway and architectural features, modern Mediterranean style villa, pool visible with underwater lighting, professional real estate twilight photography"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Visualize a bathroom remodel:
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": "Modern spa-like master bathroom renovation, freestanding soaking tub, walk-in shower with frameless glass and rainfall showerhead, double vanity with vessel sinks, large format marble tiles, LED mirror lighting, heated floors, neutral palette with brass fixtures, professional interior photography"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Showcase outdoor living areas:
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": "Expansive backyard with covered patio, outdoor kitchen with built-in grill and bar seating, rectangular swimming pool with spa, manicured lawn, mature landscaping, string lights overhead, outdoor fireplace, comfortable seating area, golden hour lighting, professional real estate photography showing entire outdoor space"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Generate overhead property perspectives:
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": "Aerial drone photography of residential property on 2-acre lot, birds eye view showing ranch-style home, detached 3-car garage, swimming pool, tennis court, circular driveway, surrounded by trees, neighboring properties visible, clear sunny day, professional real estate aerial photography"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Visualize architectural plans:
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": "3D architectural render of open floor plan home interior, view from above at 45 degree angle showing living room flowing into kitchen and dining area, furniture placed throughout, realistic materials and textures, afternoon sunlight through windows, architectural visualization style, professional quality"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Show transformation potential:
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": "Transform this dated kitchen into a modern renovation: replace oak cabinets with white shaker style, add quartz countertops, install stainless steel appliances, update to pendant lighting over island, add subway tile backsplash, keep the same window and layout, photorealistic renovation preview"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/dated-kitchen.jpg"],
"mode": "max"
}'
The image_urls parameter enables powerful virtual staging and renovation visualization by providing existing property photos as reference:
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": "Virtually stage this empty bedroom as a luxurious master suite: king size bed with upholstered headboard, matching nightstands with lamps, bench at foot of bed, area rug, curtains on windows, tasteful artwork. Maintain the room dimensions, flooring, and natural light from the windows"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://your-domain.com/empty-bedroom-photo.jpg"],
"mode": "max"
}'
Virtual Staging Tips:
Effective prompt elements for real estate visuals:
| Element | Example Phrases |
|---|---|
| Wide Angle | "wide angle lens", "expansive view", "full room visible" |
| Bright & Airy | "natural light flooding in", "bright and welcoming", "light-filled space" |
| Feature Highlights | "showcasing the fireplace", "highlighting the chef's kitchen", "featuring the pool" |
| Professional Quality | "MLS-ready photo", "publication quality", "professional real estate photography" |
| Time of Day | "morning light", "golden hour", "twilight", "midday sun" |
| Architecture Style | "modern farmhouse", "contemporary", "traditional", "mid-century modern" |
Choose the appropriate mode based on your quality and speed requirements:
| Mode | Best For | Characteristics |
|---|---|---|
max | Final listing photos, marketing materials, client presentations | Highest quality, maximum detail, best for publication |
eco | Quick previews, concept exploration, draft iterations | Faster generation, suitable for review stages |
# High-quality listing photo
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": "Luxury master bedroom with king bed, tray ceiling, sitting area by bay window"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
# Quick concept preview
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": "Modern kitchen concept with waterfall island"}],
"model": "eachsense/beta",
"stream": true,
"mode": "eco"
}'
Use session_id to maintain consistency when generating multiple images for the same property listing:
# Generate exterior shot
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": "Modern craftsman style home exterior, gray siding with white trim, covered front porch, landscaped yard, sunny day"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "property-123-listing",
"mode": "max"
}'
# Generate matching interior - maintains style consistency
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": "Living room interior of this craftsman home, matching the exterior style, built-in bookshelves, hardwood floors, neutral palette"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "property-123-listing",
"mode": "max"
}'
# Generate kitchen with same style language
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": "Kitchen of this craftsman home, shaker cabinets, apron sink, butcher block island, consistent with the home style"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "property-123-listing",
"mode": "max"
}'
Benefits of session-based property series:
Handle API responses appropriately in your integration:
# Request with error handling
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": "Modern house exterior photo"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}')
http_code=$(echo "$response" | tail -n1)
body=$(echo "$response" | sed '$d')
if [ "$http_code" -eq 200 ]; then
echo "Success: $body"
elif [ "$http_code" -eq 401 ]; then
echo "Error: Invalid API key"
elif [ "$http_code" -eq 429 ]; then
echo "Error: Rate limit exceeded, retry after delay"
else
echo "Error $http_code: $body"
fi
Common issues and solutions:
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Invalid or missing API key | Verify EACHLABS_API_KEY is set correctly |
| 429 Too Many Requests | Rate limit exceeded | Implement exponential backoff retry |
| 400 Bad Request | Malformed request body | Validate JSON structure and required fields |
| Timeout | Complex generation taking too long | Consider using eco mode for faster results |