each-sense

each::sense is the intelligent layer for generative media. A unified AI agent that generates marketing assets, ads, product images, videos, and creative content. It knows all AI models and automatically selects the best one for your task. Use for any creative content generation request.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "each-sense" with this command: npx skills add eachlabs/skills/eachlabs-skills-each-sense

each::sense - Intelligent Layer for Generative Media

each::sense is a unified AI agent that can generate images, videos, build workflows, search the web, and hold conversational interactions. It uses Claude as the orchestrator with access to 200+ AI models.

Use each::sense when the user needs:

  • Marketing assets and ad creatives
  • Product images and e-commerce visuals
  • Video content (ads, UGC, social media)
  • Any creative content generation
  • Multi-step workflows combining multiple AI models

Authentication

Header: X-API-Key: <your-api-key>

Get your API key at eachlabs.ai → API Keys.

Set the EACHLABS_API_KEY environment variable.

Base URL

https://sense.eachlabs.run

Quick Start

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Generate a portrait of a woman with golden hour lighting",
    "mode": "max"
  }'

The endpoint returns Server-Sent Events (SSE) with real-time progress and the final generated output.

Request Schema

{
  "message": "string (required) - User's request",
  "session_id": "string (optional) - Session ID for conversation history and multi-turn chats",
  "mode": "string (optional, default: 'max') - Quality mode: 'max' or 'eco'",
  "behavior": "string (optional, default: 'agent') - Behavior: 'agent', 'plan', or 'ask'",
  "model": "string (optional, default: 'auto') - Model slug or 'auto' for AI selection",
  "image_urls": "array[string] (optional) - Image URLs for editing/processing",
  "workflow_id": "string (optional) - Enables workflow building mode",
  "version_id": "string (optional) - Required with workflow_id",
  "web_search": "boolean (optional, default: true) - Enable/disable web search",
  "enable_safety_checker": "boolean (optional, default: true) - Set to false to allow NSFW content generation"
}

Parameter Details

ParameterTypeDefaultDescription
messagestringrequiredNatural language request
session_idstringnullSession ID for conversation history. Use to continue previous chats, handle clarifications, and iteratively refine outputs
modestring"max"max = best quality, eco = fastest/cheapest
behaviorstring"agent"agent = auto-execute, plan = explain first, ask = clarify first
modelstring"auto"Specific model slug or "auto" for AI selection
image_urlsarraynullURLs of images to process/edit
workflow_idstringnullEnables workflow building mode
version_idstringnullWorkflow version, required with workflow_id
web_searchbooleantrueAllow web search for information
enable_safety_checkerbooleantrueSet to false to allow NSFW content generation

Modes

Agents can ask users to choose between quality and speed/cost before generating content:

  • "Do you want fast & cheap, or high quality?"
  • "Quick draft or premium output?"

MAX Mode (Default)

Uses the highest quality models available. Best for final outputs, client-facing work, and when quality matters most.

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{"message": "Create a product shot", "mode": "max"}'

ECO Mode

Uses fast, cost-effective models. Best for prototyping, drafts, and high-volume generation.

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{"message": "Create a product shot", "mode": "eco"}'

Behaviors

Agent (Default)

Automatically executes the request, selecting the best model and generating output.

{"message": "Generate a sunset video", "behavior": "agent"}

Plan

Explains what it will do before executing. Good for complex requests where you want to review the approach.

{"message": "Create a marketing video for my bakery", "behavior": "plan"}

Ask

Always asks clarifying questions before proceeding. Good when you want maximum control.

{"message": "Generate a portrait", "behavior": "ask"}

Session Management

Use session_id to maintain conversation history and context across multiple requests. This enables:

  • Multi-turn conversations: Follow-up on previous requests without repeating context
  • Iterative refinement: Ask for modifications to previously generated content
  • Clarification flows: Respond to clarification_needed events and continue the conversation
  • Context awareness: The AI remembers previous generations, preferences, and instructions

How It Works

Provide any unique string as session_id in your requests. All requests with the same session_id share conversation history.

# Use any unique string as session_id
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Generate a portrait",
    "session_id": "my-chat-session-123"
  }'

Example: Iterative Generation

# First request - generate initial image
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Generate a logo for a coffee shop called Brew Lab",
    "session_id": "logo-project-001"
  }'

# Follow-up - modify the result (same session_id)
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Make it more minimalist and change the color to dark green",
    "session_id": "logo-project-001"
  }'

# Another follow-up - request variation (same session_id)
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Create 3 variations of this logo",
    "session_id": "logo-project-001"
  }'

Example: Handling Clarifications

# Ambiguous request - AI will ask for clarification
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Edit this image",
    "session_id": "edit-task-001",
    "image_urls": ["https://example.com/photo.jpg"]
  }'
# Response: clarification_needed event asking what edit to make

# Respond to clarification (same session_id)
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Remove the background and make it transparent",
    "session_id": "edit-task-001",
    "image_urls": ["https://example.com/photo.jpg"]
  }'

Session Persistence

  • Sessions are persisted and can be resumed at any time
  • Each session maintains full conversation history
  • Use sessions to build chat-like experiences with each::sense
  • You control the session ID - use any unique string for related requests

Use Case Examples

1. Image Generation

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Generate a professional headshot of a business executive, studio lighting",
    "mode": "max"
  }'

2. Video Generation

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Create a 5 second video of a sunset over the ocean",
    "mode": "max"
  }'

3. Image Editing (with uploaded image)

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Remove the background from this image",
    "image_urls": ["https://example.com/my-photo.jpg"]
  }'

