Workflows — client.workflow
AI-powered automation (n8n) triggered by calls or schedules.
Create & generate
create(name, workflow_json, trigger_type="post_call", description=None, trigger_config=None, execution_mode=None, timeout_seconds=None) → WorkflowCreateResponse— save n8n JSON directly (POST /v1/workflows/).trigger_type∈post_call|in_call|webhook|schedule.generate(name, description, trigger_type="post_call", trigger_config=None, agent_id=None) → GenerateResponse— AI-generate a workflow from a description (POST /v1/workflows/generate); returnsworkflow_json+required_secrets.refine(workflow_id, feedback) → GenerateResponse— AI-refine an existing workflow.
Read / update / delete
retrieve(workflow_id) → WorkflowDetailResponselist(trigger_type=None, status=None, agent_id=None, include_deleted=False, page=1, per_page=20) → list[WorkflowResponse]update(workflow_id, **params) → dict—name,description,is_active,status,execution_mode,timeout_seconds.delete(workflow_id, hard=False) → dict— soft-delete by default;hard=Trueis permanent.restore(workflow_id) → dict
Credentials, deploy, execute
save_secrets(workflow_id, secrets, validate_credentials=False) → dict—secretsis a list of{"key_name","value","type"}; encrypted at rest.get_credential_schema(credential_type) → CredentialSchemaResponsedeploy(workflow_id) → DeployResponse— push to n8n and activate.test(workflow_id, test_data=None) → ExecuteResponseexecute(workflow_id, context_data={}, execution_mode=None) → ExecuteResponselist_executions(workflow_id, status=None, page=1, per_page=20) → dictexport(workflow_id) → dict/import_workflow(file_path) → dict
Agent linking & scheduling
link_agent(workflow_id, agent_id, trigger_condition_description=None, priority=0, execution_mode_override=None) → AgentWorkflowLinkResponseupdate_agent_link(workflow_id, agent_id, **params) → AgentWorkflowLinkResponseunlink_agent(workflow_id, agent_id) → dictlist_agents(workflow_id) → list[AgentWorkflowLinkResponse]list_by_agent(agent_id) → list[AgentWorkflowListItem]set_schedule(workflow_id, cron=None, interval_minutes=None, timezone="UTC") → dict(workflow must betrigger_type="schedule")remove_schedule(workflow_id) → dict/get_schedule(workflow_id) → ScheduleStatusResponse/list_schedules() → dict