Get Workflow
curl --request GET \
--url https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId} \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}', 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.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"_id": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"uuid": "<string>",
"categories": [
"<string>"
],
"defaultVersion": 123,
"totalVersions": 123,
"inputSchema": [
{
"id": "<string>",
"type": "<string>",
"label": "<string>",
"variableName": "<string>",
"required": true
}
],
"outputType": "<string>",
"emoji": "<string>",
"color": "<string>",
"readme": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}Workflows
Get Workflow
Retrieve the details, version info, and input schema of a specific workflow.
GET
/
workflow-service
/
api
/
public
/
v1
/
workflows
/
{workflowId}
Get Workflow
curl --request GET \
--url https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId} \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}"
headers = {"Authorization": "<authorization>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: '<authorization>'}};
fetch('https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}', 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.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: <authorization>"
],
]);
$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.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "<authorization>")
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.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/workflow-service/api/public/v1/workflows/{workflowId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = '<authorization>'
response = http.request(request)
puts response.read_body{
"_id": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"uuid": "<string>",
"categories": [
"<string>"
],
"defaultVersion": 123,
"totalVersions": 123,
"inputSchema": [
{
"id": "<string>",
"type": "<string>",
"label": "<string>",
"variableName": "<string>",
"required": true
}
],
"outputType": "<string>",
"emoji": "<string>",
"color": "<string>",
"readme": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}Returns full details for a single workflow, including its input schema if the workflow has been published.
Parameters
string
required
Unique identifier for the workflow. This is the
_id value returned by the List Workflows endpoint.string
required
Bearer token. Format:
Bearer slat_<your-token>.Response
Returns200 OK with the workflow details.
string
required
Unique identifier for the workflow.
string
required
Display name of the workflow.
string
Description of what the workflow does.
string
required
Current status. One of:
draft, published.string
required
Unique UUID for the workflow.
string[]
Tags assigned to the workflow.
number
required
The active published version number.
0 if no version has been published.number
required
Total number of published versions.
object[]
Input fields required to run the workflow. Only present for published workflows. Each object describes one input parameter.
Show input schema object
Show input schema object
string
Unique identifier for the input field.
string
Data type of the input (e.g.,
text, number, url).string
Display label for the input field.
string
Variable name used to reference the input in the workflow. Use this as the key in the
inputs object when creating a run.boolean
Whether the input is required to run the workflow.
string
Type of output the workflow produces. Only present for published workflows.
string
Emoji icon for the workflow.
string
Color label for the workflow.
string
Documentation or notes for the workflow.
string
required
Timestamp when the workflow was created. ISO 8601 format.
string
required
Timestamp of the last update. ISO 8601 format.
Example
curl -s "https://api.slatehq.ai/workflow-service/api/public/v1/workflows/6789abc0def1234567890abc" \
-H "Authorization: Bearer slat_YOUR_TOKEN"
import requests
response = requests.get(
"https://api.slatehq.ai/workflow-service/api/public/v1/workflows/6789abc0def1234567890abc",
headers={
"Authorization": "Bearer slat_YOUR_TOKEN",
},
)
workflow = response.json()
print(workflow["name"], workflow["status"])
# Print input schema for published workflows
if workflow.get("inputSchema"):
for field in workflow["inputSchema"]:
print(f" {field['variableName']} ({field['type']}): {field['label']}")
const response = await fetch(
"https://api.slatehq.ai/workflow-service/api/public/v1/workflows/6789abc0def1234567890abc",
{
headers: {
"Authorization": "Bearer slat_YOUR_TOKEN",
},
}
);
const workflow = await response.json();
console.log(workflow.name, workflow.status);
Response
{
"_id": "6789abc0def1234567890abc",
"name": "SEO Content Generator",
"description": "Generates SEO-optimized blog posts from a brand domain.",
"status": "published",
"uuid": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"categories": ["content", "seo"],
"defaultVersion": 3,
"totalVersions": 3,
"inputSchema": [
{
"id": "input_1",
"type": "text",
"label": "Brand Domain",
"variableName": "brandDomain",
"required": true
},
{
"id": "input_2",
"type": "text",
"label": "Target Keywords",
"variableName": "targetKeywords",
"required": false
}
],
"outputType": "document",
"emoji": "",
"color": "blue",
"readme": "",
"createdAt": "2026-01-10T08:30:00.000Z",
"updatedAt": "2026-01-25T14:15:00.000Z"
}
Use the
inputSchema to discover what inputs to pass when creating a workflow run. The variableName field maps directly to the keys in the inputs object.Status codes
| Status | Description |
|---|---|
200 | Workflow found. Returns the full workflow details. |
401 | Missing or invalid Bearer token. See Authentication. |
404 | Workflow not found. The ID does not exist or does not belong to this workspace. |
500 | Internal server error. |
What’s next
- List Workflows — Browse all workflows in your workspace.
- Create Workflow Run — Trigger a run using the input schema from this endpoint.
Was this page helpful?