From eachlabs-skills
Generate professional product photography using each::sense API for e-commerce, marketing, and catalog imagery
npx claudepluginhub joshuarweaver/cascade-content-creation-misc-1 --plugin eachlabs-skillsThis skill uses the workspace's default tool permissions.
Generate professional product photography with the each::sense API. Create e-commerce ready images, lifestyle shots, and studio-quality product visuals for any item.
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 professional product photography with the each::sense API. Create e-commerce ready images, lifestyle shots, and studio-quality product visuals for any item.
The each::sense API enables generation of high-quality product photography suitable for:
You can also provide your own product images via image_urls to place your actual products into professionally styled scenes.
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 product photo of a minimalist ceramic coffee mug on a white background with soft studio lighting"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
| Style | Description | Best For |
|---|---|---|
| White Background | Clean, isolated product on pure white | E-commerce, marketplaces, catalogs |
| Lifestyle | Product in real-world context or environment | Social media, brand storytelling |
| Flat Lay | Top-down view with arranged props | Fashion, food, accessories |
| In-Context | Product being used or in its natural setting | Marketing campaigns, ads |
| Hero Shot | Dramatic lighting and angles for impact | Homepage banners, featured products |
| Detail Shot | Close-up focusing on texture and craftsmanship | Luxury goods, handmade items |
Standard e-commerce product photography with clean white background.
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 product photo of a stainless steel water bottle on pure white background, centered composition, soft box lighting from above and sides, no shadows, e-commerce style, 4K quality"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Product shown in an aspirational real-world setting.
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": "Lifestyle product photography of premium wireless headphones on a modern wooden desk, morning light through window, MacBook and coffee cup in soft focus background, warm and inviting atmosphere"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Top-down arrangement with complementary props.
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": "Flat lay product photography of a leather wallet, arranged with sunglasses, car keys, and a fountain pen on marble surface, overhead shot, even lighting, editorial style composition"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
High-impact product image for marketing materials.
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": "Hero shot of a luxury perfume bottle, dramatic side lighting creating elegant shadows, dark moody background with subtle gradient, glass reflections and caustics, premium advertising quality"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Close-up focusing on product texture and craftsmanship.
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": "Macro detail shot of handcrafted leather bag stitching, extreme close-up showing texture and quality of leather grain, shallow depth of field, warm directional lighting highlighting craftsmanship"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Product being actively used or demonstrated.
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": "Action product shot of running shoes in motion, dynamic angle showing flexibility, slight motion blur on background, athletic track setting, energetic and sporty atmosphere"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Product styled for specific season or holiday.
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": "Holiday themed product photo of a scented candle surrounded by pine branches, dried oranges, and cinnamon sticks, warm cozy lighting, festive winter atmosphere, gift-ready presentation"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Product shown with reference objects for scale.
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": "Product scale photo of a compact Bluetooth speaker next to a smartphone and coffee cup for size reference, clean white background, even lighting, showing portable dimensions clearly"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Product with its packaging for unboxing experience.
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": "Product and packaging photo of premium skincare bottle emerging from elegant black box, tissue paper visible, unboxing moment, luxury presentation, soft lighting on neutral background"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}'
Provide actual product photos via image_urls to place your products into professionally styled scenes.
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": "Place this product in a modern kitchen setting, morning light, marble countertop, lifestyle photography style"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/my-product.jpg"],
"mode": "max"
}'
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 product on a pure white background with professional studio lighting, remove existing background, e-commerce ready"}],
"model": "eachsense/beta",
"stream": true,
"image_urls": ["https://example.com/raw-product-photo.jpg"],
"mode": "max"
}'
Effective prompts for product photography include:
Lighting descriptors:
Angle specifications:
Background details:
Style references:
Props and context:
| Mode | Best For | Output Quality |
|---|---|---|
max | Hero shots, marketing materials, premium products | Highest quality, detailed rendering |
eco | Quick iterations, bulk catalog photos, testing concepts | Fast generation, good quality |
Use max mode for final marketing assets and hero images. Use eco mode for rapid prototyping and generating multiple variations quickly.
Use session_id to maintain consistency across a product line or catalog series.
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 product photo of a blue ceramic coffee mug on white background with soft natural lighting, minimalist style"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "product-catalog-2024",
"mode": "max"
}'
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 generate the matching red ceramic mug in the same style and lighting setup"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "product-catalog-2024",
"mode": "max"
}'
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": "Create a lifestyle version showing both mugs on a breakfast table with croissants"}],
"model": "eachsense/beta",
"stream": true,
"session_id": "product-catalog-2024",
"mode": "max"
}'
| Error | Cause | Solution |
|---|---|---|
| 401 Unauthorized | Invalid or missing API key | Verify X-API-Key header is set correctly |
| 400 Bad Request | Malformed request body | Check JSON syntax and required fields |
| 429 Rate Limited | Too many requests | Implement exponential backoff |
| 500 Server Error | Service temporarily unavailable | Retry after a brief delay |
for i in 1 2 3; do
response=$(curl -s -w "%{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": "Professional product photo of wireless earbuds on white background"}],
"model": "eachsense/beta",
"stream": true,
"mode": "max"
}')
http_code="${response: -3}"
if [ "$http_code" -eq 200 ]; then
echo "${response%???}"
break
fi
sleep $((2**i))
done