Skip to main content
eachlabs-workflows Build and orchestrate multi-step AI workflows combining multiple EachLabs models. Create custom pipelines, trigger executions, and manage workflow versions. Use when the user needs to chain multiple AI models or automate multi-step content creation.
跳到安装 Skills Marketplace 发现并探索由社区构建的 Agent Skills
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/eachlabs/skills --skill eachlabs-workflows命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
下载 Zip 下载中... name eachlabs-workflows description Build and orchestrate multi-step AI workflows combining multiple EachLabs models. Create custom pipelines, trigger executions, and manage workflow versions. Use when the user needs to chain multiple AI models or automate multi-step content creation. metadata {"author":"eachlabs","version":"2.0"}
EachLabs Workflows
Build, manage, and execute multi-step AI pipelines that chain multiple models together. each::workflows is completely free to use - you only pay for underlying model costs.
Authentication
Header: X-API-Key: <your-api-key>
Set the EACHLABS_API_KEY environment variable. Get your key at eachlabs.ai .
Base URL
https://workflows.eachlabs.run/api/v1
Endpoints
Method Path Description GET /categoriesList workflow categories POST /workflowsCreate a workflow GET /workflows/{id}Get workflow (UUID or slug) PUT /workflows/{id}Update workflow metadata PUT /workflows/{id}/versions/{versionID}Create or update version POST
POST /{id}/bulk-triggerBulk trigger (1-10 parallel)
GET /workflows/{id}/executionsList executions
GET /executions/{executionID}Get execution details
Building a Workflow
Step 1: Create the Workflow curl -X POST https://workflows.eachlabs.run/api/v1/workflows \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY " \
-d '{
"name": "Image Enhancement Pipeline",
"description": "Generate and upscale images",
"categories": ["image-generation"],
"definition": {
"version": "v1",
"input_schema": {
"type": "object",
"properties": {
"prompt": {"type": "string", "description": "Image description"}
},
"required": ["prompt"]
},
"steps": [
{
"step_id": "generate",
"type": "model",
"model": "flux-2-pro",
"params": {
"prompt": "{{inputs.prompt}}",
"aspect_ratio": "16:9"
}
},
{
"step_id": "upscale",
"type": "model",
"model": "topaz-upscale-image",
"params": {
"image_url": "{{generate.primary}}",
"scale": 2
}
}
]
}
}'
Step 2: Trigger the Workflow curl -X POST https://workflows.eachlabs.run/api/v1/{workflowID}/trigger \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY " \
-d '{
"version_id": "v1",
"inputs": {"prompt": "A sunset landscape"},
"webhook_url": "https://your-server.com/webhook"
}'
{ "execution_id" : "exec-123" , "status" : "queued" , "started_at" : "..." }
Step 3: Poll for Result curl https://workflows.eachlabs.run/api/v1/executions/{executionID} \
-H "X-API-Key: $EACHLABS_API_KEY "
{
"execution_id" : "exec-123" ,
"workflow_id" : "wf-456" ,
"status" : "completed" ,
"inputs" : { "prompt" : "A sunset landscape" } ,
"step_outputs" : {
"generate" : {
"step_id" : "generate" ,
"status" : "completed" ,
"output" : "https://cdn.example.com/image.png" ,
"primary" : "https://cdn.example.com/image.png" ,
"metadata" : { "model" : "flux-2-pro" , "version" : "1.0.0" }
}
} ,
"output" : [ "https://cdn.example.com/upscaled.png" ]
}
Execution statuses: running, completed, failed, cancelled
Step Types Type Purpose modelExecute an AI model via each::api httpExternal HTTP request (GET, POST, PUT, DELETE, PATCH) pythonExecute Python code parallelExecute multiple branches concurrently choiceEvaluate condition and route to matching branch passPass-through with optional static value injection
continue_on_error (boolean) - Continue workflow if step fails
timeout_seconds (integer) - Step timeout
retry configuration - Automatic retry on failure
Model Steps {
"step_id" : "generate" ,
"type" : "model" ,
"model" : "flux-2-max" ,
"params" : {
"prompt" : "{{inputs.prompt}}" ,
"aspect_ratio" : "16:9"
}
}
HTTP Steps {
"step_id" : "call_api" ,
"type" : "http" ,
"url" : "https://api.example.com/process" ,
"method" : "POST" ,
"headers" : { "Content-Type" : "application/json" } ,
"body" : { "data" : "{{generate.primary}}" } ,
"auth" : { "type" : "bearer" , "token" : "{{inputs.api_token}}" } ,
"timeout" : 30000
}
Auth types: basic (username/password), bearer (token), api_key
Python Steps {
"step_id" : "transform" ,
"type" : "python" ,
"code" : "result = inputs['text'].upper()" ,
"inputs" : { "text" : "{{generate.primary}}" }
}
Parallel Steps Execute multiple branches simultaneously:
{
"step_id" : "step1" ,
"type" : "parallel" ,
"branches" : [
{
"name" : "Video Generation" ,
"steps" : [
{
"step_id" : "step1_branch_0" ,
"type" : "model" ,
"model" : "kling-3-0" ,
"params" : { "prompt" : "{{inputs.prompt}}" , "duration" : 5 }
}
]
} ,
{
"name" : "Image Edit" ,
"steps" : [
{
"step_id" : "step1_branch_1" ,
"type" : "model" ,
"model" : "flux-2-edit" ,
"params" : { "prompt" : "{{inputs.prompt}}" , "image_url" : "{{inputs.image}}" }
}
]
}
]
}
Choice Steps (Conditional Routing) {
"step_id" : "step2" ,
"type" : "choice" ,
"condition" : {
"expression" : "$.step1.primary" ,
"operator" : "string_matches" ,
"value" : ".mp4"
} ,
"condition_met_branch" : {
"name" : "condition_met" ,
"step_id" : "step2_condition_met" ,
"steps" : [
{ "step_id" : "step2_branch_0" , "type" : "model" , "model" : "topaz-upscale-video" , "params" : { "video" : "{{step1.primary}}" , "scale" : 2 } }
]
} ,
"default_branch" : {
"name" : "default" ,
"step_id" : "step2_default" ,
"steps" : [
{ "step_id" : "step2_default" , "type" : "model" , "model" : "topaz-upscale-image" , "params" : { "image_url" : "{{step1.primary}}" , "scale" : 2 } }
]
}
}
Category Options Comparison equals, not_equals, greater_than, less_than, greater_than_or_equal, less_than_or_equalString string_equals, string_matchesArray in, not_inExistence exists, not_exists, is_null, is_not_null
Logical operators: and, or, not for complex conditions:
{ "and" : [
{ "expression" : "$.step1.primary" , "operator" : "string_matches" , "value" : ".png" } ,
{ "expression" : "$.inputs.upscale" , "operator" : "equals" , "value" : true }
] }
Pass Steps { "step_id" : "config" , "type" : "pass" , "result" : { "style" : "cinematic" } }
Parameter References (Template Syntax) Use {{double braces}} to reference inputs and step outputs:
Reference Purpose Example {{inputs.field}}Workflow input value {{inputs.prompt}}{{step_id.output}}Full step output {{generate.output}}{{step_id.primary}}Primary/first result {{generate.primary}}{{branch_step_id.primary}}Output from parallel branch {{step1_branch_0.primary}}
Templates can be embedded in strings: "A portrait of {{inputs.name}} in {{inputs.style}} style"
Conditions use $ syntax: $.step_id.primary, $.inputs.field
Fallback Configuration Automatic fallback to secondary model when primary fails:
{
"step_id" : "generate" ,
"type" : "model" ,
"model" : "flux-2-max" ,
"params" : { "prompt" : "{{inputs.prompt}}" } ,
"fallback" : {
"enabled" : true ,
"model" : "flux-2-pro" ,
"params" : { "prompt" : "{{inputs.prompt}}" }
}
}
Version Management Steps are defined in versions, not in the workflow itself. This allows iterating while keeping previous versions intact.
Version states: active, archived, deleted
Locking: Set locked: true to prevent modifications (for production stability).
allowed_to_share: false (default) - Private, organization only
allowed_to_share: true - Unlisted, accessible via direct link
Create/Update a Version curl -X PUT https://workflows.eachlabs.run/api/v1/workflows/{workflowID}/versions/{versionID} \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY " \
-d '{
"description": "Added upscaling step",
"definition": {
"version": "v1",
"input_schema": {
"type": "object",
"properties": {
"prompt": {"type": "string"}
},
"required": ["prompt"]
},
"steps": [...]
}
}'
Bulk Trigger Process multiple inputs (max 10) in a single API call:
curl -X POST https://workflows.eachlabs.run/api/v1/{workflowID}/bulk-trigger \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY " \
-d '{
"version_id": "v1",
"inputs": [
{"prompt": "A sunset landscape"},
{"prompt": "A mountain scene"},
{"prompt": "An ocean view"}
],
"webhook_url": "https://your-server.com/webhook"
}'
Response includes bulk_id for tracking. Partial failures are possible.
Webhooks Configure a webhook to receive results asynchronously:
curl -X POST https://workflows.eachlabs.run/api/v1/{workflowID}/trigger \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY " \
-d '{
"version_id": "v1",
"inputs": {"prompt": "A sunset landscape"},
"webhook_url": "https://your-server.com/webhook",
"webhook_secret": "your-secret"
}'
Webhook payload (success):
{ "execution_id" : "..." , "workflow_id" : "..." , "status" : "completed" , "inputs" : { } , "step_outputs" : { } , "output" : [ ] }
Retry schedule: ~30 seconds, ~2 minutes, ~10 minutes
Verify webhook authenticity using HMAC-SHA256 with webhook_secret.
Workflow Builder via each::sense You can also build workflows using natural language via the each::sense workflow endpoint:
curl -X POST https://eachsense-agent.core.eachlabs.run/workflow \
-H "Content-Type: application/json" \
-H "X-API-Key: $EACHLABS_API_KEY " \
-d '{
"message": "Create a workflow that generates an image and then upscales it",
"stream": true,
"session_id": "my-session"
}'
To update an existing workflow, include workflow_id and version_id.
Example Workflow References 同仓库更多 Skills Generate cinematic videos with native synchronized audio using ByteDance Seedance 2.0 (Fast) via EachLabs. Supports text-to-video (bytedance-seedance-2-0-text-to-video-fast) and image-to-video (bytedance-seedance-2-0-image-to-video-fast). Use when the user specifically asks for Seedance 2.0, wants native audio with the video, realistic physics, director-level camera control, or 4–15 second clips up to 720p.
Edit, transform, upscale, and enhance images using EachLabs AI models. Supports image editing, style transfer, background removal, upscaling, inpainting, face swap, virtual try-on, 3D generation, and image analysis. Use when the user wants to edit or transform existing images.
eachlabs-image-generation Generate new images from text prompts using EachLabs AI models. Supports text-to-image with multiple model families including Flux, GPT Image, Gemini, Imagen, Seedream, and more. Use when the user wants to create new images from text. For editing existing images, see eachlabs-image-edit.