@subscribe.dev/workflow
v1.0.24
Published
Workflow execution package for subscribe.dev
Readme
@subscribe.dev/workflow
Execute workflows with subscribe.dev AI models.
Installation
npm install @subscribe.dev/workflow @subscribe.dev/clientBasic Usage
The workflow package provides functions to execute workflows both from JSON definitions and by workflow ID.
Execute from JSON
import { SubscribeDevClient } from '@subscribe.dev/client';
import { executeWorkflow } from '@subscribe.dev/workflow';
const client = new SubscribeDevClient({
apiKey: 'your-api-key'
});
const workflowDefinition = {
name: 'My Workflow',
nodes: [
{
id: 'input-1',
type: 'textInput',
data: { prompt: 'A beautiful sunset' }
},
{
id: 'model-1',
type: 'model',
data: { model: 'black-forest-labs/flux-schnell', aspectRatio: '16:9' }
}
],
edges: [
{
id: 'e1',
source: 'input-1',
target: 'model-1',
sourceHandle: 'prompt',
targetHandle: 'prompt'
}
]
};
const result = await executeWorkflow(client, workflowDefinition, {
onNodeStart: (nodeId) => console.log(`Starting ${nodeId}`),
onNodeComplete: (nodeId, output) => console.log(`Completed ${nodeId}`, output),
onNodeError: (nodeId, error) => console.error(`Error in ${nodeId}:`, error)
});
console.log('Workflow outputs:', result.outputs);Execute by ID
import { executeWorkflowById } from '@subscribe.dev/workflow';
const result = await executeWorkflowById(client, 'workflow-uuid', {
inputValues: {
'input-1': 'Custom input text'
}
});Override Input Values
You can override input values for public input nodes:
const result = await executeWorkflow(client, workflowDefinition, {
inputValues: {
'text-input-node-id': 'Custom prompt text',
'image-input-node-id': 'data:image/jpeg;base64,...'
}
});API Reference
executeWorkflow(client, workflowDefinition, options?)
Execute a workflow from its JSON definition.
client: SubscribeDevClient instanceworkflowDefinition: Workflow JSON with nodes and edgesoptions: Execution options (optional)
executeWorkflowById(client, workflowId, options?)
Execute a workflow by fetching it from the API first.
client: SubscribeDevClient instanceworkflowId: UUID of the workflow to executeoptions: Execution and fetch options (optional)
fetchWorkflowById(client, workflowId, options?)
Fetch a workflow definition by ID.
Options
interface WorkflowExecutionOptions {
inputValues?: Record<string, any>;
onNodeStart?: (nodeId: string) => void;
onNodeComplete?: (nodeId: string, result: any) => void;
onNodeError?: (nodeId: string, error: Error) => void;
onNodeUpdate?: (nodeId: string, update: NodeUpdate) => void;
}Supported Models
The package supports all subscribe.dev AI models including:
- Image Generation: Flux Schnell, Nano Banana, etc.
- Video Generation: WAN, Seedance Lite/Pro, etc.
- Language Models: GPT-4o, Claude 3.5 Sonnet, Gemini 1.5 Flash, etc.
- Voice Models: ElevenLabs TTS
- Special Models: Lipsync for video + audio synchronization
Node Types
textInput: Text input nodesimageInput: Image input nodesmodel: AI model nodes that process inputs and generate outputs
The execution engine handles proper data flow between nodes, including:
- Text → Model prompts
- Images → Model inputs
- Model outputs → Next model inputs
- Multiple outputs and parallel execution
Error Handling
Execution continues even if individual nodes fail. Check the result for errors:
const result = await executeWorkflow(client, workflowDefinition);
if (result.errors) {
console.error('Workflow had errors:', result.errors);
}