curl --request GET \
--url https://api.valyu.ai/v1/workflows/{slug} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.valyu.ai/v1/workflows/{slug}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.valyu.ai/v1/workflows/{slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.valyu.ai/v1/workflows/{slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.valyu.ai/v1/workflows/{slug}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.valyu.ai/v1/workflows/{slug}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valyu.ai/v1/workflows/{slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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"
]
}{
"success": false,
"error": "Invalid API key"
}{
"success": false,
"error": "API key does not have inference permission"
}{
"error": "workflow_not_found",
"message": "No workflow matches that slug."
}{
"success": false,
"error": "Internal server error. Please try again later."
}Get Workflow
Retrieve a single Workflow and its variables, deliverables, and mode.
curl --request GET \
--url https://api.valyu.ai/v1/workflows/{slug} \
--header 'X-API-Key: <api-key>'import requests
url = "https://api.valyu.ai/v1/workflows/{slug}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://api.valyu.ai/v1/workflows/{slug}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.valyu.ai/v1/workflows/{slug}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"X-API-Key: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.valyu.ai/v1/workflows/{slug}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://api.valyu.ai/v1/workflows/{slug}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.valyu.ai/v1/workflows/{slug}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"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"
]
}{
"success": false,
"error": "Invalid API key"
}{
"success": false,
"error": "API key does not have inference permission"
}{
"error": "workflow_not_found",
"message": "No workflow matches that slug."
}{
"success": false,
"error": "Internal server error. Please try again later."
}Authorizations
API key for authentication. Get yours at platform.valyu.ai.
Path Parameters
The workflow slug.
Query Parameters
Version to return. Defaults to the current version.
x >= 1Response
The workflow.
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.
Unique slug identifying the workflow within its scope. Used as workflow_id when running.
"ib-company-profile"
The current (floating) published version number.
x >= 11
Display title.
"Company Profile"
Vertical the workflow targets (e.g. investment-banking, private-equity, hedge-funds, consulting, life-sciences, legal-regulatory, sales-intelligence, supply-chain).
"investment-banking"
Tags for discovery. Up to 20.
20["company-profile", "equities"]
Short subtitle.
"One-page profile of a public company."
Longer description of what the workflow does.
"Builds a company profile covering business, financials, and recent developments."
Whether the workflow is flagged as popular.
true
Recommended DeepResearch mode for a workflow. Maps directly to the DeepResearch mode parameter.
fast, standard, heavy, max "heavy"
Human-readable estimate of how long a run takes.
"10-20 min"
Whether this is a Valyu-curated workflow (read-only to users).
true
Organization that owns the workflow. null for Valyu-curated workflows.
null
Typed variables referenced by the prompt template. Up to 50.
50Show child attributes
Show child attributes
Deliverables the workflow produces. Up to 20.
20Show child attributes
Show child attributes
When the workflow was created.
"2026-01-10T12:00:00Z"
When the workflow's current version was last published.
"2026-01-15T09:30:00Z"
Prompt template with {key} placeholders. Included on detail (get/create/update) and on list with ?expand=true.
"Build a company profile for {company} covering its business, financials, and recent developments."
Research strategy. Maps to DeepResearch research_strategy. Included on detail and on list with ?expand=true.
Report format instructions. Maps to DeepResearch report_format. Included on detail and on list with ?expand=true.
Optional tools the workflow's research agent may use.
Show child attributes
Show child attributes
Changelog for the current version. Included on detail and on list with ?expand=true.
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.
markdown, pdf, toon [
{
"type": "object",
"properties": {
"base_case": { "type": "string" },
"bull_case": { "type": "string" },
"bear_case": { "type": "string" },
"confidence": { "type": "number" }
}
},
"toon"
]
Was this page helpful?

