Image Generation
Generate images from text descriptions using each::sense — the intelligent AI agent that automatically selects the best model for your request.
Quick Start
Requires an each::labs API key. Get one at eachlabs.ai.
Using curl
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "A lone astronaut standing on a red desert planet, looking up at a sky filled with three massive moons, cinematic lighting, photorealistic, wide shot"}],
"stream": false
}'
Using Python (OpenAI SDK)
from openai import OpenAI
client = OpenAI(
api_key="YOUR_EACHLABS_API_KEY",
base_url="https://eachsense-agent.core.eachlabs.run/v1"
)
response = client.chat.completions.create(
model="eachsense/beta",
messages=[{"role": "user", "content": "A lone astronaut standing on a red desert planet, looking up at a sky filled with three massive moons, cinematic lighting, photorealistic, wide shot"}]
)
print(response.choices[0].message.content)
With Reference Image
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": [
{"type": "text", "text": "Generate an image in the same style as this reference, but change the setting to a futuristic Tokyo street at night"},
{"type": "image_url", "image_url": {"url": "https://example.com/reference-style.jpg"}}
]
}
],
"stream": false
}'
Images are sent inside messages using the OpenAI multimodal content format. Maximum 4 images per request.
Streaming
Set "stream": true for real-time SSE responses, or "stream": false for complete result in a single response. Streaming is useful for showing progress in UIs; non-streaming is simpler for scripts and automation.
Available Models
| Model |
Strengths |
Best For |
| flux-2-max |
Highest quality, exceptional detail |
Hero images, print-ready visuals, portfolio work |
| flux-2-pro |
Fast with balanced quality |
Rapid iteration, production workflows |
| flux-kontext-pro |
Accurate text rendering in images |
Posters, signs, logos with readable text |
| nano-banana-pro |
Fastest generation speed |
Prototyping, bulk generation, real-time previews |
| gemini-imagen-4 |
Outstanding photorealism |
Product photography, lifestyle shots, realistic scenes |
| seedream-v4-5 |
Artistic and stylized outputs |
Illustrations, fantasy art, painterly styles |
| kling-text-to-image |
Versatile across styles |
General-purpose generation, mixed media |
each::sense automatically picks the optimal model based on your prompt. You do not need to specify a model unless you want to override the selection.
Prompt Engineering Guide
Prompt Structure
[subject] + [action/pose] + [environment] + [style] + [lighting] + [camera/composition]
Style Keywords
| Style |
Keywords |
| Photorealistic |
photorealistic, ultra-realistic, DSLR photo, 8K, raw photo, unedited |
| Illustration |
digital illustration, vector art, hand-drawn, watercolor, ink drawing |
| Cinematic |
cinematic, film still, movie scene, dramatic lighting, anamorphic lens |
| Anime |
anime style, manga, cel shading, Studio Ghibli, Makoto Shinkai |
| 3D Render |
3D render, octane render, unreal engine, isometric, blender render |
| Oil Painting |
oil painting, impasto, classical art, Renaissance, Baroque |
| Pixel Art |
pixel art, 16-bit, retro game, 8-bit, sprite art |
| Minimalist |
minimalist, flat design, simple, clean lines, geometric |
Aspect Ratios
Specify aspect ratio in your prompt to control image dimensions:
"... landscape format, 16:9 aspect ratio"
"... square format, 1:1"
"... portrait format, 9:16, vertical"
"... ultrawide, 21:9 cinematic"
Quality Boosters
masterpiece, highly detailed, sharp focus, professional,
studio quality, award-winning, 8K resolution, HDR
Negative Guidance
Describe what you do not want to improve results:
"... avoid blurry, no watermarks, no text overlays, avoid distorted faces"
Examples
Photorealistic Landscape
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "A misty fjord in Norway at sunrise, mirror-like water reflecting snow-capped mountains, a small red fishing cabin on the shore, photorealistic, 8K, golden hour lighting, shot on Hasselblad"}],
"stream": false
}'
Digital Illustration
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "A cozy bookstore interior with a cat sleeping on a stack of old books, warm lamp light, plants hanging from the ceiling, digital illustration, Studio Ghibli style, soft colors, whimsical atmosphere"}],
"stream": false
}'
Product Photography
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "A sleek wireless earbud case on a marble surface, soft studio lighting, product photography, shallow depth of field, clean minimalist background, commercial quality, 1:1 square format"}],
"stream": false
}'
Concept Art
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "A floating cyberpunk city above the clouds, neon lights reflecting off chrome towers, flying vehicles streaming between buildings, concept art, matte painting, epic scale, dramatic perspective, 16:9 cinematic"}],
"stream": false
}'
Text-in-Image (Poster)
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d '{
"messages": [{"role": "user", "content": "A vintage concert poster for a band called SOLAR DRIFT, playing at The Echo Lounge, June 15th. Retro psychedelic style with swirling colors, 60s typography, orange and purple palette, portrait format"}],
"stream": false
}'
Batch Generation Workflow
# Generate multiple style variations of the same subject
PROMPTS=(
"A medieval castle on a cliff at sunset, oil painting style"
"A medieval castle on a cliff at sunset, photorealistic, drone shot"
"A medieval castle on a cliff at sunset, anime style, Makoto Shinkai"
"A medieval castle on a cliff at sunset, pixel art, 16-bit"
)
for PROMPT in "${PROMPTS[@]}"; do
curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY" \
-d "{
\"messages\": [{\"role\": \"user\", \"content\": \"$PROMPT\"}],
\"stream\": false
}"
echo "---"
done
Common Pitfalls
- Vague prompts produce generic results. Be specific about subject, style, and mood.
- Too many subjects in one prompt cause confusion. Focus on one main subject per image.
- Text rendering can be unreliable in most models. Use flux-kontext-pro for text-heavy images.
- Hands and fingers can be distorted. Crop or pose hands carefully if they are the focus.
- Contradictory styles (e.g., "photorealistic watercolor") confuse the model. Pick one.
- Overloaded prompts with 50+ words often degrade quality. Aim for 15-40 words of focused description.
Related Skills
Documentation
1---2name: image-generation3description: Generate images from text descriptions using each::sense AI. Create photorealistic photos, illustrations, concept art, digital paintings, logos, and any visual from a text prompt. Supports all styles from hyperrealism to anime, abstract to architectural. 7 specialized models including flux-2-max, gemini-imagen-4, and seedream-v4-5. Use for: concept art, illustrations, marketing visuals, social media images, product shots, storyboarding, creative exploration. Triggers: generate image, create image, text to image, ai image, image generation, txt2img, ai art, generate picture, create visual, image from text, ai illustration, make image, draw, render4---56# Image Generation78Generate images from text descriptions using [each::sense](https://docs.eachlabs.ai/sense/overview) — the intelligent AI agent that automatically selects the best model for your request.910## Quick Start1112> Requires an each::labs API key. Get one at [eachlabs.ai](https://eachlabs.ai).1314### Using curl1516```bash17curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \18 -H "Content-Type: application/json" \19 -H "X-API-Key: $EACHLABS_API_KEY" \20 -d '{21 "messages": [{"role": "user", "content": "A lone astronaut standing on a red desert planet, looking up at a sky filled with three massive moons, cinematic lighting, photorealistic, wide shot"}],22 "stream": false23 }'24```2526### Using Python (OpenAI SDK)2728```python29from openai import OpenAI3031client = OpenAI(32 api_key="YOUR_EACHLABS_API_KEY",33 base_url="https://eachsense-agent.core.eachlabs.run/v1"34)3536response = client.chat.completions.create(37 model="eachsense/beta",38 messages=[{"role": "user", "content": "A lone astronaut standing on a red desert planet, looking up at a sky filled with three massive moons, cinematic lighting, photorealistic, wide shot"}]39)4041print(response.choices[0].message.content)42```4344### With Reference Image4546```bash47curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \48 -H "Content-Type: application/json" \49 -H "X-API-Key: $EACHLABS_API_KEY" \50 -d '{51 "messages": [{"role": "user", "content": [52 {"type": "text", "text": "Generate an image in the same style as this reference, but change the setting to a futuristic Tokyo street at night"},53 {"type": "image_url", "image_url": {"url": "https://example.com/reference-style.jpg"}}54 ]55 }56 ],57 "stream": false58 }'59```6061> Images are sent inside messages using the OpenAI multimodal content format. Maximum 4 images per request.6263### Streaming6465Set `"stream": true` for real-time SSE responses, or `"stream": false` for complete result in a single response. Streaming is useful for showing progress in UIs; non-streaming is simpler for scripts and automation.6667## Available Models6869| Model | Strengths | Best For |70|-------|-----------|----------|71| **flux-2-max** | Highest quality, exceptional detail | Hero images, print-ready visuals, portfolio work |72| **flux-2-pro** | Fast with balanced quality | Rapid iteration, production workflows |73| **flux-kontext-pro** | Accurate text rendering in images | Posters, signs, logos with readable text |74| **nano-banana-pro** | Fastest generation speed | Prototyping, bulk generation, real-time previews |75| **gemini-imagen-4** | Outstanding photorealism | Product photography, lifestyle shots, realistic scenes |76| **seedream-v4-5** | Artistic and stylized outputs | Illustrations, fantasy art, painterly styles |77| **kling-text-to-image** | Versatile across styles | General-purpose generation, mixed media |7879> each::sense automatically picks the optimal model based on your prompt. You do not need to specify a model unless you want to override the selection.8081## Prompt Engineering Guide8283### Prompt Structure8485```86[subject] + [action/pose] + [environment] + [style] + [lighting] + [camera/composition]87```8889### Style Keywords9091| Style | Keywords |92|-------|----------|93| **Photorealistic** | photorealistic, ultra-realistic, DSLR photo, 8K, raw photo, unedited |94| **Illustration** | digital illustration, vector art, hand-drawn, watercolor, ink drawing |95| **Cinematic** | cinematic, film still, movie scene, dramatic lighting, anamorphic lens |96| **Anime** | anime style, manga, cel shading, Studio Ghibli, Makoto Shinkai |97| **3D Render** | 3D render, octane render, unreal engine, isometric, blender render |98| **Oil Painting** | oil painting, impasto, classical art, Renaissance, Baroque |99| **Pixel Art** | pixel art, 16-bit, retro game, 8-bit, sprite art |100| **Minimalist** | minimalist, flat design, simple, clean lines, geometric |101102### Aspect Ratios103104Specify aspect ratio in your prompt to control image dimensions:105106```107"... landscape format, 16:9 aspect ratio"108"... square format, 1:1"109"... portrait format, 9:16, vertical"110"... ultrawide, 21:9 cinematic"111```112113### Quality Boosters114115```116masterpiece, highly detailed, sharp focus, professional,117studio quality, award-winning, 8K resolution, HDR118```119120### Negative Guidance121122Describe what you do not want to improve results:123124```125"... avoid blurry, no watermarks, no text overlays, avoid distorted faces"126```127128## Examples129130### Photorealistic Landscape131132```bash133curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \134 -H "Content-Type: application/json" \135 -H "X-API-Key: $EACHLABS_API_KEY" \136 -d '{137 "messages": [{"role": "user", "content": "A misty fjord in Norway at sunrise, mirror-like water reflecting snow-capped mountains, a small red fishing cabin on the shore, photorealistic, 8K, golden hour lighting, shot on Hasselblad"}],138 "stream": false139 }'140```141142### Digital Illustration143144```bash145curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \146 -H "Content-Type: application/json" \147 -H "X-API-Key: $EACHLABS_API_KEY" \148 -d '{149 "messages": [{"role": "user", "content": "A cozy bookstore interior with a cat sleeping on a stack of old books, warm lamp light, plants hanging from the ceiling, digital illustration, Studio Ghibli style, soft colors, whimsical atmosphere"}],150 "stream": false151 }'152```153154### Product Photography155156```bash157curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \158 -H "Content-Type: application/json" \159 -H "X-API-Key: $EACHLABS_API_KEY" \160 -d '{161 "messages": [{"role": "user", "content": "A sleek wireless earbud case on a marble surface, soft studio lighting, product photography, shallow depth of field, clean minimalist background, commercial quality, 1:1 square format"}],162 "stream": false163 }'164```165166### Concept Art167168```bash169curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \170 -H "Content-Type: application/json" \171 -H "X-API-Key: $EACHLABS_API_KEY" \172 -d '{173 "messages": [{"role": "user", "content": "A floating cyberpunk city above the clouds, neon lights reflecting off chrome towers, flying vehicles streaming between buildings, concept art, matte painting, epic scale, dramatic perspective, 16:9 cinematic"}],174 "stream": false175 }'176```177178### Text-in-Image (Poster)179180```bash181curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \182 -H "Content-Type: application/json" \183 -H "X-API-Key: $EACHLABS_API_KEY" \184 -d '{185 "messages": [{"role": "user", "content": "A vintage concert poster for a band called SOLAR DRIFT, playing at The Echo Lounge, June 15th. Retro psychedelic style with swirling colors, 60s typography, orange and purple palette, portrait format"}],186 "stream": false187 }'188```189190## Batch Generation Workflow191192```bash193# Generate multiple style variations of the same subject194PROMPTS=(195 "A medieval castle on a cliff at sunset, oil painting style"196 "A medieval castle on a cliff at sunset, photorealistic, drone shot"197 "A medieval castle on a cliff at sunset, anime style, Makoto Shinkai"198 "A medieval castle on a cliff at sunset, pixel art, 16-bit"199)200201for PROMPT in "${PROMPTS[@]}"; do202 curl -X POST https://eachsense-agent.core.eachlabs.run/v1/chat/completions \203 -H "Content-Type: application/json" \204 -H "X-API-Key: $EACHLABS_API_KEY" \205 -d "{206 \"messages\": [{\"role\": \"user\", \"content\": \"$PROMPT\"}],207 \"stream\": false208 }"209 echo "---"210done211```212213## Common Pitfalls214215- **Vague prompts** produce generic results. Be specific about subject, style, and mood.216- **Too many subjects** in one prompt cause confusion. Focus on one main subject per image.217- **Text rendering** can be unreliable in most models. Use flux-kontext-pro for text-heavy images.218- **Hands and fingers** can be distorted. Crop or pose hands carefully if they are the focus.219- **Contradictory styles** (e.g., "photorealistic watercolor") confuse the model. Pick one.220- **Overloaded prompts** with 50+ words often degrade quality. Aim for 15-40 words of focused description.221222## Related Skills223224- [Image Editing](../image-editing/SKILL.md) — Edit and modify generated images with natural language225- [Image Upscaling](../image-upscaling/SKILL.md) — Enhance resolution of generated images226- [Background Removal](../background-removal/SKILL.md) — Remove backgrounds from generated images227- [Video Generation](../video-generation/SKILL.md) — Animate your images into video228229## Documentation230231- [each::sense Overview](https://docs.eachlabs.ai/sense/overview)232- [each::labs API](https://docs.eachlabs.ai)