Valyu
A platform company providing search and deep research workflow capabilities. It allows organizations to create versionable custom research templates and invoke them through an API.
Timeline (last 90 days)
On day 13 of its 30-day search series, Valyu fully demonstrated a real case: how to build a custom DeepResearch workflow for vendor onboarding research and call it through the TypeScript API.
Custom workflows are private to the organization and can be created, edited, and versioned, unlike the platform's built-in read-only templates.
The core components of a workflow include: Prompt (task statement), Variables, Research strategy, Report format, Deliverable, Tools, and Version.
The strategy is a research instruction rather than a mandatory whitelist; if the search scope needs to be restricted, request-level search configuration should be used; a cutoff date in the Prompt does not generate a historical snapshot of the underlying data.
The platform automatically detects variable rows from `{variable}` placeholders, and the key name must exactly match the placeholder (for example, `{review_date}` requires a variable named `review_date`).
Template versions are immutable, and publishing a new version requires filling in a changelog; but a version locks the instructions, not the answer, and source records, available evidence, and generated wording may still vary between runs.
The Preview endpoint can parse the template without launching research or consuming research quota, resolving `{variable}` placeholders and various instructions into the complete parameters of a real research task and returning them to the caller for confirmation, but it does not trigger any crawling, retrieval, or model calls.
When calling a workflow with TypeScript, a key belonging to the organization that owns the workflow is required; the example uses Node 22+ and `valyu-js@2.10.1`, and by default only a preview is executed, and the billed research task is started only when the `--run` parameter is added.
When calling `deepresearch.create()`, use `workflowId`, `workflowParams` and the optional `workflowVersion`; do not also pass free-form `query`, `researchStrategy` or `reportFormat` in the same request, as passing them repeatedly will cause field conflicts.
In the asynchronous task model, after `deepresearch.create()` sends the request the server immediately returns a task ID, and the actual research is queued and executed in the background; a wait timeout does not mean the task failed, and one should first query the status using the task ID rather than resending directly, because resending will create a new paid task and a duplicate report.
3 more timeline events
All Facts (13)
Common problems include: placeholders not filled in, dates or numbers being rejected, a private workflow not being found (the key's organization does not match), a new version failing to save due to a missing changelog, and code execution not being enabled for generating Office files.
50%UnverifiedCustom workflows are private to the organization and can be created, edited, and versioned, unlike the platform's built-in read-only templates.
50%UnverifiedThe core components of a workflow include: Prompt (task statement), Variables, Research strategy, Report format, Deliverable, Tools, and Version.
50%UnverifiedThe strategy is a research instruction rather than a mandatory whitelist; if the search scope needs to be restricted, request-level search configuration should be used; a cutoff date in the Prompt does not generate a historical snapshot of the underlying data.
50%UnverifiedThe platform automatically detects variable rows from `{variable}` placeholders, and the key name must exactly match the placeholder (for example, `{review_date}` requires a variable named `review_date`).
50%UnverifiedTemplate versions are immutable, and publishing a new version requires filling in a changelog; but a version locks the instructions, not the answer, and source records, available evidence, and generated wording may still vary between runs.
50%UnverifiedThe Preview endpoint can parse the template without launching research or consuming research quota, resolving `{variable}` placeholders and various instructions into the complete parameters of a real research task and returning them to the caller for confirmation, but it does not trigger any crawling, retrieval, or model calls.
50%UnverifiedWhen calling a workflow with TypeScript, a key belonging to the organization that owns the workflow is required; the example uses Node 22+ and `valyu-js@2.10.1`, and by default only a preview is executed, and the billed research task is started only when the `--run` parameter is added.
50%UnverifiedWhen calling `deepresearch.create()`, use `workflowId`, `workflowParams` and the optional `workflowVersion`; do not also pass free-form `query`, `researchStrategy` or `reportFormat` in the same request, as passing them repeatedly will cause field conflicts.
50%UnverifiedIn the asynchronous task model, after `deepresearch.create()` sends the request the server immediately returns a task ID, and the actual research is queued and executed in the background; a wait timeout does not mean the task failed, and one should first query the status using the task ID rather than resending directly, because resending will create a new paid task and a duplicate report.
50%UnverifiedDifferent deliverables may have different completion times, and the Markdown report and the DOCX file each have their own independent delivery status in the result object.
50%UnverifiedThe verification notes provided by the author include: the platform operations completed workflow creation, one Standard task with a DOCX deliverable and saving of version 2; the TypeScript example passed strict compilation and seven local SDK/HTTP firmware tests, covering paths such as version locking, preview-only execution and not resubmitting on failure, but the firmware tests did not execute additional paid research.
50%UnverifiedOn day 13 of its 30-day search series, Valyu fully demonstrated a real case: how to build a custom DeepResearch workflow for vendor onboarding research and call it through the TypeScript API.
50%