Skip to main content
POST
/
v1
/
workflows
Create an organization workflow (Beta)
curl --request POST \
  --url https://api.valyu.ai/v1/workflows \
  --header 'Content-Type: application/json' \
  --header 'X-API-Key: <api-key>' \
  --data '
{
  "slug": "quarterly-company-profile",
  "title": "Quarterly Company Profile",
  "version": {
    "prompt": "Build a company profile for {company} covering its business, financials, and recent developments.",
    "strategy": "Prioritise the latest 10-K/10-Q, investor relations materials, and reputable news.",
    "report_format": "A one-page profile with business overview, key financials, and recent developments.",
    "variables": [
      {
        "key": "company",
        "label": "Company name",
        "type": "text",
        "required": false,
        "placeholder": "NVIDIA (NVDA)",
        "help": "The company you want to profile.",
        "examples": [
          "NVIDIA (NVDA)",
          "Microsoft (MSFT)"
        ],
        "validation": {
          "min_length": 1,
          "max_length": 2,
          "pattern": "<string>",
          "enum": [
            "<string>"
          ]
        }
      }
    ],
    "deliverables": [
      {
        "type": "xlsx",
        "description": "A model summary tab with revenue, margins, and key ratios."
      }
    ],
    "tools": {
      "code_execution": true,
      "screenshots": true,
      "browser_use": true,
      "charts": true
    },
    "recommended_mode": "heavy",
    "estimated_time": "10-20 min",
    "output_formats": [
      {
        "type": "object",
        "properties": {
          "base_case": {
            "type": "string"
          },
          "bull_case": {
            "type": "string"
          },
          "bear_case": {
            "type": "string"
          },
          "confidence": {
            "type": "number"
          }
        }
      },
      "toon"
    ],
    "changelog": "Added a competitive landscape section."
  },
  "subtitle": "One-page profile of a public company.",
  "description": "Builds a company profile covering business, financials, and recent developments.",
  "vertical": "investment-banking",
  "tags": [
    "company-profile",
    "equities"
  ],
  "icon": "building"
}
'
{
  "slug": "ib-company-profile",
  "version": 1,
  "title": "Company Profile",
  "vertical": "investment-banking",
  "tags": [
    "company-profile",
    "equities"
  ],
  "subtitle": "One-page profile of a public company.",
  "description": "Builds a company profile covering business, financials, and recent developments.",
  "popular": true,
  "recommended_mode": "heavy",
  "estimated_time": "10-20 min",
  "is_valyu": true,
  "owner_org_id": null,
  "variables": [
    {
      "key": "company",
      "label": "Company name",
      "type": "text",
      "required": false,
      "placeholder": "NVIDIA (NVDA)",
      "help": "The company you want to profile.",
      "examples": [
        "NVIDIA (NVDA)",
        "Microsoft (MSFT)"
      ],
      "validation": {
        "min_length": 1,
        "max_length": 2,
        "pattern": "<string>",
        "enum": [
          "<string>"
        ]
      }
    }
  ],
  "deliverables": [
    {
      "type": "xlsx",
      "description": "A model summary tab with revenue, margins, and key ratios."
    }
  ],
  "created_at": "2026-01-10T12:00:00Z",
  "updated_at": "2026-01-15T09:30:00Z",
  "prompt": "Build a company profile for {company} covering its business, financials, and recent developments.",
  "strategy": "<string>",
  "report_format": "<string>",
  "tools": {
    "code_execution": true,
    "screenshots": true,
    "browser_use": true,
    "charts": true
  },
  "changelog": "<string>",
  "output_formats": [
    {
      "type": "object",
      "properties": {
        "base_case": {
          "type": "string"
        },
        "bull_case": {
          "type": "string"
        },
        "bear_case": {
          "type": "string"
        },
        "confidence": {
          "type": "number"
        }
      }
    },
    "toon"
  ]
}

Authorizations

X-API-Key
string
header
required

