Workflows
List workflows
Retrieve a paginated list of workflows.
GET
/
v1
/
workflows
List workflows
curl --request GET \
--url https://app.loops.so/api/v1/workflows \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.loops.so/api/v1/workflows"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.loops.so/api/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://app.loops.so/api/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: Bearer <token>"
],
]);
$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://app.loops.so/api/v1/workflows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.loops.so/api/v1/workflows")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.loops.so/api/v1/workflows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"pagination": {
"totalResults": 45,
"returnedResults": 20,
"perPage": 20,
"totalPages": 3,
"nextCursor": "clp9k2m4n6p8q0r2s4t6u8v0",
"nextPage": "https://app.loops.so/api/v1/workflows?cursor=clp9k2m4n6p8q0r2s4t6u8v0&perPage=20"
},
"data": [
{
"id": "clw1a3b5c7d9e1f3g5h7i9j1",
"url": "https://app.loops.so/workflows/clw1a3b5c7d9e1f3g5h7i9j1",
"name": "Welcome series",
"workflowGroupId": "clg7n5p3q1r9s7t5u3v1w9y7",
"createdAt": "2025-06-29T07:47:39.370Z",
"updatedAt": "2025-06-29T07:47:39.370Z"
}
]
}{
"message": "Workflow not found."
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
How many results to return in each request. Must be between 10 and 50. Default is 20.
A cursor to return a specific page of results. Cursors can be found from the pagination.nextCursor value in each response.
Only return workflows in this workflow group. An ID that matches no group returns an empty list.
Minimum string length:
1Last modified on July 21, 2026
Was this page helpful?
⌘I
List workflows
curl --request GET \
--url https://app.loops.so/api/v1/workflows \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.loops.so/api/v1/workflows"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.loops.so/api/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://app.loops.so/api/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: Bearer <token>"
],
]);
$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://app.loops.so/api/v1/workflows"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.loops.so/api/v1/workflows")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.loops.so/api/v1/workflows")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"pagination": {
"totalResults": 45,
"returnedResults": 20,
"perPage": 20,
"totalPages": 3,
"nextCursor": "clp9k2m4n6p8q0r2s4t6u8v0",
"nextPage": "https://app.loops.so/api/v1/workflows?cursor=clp9k2m4n6p8q0r2s4t6u8v0&perPage=20"
},
"data": [
{
"id": "clw1a3b5c7d9e1f3g5h7i9j1",
"url": "https://app.loops.so/workflows/clw1a3b5c7d9e1f3g5h7i9j1",
"name": "Welcome series",
"workflowGroupId": "clg7n5p3q1r9s7t5u3v1w9y7",
"createdAt": "2025-06-29T07:47:39.370Z",
"updatedAt": "2025-06-29T07:47:39.370Z"
}
]
}{
"message": "Workflow not found."
}
