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 コミュニティが作成したAIスキルを発見・探索
Codex または Claude でインストール この Prompt をコピーして Codex、Claude、または他のアシスタントに貼り付けると、Skill ページを確認してインストールできます。
直接コマンドでは確認用 Prompt が省略されます。実行前にソースを確認してください。
npx skills add https://github.com/eachlabs/skills --skill eachlabs-workflowsコマンドは1行のまま表示されます。コピー前に横へスクロールして全体を確認してください。
ローカルで確認しますか?SkillsMP が現在取得できるファイルをダウンロードできます。
Zipをダウンロード ダウンロード中... このリポジトリの他の 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.
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