API key for authentication. Get yours at platform.valyu.ai.

Body

application/json

Create an organization workflow. The authenticated org owns the workflow. Default org quota is 100 workflows. The first version is supplied as the nested version object.

slug
string
required

Unique slug within your org.

Example:

"quarterly-company-profile"

title
string
required
Example:

"Quarterly Company Profile"

version
object
required

The workflow's first version body.

subtitle
string
Example:

"One-page profile of a public company."

description
string
Example:

"Builds a company profile covering business, financials, and recent developments."

vertical
string
Example:

"investment-banking"

tags
string[]
Maximum array length: 20
Example:
["company-profile", "equities"]
icon
string
Example:

"building"

Response

Workflow created.

A single workflow returned as a flat object: the list-row fields plus the resolved version body (prompt, strategy, report_format, tools, changelog, output_formats). Returned by get, create (201), and update.

slug
string
required

Unique slug identifying the workflow within its scope. Used as workflow_id when running.

Example:

"ib-company-profile"

version
integer
required

The current (floating) published version number.

Required range: x >= 1
Example:

1

title
string
required

Display title.

Example:

"Company Profile"

vertical
string | null

Vertical the workflow targets (e.g. investment-banking, private-equity, hedge-funds, consulting, life-sciences, legal-regulatory, sales-intelligence, supply-chain).

Example:

"investment-banking"

tags
string[]

Tags for discovery. Up to 20.

Maximum array length: 20
Example:
["company-profile", "equities"]
subtitle
string | null

Short subtitle.

Example:

"One-page profile of a public company."

description
string | null

Longer description of what the workflow does.

Example:

"Builds a company profile covering business, financials, and recent developments."

Whether the workflow is flagged as popular.

Example:

true

Recommended DeepResearch mode for a workflow. Maps directly to the DeepResearch mode parameter.

Available options:
fast,
standard,
heavy,
max
Example:

"heavy"

estimated_time
string | null

Human-readable estimate of how long a run takes.

Example:

"10-20 min"

is_valyu
boolean

Whether this is a Valyu-curated workflow (read-only to users).

Example:

true

owner_org_id
string | null

Organization that owns the workflow. null for Valyu-curated workflows.

Example:

null

variables
object[]

Typed variables referenced by the prompt template. Up to 50.

Maximum array length: 50
deliverables
object[]

Deliverables the workflow produces. Up to 20.

Maximum array length: 20
created_at
string<date-time>

When the workflow was created.

Example:

"2026-01-10T12:00:00Z"

updated_at
string<date-time>

When the workflow's current version was last published.

Example:

"2026-01-15T09:30:00Z"

prompt
string

Prompt template with {key} placeholders. Included on detail (get/create/update) and on list with ?expand=true.

Example:

"Build a company profile for {company} covering its business, financials, and recent developments."

strategy
string | null

Research strategy. Maps to DeepResearch research_strategy. Included on detail and on list with ?expand=true.

report_format
string | null

Report format instructions. Maps to DeepResearch report_format. Included on detail and on list with ?expand=true.

tools
object

Optional tools the workflow's research agent may use.

changelog
string | null

Changelog for the current version. Included on detail and on list with ?expand=true.

output_formats
(enum<string> | object)[]

Output formats the workflow produces. Items are the strings "markdown", "pdf", or "toon", and/or a single JSON Schema object for structured output. Rules: at most one JSON Schema object; a JSON Schema object cannot be combined with "markdown" or "pdf"; "toon" requires a JSON Schema object. An invalid combination returns 400 invalid_output_formats.

At run time, a task created with workflow_id inherits the workflow's output_formats when the request does not pass its own; a request-level output_formats always wins.

Available options:
markdown,
pdf,
toon
Example:
[
{
"type": "object",
"properties": {
"base_case": { "type": "string" },
"bull_case": { "type": "string" },
"bear_case": { "type": "string" },
"confidence": { "type": "number" }
}
},
"toon"
]