4. Image-to-Video Animation

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Animate this image with gentle camera movement",
    "image_urls": ["https://example.com/landscape.jpg"]
  }'

5. Direct Model Execution (skip AI selection)

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "A cyberpunk city at night with neon lights",
    "model": "flux-2-max"
  }'

6. Product Photography

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Generate a product shot of a coffee mug on a wooden table with morning light",
    "mode": "max"
  }'

7. Marketing Assets

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Create a social media ad for a fitness app, show someone working out with energetic vibes",
    "mode": "max"
  }'

8. Multi-Turn Conversation

# First request with a session_id
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Edit this image",
    "session_id": "user-123-chat",
    "image_urls": ["https://example.com/photo.jpg"]
  }'

# Response includes clarification_needed asking what edit to make
# Follow-up with same session_id
curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Remove the background",
    "session_id": "user-123-chat",
    "image_urls": ["https://example.com/photo.jpg"]
  }'

9. Complex Workflow (UGC Video)

curl -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{
    "message": "Create a 30 second UGC video with a consistent presenter explaining why fitness is important. The presenter is a 30-year-old fit woman with brown hair in workout clothes, gym background.",
    "mode": "max"
  }'

SSE Response Format

The endpoint returns Server-Sent Events (SSE) with Content-Type: text/event-stream.

Each event has the format:

data: {"type": "event_type", ...fields}\n\n

Stream ends with:

data: [DONE]\n\n

Event Types

EventDescription
thinking_deltaAI reasoning in real-time
statusCurrent operation being executed
text_responseText content (explanations, answers)
generation_responseGenerated media URL
clarification_neededAI needs more information
web_search_queryWeb search being executed
web_search_citationsCitations from search results
workflow_createdNew workflow was created
workflow_fetchedExisting workflow was loaded
workflow_builtWorkflow definition constructed
workflow_updatedWorkflow pushed to API
execution_startedWorkflow execution began
execution_progressProgress update during execution
execution_completedWorkflow execution finished
tool_callDetails of tool being called
messageInformational message
completeFinal event with summary
errorAn error occurred

Key Event Examples

generation_response

Generated media URL (the primary output):

{
  "type": "generation_response",
  "url": "https://storage.eachlabs.ai/outputs/abc123.png",
  "generations": ["https://storage.eachlabs.ai/outputs/abc123.png"],
  "total": 1,
  "model": "nano-banana-pro"
}

clarification_needed

AI needs more information:

{
  "type": "clarification_needed",
  "question": "What type of edit would you like to make to this image?",
  "options": ["Remove the background", "Apply a style transfer", "Upscale to higher resolution"],
  "context": "I can see your image but need to know the specific edit you want."
}

complete

Final event with summary:

{
  "type": "complete",
  "task_id": "chat_1708345678901",
  "status": "ok",
  "generations": ["https://storage.eachlabs.ai/outputs/abc123.png"],
  "model": "nano-banana-pro"
}

error

An error occurred:

{
  "type": "error",
  "message": "Failed to generate image: Invalid aspect ratio"
}

Model Aliases

Common shorthand names that are automatically resolved:

AliasResolves To
flux maxflux-2-max
flux proflux-2-pro
gpt imagegpt-image-1-5
nano banana pronano-banana-pro
seedreamseedream-4-5
gemini imagengemini-imagen-4
kling 3kling-3-0
veoveo3-1-text-to-video-fast
sorasora-2
hailuohailuo-2-3

Error Handling

HTTP Errors

CodeResponseCause
401{"detail": "API key is required."}Missing or invalid API key
500{"detail": "Error message"}Internal server error
503{"detail": "ChatAgent not available"}Service temporarily unavailable

Streaming Errors

{"type": "error", "message": "Failed to execute model: Invalid parameters"}
Error MessageCauseSolution
Failed to create prediction: HTTP 422Insufficient account balanceTop up at eachlabs.ai
Failed to execute model: Invalid parametersMissing/invalid inputsCheck model parameters
Model not foundInvalid model slugUse "auto" or valid slug
Workflow execution timed outExceeded 1 hour limitSplit into smaller workflows

Timeouts

Client timeout recommendation: Set your HTTP client timeout to minimum 10 minutes. Complex use cases may require running multiple AI models sequentially (e.g., 10+ model executions for UGC videos), which can take several minutes to complete.

# curl example with 10 minute timeout
curl --max-time 600 -X POST https://sense.eachlabs.run/chat \
  -H "Content-Type: application/json" \
  -H "X-API-Key: $EACHLABS_API_KEY" \
  -H "Accept: text/event-stream" \
  -d '{"message": "Create a complex UGC video..."}'

Platform limits:

  • Streaming connections timeout after 1 hour of inactivity
  • Workflow executions timeout after 1 hour

Rate Limits

  • Depends on your EachLabs API key tier

Best Practices

  1. Use session_id for multi-turn conversations to maintain context
  2. Use ECO mode for prototyping and cost-sensitive applications
  3. Use specific model when you know exactly what you want (faster execution)
  4. Handle clarification events - respond with requested information in the same session
  5. Provide clear prompts - be specific about style, mood, and composition
  6. Monitor SSE events - use thinking_delta for progress, generation_response for output

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Automation

eachlabs-workflows

No summary provided by upstream source.

Repository SourceNeeds Review
General

poster-design-generation

No summary provided by upstream source.

Repository SourceNeeds Review
General

eachlabs-image-edit

No summary provided by upstream source.

Repository SourceNeeds Review
General

subtitle-generation

No summary provided by upstream source.

Repository SourceNeeds Review