Documentation Index
Fetch the complete documentation index at: https://docs.pyspur.dev/llms.txt
Use this file to discover all available pages before exploring further.
Workflow Runs API
This document outlines the API endpoints for running and managing workflow executions in PySpur.
Run Workflow (Blocking)
Description: Executes a workflow synchronously and returns the outputs. This is a blocking call that waits for the workflow to complete before returning a response. If the workflow contains a human intervention node, it may pause execution and return a pause exception.
URL: /wf/{workflow_id}/run/
Method: POST
Parameters:
workflow_id: str # ID of the workflow to run
Request Payload:
class StartRunRequestSchema(BaseModel):
initial_inputs: Optional[Dict[str, Dict[str, Any]]] = None # Initial inputs for the workflow
parent_run_id: Optional[str] = None # ID of the parent run (for nested workflows)
files: Optional[Dict[str, List[str]]] = None # Files to use in the workflow
Response Schema:
Dict[str, Any] # Dictionary of node outputs
Start Run (Non-Blocking)
Description: Starts a workflow execution asynchronously and returns immediately with the run details. The workflow continues execution in the background. This is useful for long-running workflows where you don’t want to wait for completion.
URL: /wf/{workflow_id}/start_run/
Method: POST
Parameters:
workflow_id: str # ID of the workflow to run
Request Payload: Same as Run Workflow (Blocking)
Response Schema:
class RunResponseSchema(BaseModel):
id: str # Run ID
workflow_id: str # ID of the workflow
workflow_version_id: Optional[str] # ID of the workflow version
workflow_version: Optional[WorkflowVersionResponseSchema] # Details of the workflow version
status: RunStatus # Current status of the run
start_time: datetime # When the run started
end_time: Optional[datetime] # When the run ended (if completed)
initial_inputs: Optional[Dict[str, Dict[str, Any]]] # Initial inputs to the workflow
outputs: Optional[Dict[str, Dict[str, Any]]] # Outputs from the workflow
tasks: List[TaskResponseSchema] # List of tasks in the run
parent_run_id: Optional[str] # ID of the parent run (if applicable)
run_type: str # Type of run (e.g., "interactive")
output_file_id: Optional[str] # ID of the output file
input_dataset_id: Optional[str] # ID of the input dataset
message: Optional[str] # Additional information about the run
duration: Optional[float] # Duration of the run in seconds
percentage_complete: float # Percentage of tasks completed
Run Partial Workflow
Description: Executes a partial workflow starting from a specific node, using precomputed outputs for upstream nodes. This is useful for testing specific parts of a workflow without running the entire workflow.
URL: /wf/{workflow_id}/run_partial/
Method: POST
Parameters:
workflow_id: str # ID of the workflow to run
Request Payload:
class PartialRunRequestSchema(BaseModel):
node_id: str # ID of the node to start execution from
initial_inputs: Optional[Dict[str, Dict[str, Any]]] = None # Initial inputs for the workflow
partial_outputs: Optional[Dict[str, Dict[str, Any]]] = None # Precomputed outputs for upstream nodes
Response Schema:
Dict[str, Any] # Dictionary of node outputs
Start Batch Run
Description: Starts a batch execution of a workflow over a dataset. The workflow is run once for each row in the dataset, with dataset columns mapped to workflow inputs. Results are written to an output file.
URL: /wf/{workflow_id}/start_batch_run/
Method: POST
Parameters:
workflow_id: str # ID of the workflow to run
Request Payload:
class BatchRunRequestSchema(BaseModel):
dataset_id: str # ID of the dataset to use
mini_batch_size: int = 10 # Number of rows to process in each mini-batch
Response Schema: Same as Start Run (Non-Blocking)
List Runs
Description: Lists all runs for a specific workflow with pagination support, ordered by start time descending. This endpoint also updates run status based on task status.
URL: /wf/{workflow_id}/runs/
Method: GET
Parameters:
workflow_id: str # ID of the workflow
page: int # Page number (default: 1, min: 1)
page_size: int # Number of items per page (default: 10, min: 1, max: 100)
Response Schema:
List[RunResponseSchema] # List of run details
List Paused Workflows
Description: Lists all workflows that are currently in a paused state, with pagination support. This endpoint is useful for monitoring workflows that require human intervention.
URL: /wf/paused_workflows/
Method: GET
Query Parameters:
page: int # Page number (default: 1, min: 1)
page_size: int # Number of items per page (default: 10, min: 1, max: 100)
Response Schema:
List[PausedWorkflowResponseSchema]
Where PausedWorkflowResponseSchema contains:
class PausedWorkflowResponseSchema(BaseModel):
run: RunResponseSchema # Information about the workflow run
current_pause: PauseHistoryResponseSchema # Details about the current pause state
workflow: WorkflowDefinitionSchema # The workflow definition
Get Pause History
Description: Retrieves the pause history for a specific workflow run, showing when and why the workflow was paused, and any actions taken to resume it.
URL: /wf/pause_history/{run_id}/
Method: GET
Parameters:
run_id: str # ID of the workflow run
Response Schema:
List[PauseHistoryResponseSchema]
Where PauseHistoryResponseSchema contains:
class PauseHistoryResponseSchema(BaseModel):
id: str # Synthetic ID for API compatibility
run_id: str # ID of the run
node_id: str # ID of the node where the pause occurred
pause_message: Optional[str] # Message explaining the pause reason
pause_time: datetime # When the workflow was paused
resume_time: Optional[datetime] # When the workflow was resumed (if applicable)
resume_user_id: Optional[str] # ID of the user who resumed the workflow
resume_action: Optional[PauseAction] # Action taken (APPROVE/DECLINE/OVERRIDE)
input_data: Optional[Dict[str, Any]] # Input data at the time of pause
comments: Optional[str] # Additional comments about the pause/resume
Process Pause Action
Description: Processes an action on a paused workflow, allowing for approval, decline, or override of a workflow that has been paused for human intervention. The workflow will resume execution based on the action taken.
URL: /wf/process_pause_action/{run_id}/
Method: POST
Parameters:
run_id: str # ID of the workflow run
Request Payload:
class ResumeRunRequestSchema(BaseModel):
inputs: Dict[str, Any] # Human-provided inputs for the paused node
user_id: str # ID of the user resuming the workflow
action: PauseAction # Action taken (APPROVE/DECLINE/OVERRIDE)
comments: Optional[str] = None # Optional comments about the decision
Response Schema: Same as Start Run (Non-Blocking)
Cancel Workflow
Description: Cancels a workflow that is currently paused or running. This will mark the run as CANCELED in the database and update all pending, running, and paused tasks to CANCELED as well.
URL: /wf/cancel_workflow/{run_id}/
Method: POST
Parameters:
run_id: str # ID of the run to cancel
Response Schema: Same as Start Run (Non-Blocking) with a message indicating the workflow has been canceled successfully.