List Workflows
curl --request GET \
--url https://api.slatehq.ai/workflow-service/api/public/v1/workflows \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/workflow-service/api/public/v1/workflows"
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', 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",
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"
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")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/workflow-service/api/public/v1/workflows")
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{
"data": [
{
"_id": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"uuid": "<string>",
"categories": [
"<string>"
],
"defaultVersion": 123,
"totalVersions": 123,
"emoji": "<string>",
"color": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
],
"pagination": {
"page": 123,
"limit": 123,
"total": 123,
"totalPages": 123
}
}Workflows
List Workflows
Retrieve a paginated list of workflows in your workspace with optional filters.
GET
/
workflow-service
/
api
/
public
/
v1
/
workflows
List Workflows
curl --request GET \
--url https://api.slatehq.ai/workflow-service/api/public/v1/workflows \
--header 'Authorization: <authorization>'import requests
url = "https://api.slatehq.ai/workflow-service/api/public/v1/workflows"
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', 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",
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"
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")
.header("Authorization", "<authorization>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.slatehq.ai/workflow-service/api/public/v1/workflows")
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{
"data": [
{
"_id": "<string>",
"name": "<string>",
"description": "<string>",
"status": "<string>",
"uuid": "<string>",
"categories": [
"<string>"
],
"defaultVersion": 123,
"totalVersions": 123,
"emoji": "<string>",
"color": "<string>",
"createdAt": "<string>",
"updatedAt": "<string>"
}
],
"pagination": {
"page": 123,
"limit": 123,
"total": 123,
"totalPages": 123
}
}Returns a paginated list of workflows in the token’s workspace. Use query parameters to filter by status, search by name, and control pagination.
Parameters
string
required
Bearer token. Format:
Bearer slat_<your-token>.string
Filter by workflow status. One of:
draft, published.string
Search workflows by name. Case-insensitive partial match.
integer
Page number for pagination. Default:
1.integer
Number of workflows per page. Default:
15.Response
Returns200 OK with a paginated list of workflows.
object[]
required
Array of workflow objects.
Show workflow object
Show workflow object
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.
string
Emoji icon for the workflow.
string
Color label for the workflow.
string
required
Timestamp when the workflow was created. ISO 8601 format.
string
required
Timestamp of the last update. ISO 8601 format.
object
required
Example
curl -s "https://api.slatehq.ai/workflow-service/api/public/v1/workflows?status=published&page=1&limit=10" \
-H "Authorization: Bearer slat_YOUR_TOKEN"
import requests
response = requests.get(
"https://api.slatehq.ai/workflow-service/api/public/v1/workflows",
headers={
"Authorization": "Bearer slat_YOUR_TOKEN",
},
params={
"status": "published",
"page": 1,
"limit": 10,
},
)
result = response.json()
for workflow in result["data"]:
print(workflow["_id"], workflow["name"], workflow["status"])
const params = new URLSearchParams({
status: "published",
page: "1",
limit: "10",
});
const response = await fetch(
`https://api.slatehq.ai/workflow-service/api/public/v1/workflows?${params}`,
{
headers: {
"Authorization": "Bearer slat_YOUR_TOKEN",
},
}
);
const result = await response.json();
console.log(result.data.length, "workflows found");
Response
{
"data": [
{
"_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,
"emoji": "",
"color": "blue",
"createdAt": "2026-01-10T08:30:00.000Z",
"updatedAt": "2026-01-25T14:15:00.000Z"
},
{
"_id": "6789abc0def1234567890def",
"name": "Competitor Analysis",
"description": "Analyzes competitor domains and generates a comparison report.",
"status": "published",
"uuid": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
"categories": ["analytics"],
"defaultVersion": 1,
"totalVersions": 1,
"emoji": "",
"color": "green",
"createdAt": "2026-01-15T10:00:00.000Z",
"updatedAt": "2026-01-20T09:45:00.000Z"
}
],
"pagination": {
"page": 1,
"limit": 10,
"total": 2,
"totalPages": 1
}
}
Results are sorted by
updatedAt in descending order (most recently updated first).Status codes
| Status | Description |
|---|---|
200 | List returned. |
401 | Missing or invalid Bearer token. See Authentication. |
500 | Internal server error. |
What’s next
- Get Workflow — Get full details for a specific workflow.
- Create Workflow Run — Trigger a run for a workflow.
Was this page helpful?