Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
each::sense is the intelligent layer for generative media. A unified AI agent that generates marketing assets, ads, product images, videos, and creative cont...
each::sense is the intelligent layer for generative media. A unified AI agent that generates marketing assets, ads, product images, videos, and creative cont...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
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
Header: X-API-Key: <your-api-key> Get your API key at eachlabs.ai β API Keys. Set the EACHLABS_API_KEY environment variable.
https://sense.eachlabs.run
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.
{ "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" }
ParameterTypeDefaultDescriptionmessagestringrequiredNatural language requestsession_idstringnullSession ID for conversation history. Use to continue previous chats, handle clarifications, and iteratively refine outputsmodestring"max"max = best quality, eco = fastest/cheapestbehaviorstring"agent"agent = auto-execute, plan = explain first, ask = clarify firstmodelstring"auto"Specific model slug or "auto" for AI selectionimage_urlsarraynullURLs of images to process/editworkflow_idstringnullEnables workflow building modeversion_idstringnullWorkflow version, required with workflow_idweb_searchbooleantrueAllow web search for informationenable_safety_checkerbooleantrueSet to false to allow NSFW content generation
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?"
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"}'
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"}'
Automatically executes the request, selecting the best model and generating output. {"message": "Generate a sunset video", "behavior": "agent"}
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"}
Always asks clarifying questions before proceeding. Good when you want maximum control. {"message": "Generate a portrait", "behavior": "ask"}
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
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" }'
# 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" }'
# 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"] }'
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
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" }'
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" }'
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"] }'
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"] }'
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" }'
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" }'
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" }'
# 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"] }'
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" }'
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
EventDescriptionthinking_deltaAI reasoning in real-timestatusCurrent operation being executedtext_responseText content (explanations, answers)generation_responseGenerated media URLclarification_neededAI needs more informationweb_search_queryWeb search being executedweb_search_citationsCitations from search resultsworkflow_createdNew workflow was createdworkflow_fetchedExisting workflow was loadedworkflow_builtWorkflow definition constructedworkflow_updatedWorkflow pushed to APIexecution_startedWorkflow execution beganexecution_progressProgress update during executionexecution_completedWorkflow execution finishedtool_callDetails of tool being calledmessageInformational messagecompleteFinal event with summaryerrorAn error occurred
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" }
Common shorthand names that are automatically resolved: AliasResolves Toflux maxflux-2-maxflux proflux-2-progpt imagegpt-image-1-5nano banana pronano-banana-proseedreamseedream-4-5gemini imagengemini-imagen-4kling 3kling-3-0veoveo3-1-text-to-video-fastsorasora-2hailuohailuo-2-3
CodeResponseCause401{"detail": "API key is required."}Missing or invalid API key500{"detail": "Error message"}Internal server error503{"detail": "ChatAgent not available"}Service temporarily unavailable
{"type": "error", "message": "Failed to execute model: Invalid parameters"} Error MessageCauseSolutionFailed to create prediction: HTTP 422Insufficient account balanceTop up at eachlabs.aiFailed to execute model: Invalid parametersMissing/invalid inputsCheck model parametersModel not foundInvalid model slugUse "auto" or valid slugWorkflow execution timed outExceeded 1 hour limitSplit into smaller workflows
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
Depends on your EachLabs API key tier
Use session_id for multi-turn conversations to maintain context Use ECO mode for prototyping and cost-sensitive applications Use specific model when you know exactly what you want (faster execution) Handle clarification events - respond with requested information in the same session Provide clear prompts - be specific about style, mood, and composition Monitor SSE events - use thinking_delta for progress, generation_response for output
Agent frameworks, memory systems, reasoning layers, and model-native orchestration.
Largest current source with strong distribution and engagement signals.