Workflows are in Beta. The API and schema may change. Endpoints live under
/v1/workflows and runs go through the existing DeepResearch task lifecycle.How a workflow runs
Running a workflow is a DeepResearch task. You passworkflow_id and workflow_params to POST /v1/deepresearch/tasks; the workflow resolves server-side into a normal run with the same auth, billing, mode pricing, and task lifecycle.
The core endpoints: GET /v1/workflows to discover, GET /v1/workflows/{slug} to inspect variables and deliverables, POST /v1/workflows/{slug}/preview to resolve the workflow without running (free), and POST /v1/deepresearch/tasks to run. Custom org workflows add POST /v1/workflows (create), PATCH /v1/workflows/{slug} (publish a new version), and DELETE /v1/workflows/{slug}.
Both SDKs ship native workflow support: valyu.workflows in Python (pip install valyu, valyu-py >= 2.12.0) and TypeScript (pnpm add valyu-js, valyu-js >= 2.10.0). Every workflow response is an object with a success boolean and an optional error string.
Discover and inspect
List workflows, then read a chosen one to see its variables and deliverables. Valyu-curated workflows cover verticals -investment-banking, private-equity, hedge-funds, consulting, life-sciences, legal-regulatory, sales-intelligence, and supply-chain. Filter the list by scope (valyu | org | all), vertical, q, or tags.
The Workflows quickstart includes SDK and REST examples for listing and inspecting workflows.
The list response is { workflows, total, next_cursor, verticals }. Each row carries slug, version, vertical, tags, title, subtitle, description, popular, recommended_mode, estimated_time, is_valyu, owner_org_id, variables, deliverables, and timestamps. Pass expand=true to also include the workflow body (prompt, strategy, report_format, tools, output_formats). Ownership is is_valyu / owner_org_id - filter on it with scope.
Preview (optional)
Resolve the workflow against your params without running it (nothing is charged) to confirm the final prompt, deliverables, and mode.{ workflow: { slug, version }, resolved: { input, research_strategy, report_format, deliverables, mode, tools, output_formats }, estimated_credits }. Pass workflow_version (Python workflow_version, TS workflowVersion) to preview a specific version.
Run a workflow
Runs go throughdeepresearch.create (POST /v1/deepresearch/tasks) with workflow_id and workflow_params; optionally pin workflow_version. workflow_id is mutually exclusive with query/input/research_strategy/report_format. The create response echoes the resolved workflow: { slug, version }, and the run is a normal DeepResearch task - poll /status and fetch deliverables from the task assets.
Per-run overrides
A workflow supplies the freeform fields - prompt, research strategy, report format - and sensible defaults formode, deliverables, and tools. Every other deepresearch.create option still applies to a workflow run, and a value in the request body wins over the workflow’s.
That covers deliverables, search, previous_reports, hitl, urls, files, mcp_servers, brand_collection_id, metadata, webhook_url, and alert_email. tools is the exception: it is merged with the workflow’s tools, so a tool the workflow enables stays enabled unless you explicitly set that tool to false.
Per-run overrides on a workflow run need
valyu-py >= 2.12.0 or valyu-js >= 2.10.0. Earlier SDK versions dropped these fields when workflow_id was set, so the run silently used the workflow defaults instead. The REST API has always accepted them.Workflow reference
Variables
Variables
Typed inputs filled in at run time. Each variable has a
key, label, type, an optional required flag, and optional placeholder, help, examples, and validation (min_length, max_length, pattern, enum).Placeholders use
{key} syntax. Every {placeholder} in the workflow must map to a variable declared in variables, or the API returns unreferenced_template_vars. Declared variables that aren’t referenced in the workflow are allowed.Deliverables
Deliverables
Output artifacts, each with a
type and description: xlsx (Excel), docx (Word), pptx (PowerPoint), pdf, and csv.xlsx, docx, and pptx require code_execution enabled in the workflow’s tools. Charts are free; screenshots, code execution, browser use, and extra deliverables carry small surcharges. See Pricing.Tools and mode
Tools and mode
A workflow recommends
tools (code_execution, screenshots, browser_use, charts - each a boolean) and a recommended_mode (fast, standard, heavy or max). Override either in the run request body. See research modes and pricing for budgets and charges.Output formats
Output formats
A version body accepts an optional
output_formats array. Items are the strings "markdown", "pdf", or "toon", and/or one JSON-schema object for structured output. The rules:- At most one JSON-schema object.
- A schema object cannot be combined with
"markdown"or"pdf". "toon"requires a schema object.
400 invalid_output_formats. output_formats is returned on workflow detail, on list with ?expand=true, and in preview under resolved.output_formats. At run time, a task created with workflow_id inherits the workflow’s output_formats when the request doesn’t pass its own; a request-level output_formats always wins.A structured forecasting workflow that returns an evidence packet might set:Versioning
Versioning
Versions are immutable.
PATCH /v1/workflows/{slug} (or valyu.workflows.update(...)) publishes a new version by supplying a version body, which must include a changelog (omitting it returns changelog_required). Pin workflow_version to retain a stable workflow configuration. List history with GET /v1/workflows/{slug}/versions - it returns { slug, versions: [...] } where each row carries version, recommended_mode, estimated_time, changelog, created_at, and is_current. Fetch a workflow resolved at a version with GET /v1/workflows/{slug}?version=N.Limits and error codes
Limits and error codes
Workflow errors come back as
{ "error": "<code>", "message": "<human text>" }.Create and version your own
Custom workflows are private to your org (quota 100 by default). Create one with a slug, title, and aversion body holding the prompt, strategy, report format, and optional variables, deliverables, tools, and output_formats. Editing Valyu-curated workflows returns 403 cannot_edit_valyu_workflow.
{ slug, deleted_at }.
Next steps
Workflows quickstart
Discover a workflow and start your first run.
DeepResearch guide
The async research engine workflows run on.
List workflows API
Full endpoint reference for
/v1/workflows.Run via tasks API
Pass
workflow_id to POST /v1/deepresearch/tasks.