from retab import Retab
client = Retab()
workflows = client.workflows.list(
limit=10,
order="desc",
sort_by="updated_at",
)
next_page = client.workflows.list(
after=workflows.list_metadata.after,
limit=5,
)
print(workflows.list_metadata.after)
print(next_page.data[0].name)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const workflows = await client.workflows.list({
limit: 10,
order: "desc",
sortBy: "updated_at",
});
const nextPage = await client.workflows.list({
after: workflows.list_metadata.after ?? undefined,
limit: 5,
});
console.log(workflows.list_metadata.after);
console.log(nextPage.data[0]?.name);
package main
import (
"context"
"fmt"
"log"
retab "github.com/retab-dev/retab/clients/go"
)
func ptr[T any](v T) *T { return &v }
func main() {
ctx := context.Background()
client, err := retab.NewClient("")
if err != nil {
log.Fatal(err)
}
workflows, err := client.Workflows.List(ctx, &retab.WorkflowsListParams{
PaginationParams: retab.PaginationParams{Limit: ptr(10), Order: ptr("desc")},
SortBy: ptr("updated_at"),
})
if err != nil {
log.Fatal(err)
}
filtered, err := client.Workflows.List(ctx, &retab.WorkflowsListParams{
PaginationParams: retab.PaginationParams{
After: ptr("workflow_abc123xyz"),
Limit: ptr(5),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(workflows.ListMetadata.After)
fmt.Println(filtered.Data[0].Name)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
workflows = client.workflows.list(
limit: 10,
order: 'desc',
sort_by: 'updated_at',
)
filtered = client.workflows.list(
after: 'workflow_abc123xyz',
limit: 5,
fields: 'id,name,updated_at',
)
puts workflows.list_metadata.after
puts filtered.data[0].name
use retab::enums::WorkflowsOrder;
use retab::resources::workflows::ListParams;
use retab::Retab;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
let workflows = client
.workflows()
.list(ListParams {
limit: Some(10),
order: Some(WorkflowsOrder::Desc),
sort_by: Some("updated_at".into()),
..Default::default()
})
.await?;
let filtered = client
.workflows()
.list(ListParams {
after: Some("workflow_abc123xyz".into()),
limit: Some(5),
..Default::default()
})
.await?;
println!("{:?}", workflows.list_metadata.after);
if let Some(first) = filtered.data.first() {
println!("{}", first.name.as_deref().unwrap_or(""));
}
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->list();
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
var result = await client.Workflows.ListAsync(new WorkflowsListOptions());
Console.WriteLine(result);
import com.retab.RetabClient;
public final class Example {
public static void main(String[] args) throws Exception {
RetabClient client = new RetabClient(System.getenv("RETAB_API_KEY"));
var result = client.workflows().list(null, null, 10L, null, "created_at", null);
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows?limit=10&order=desc&sort_by=updated_at' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
curl -X 'GET' \
'https://api.retab.com/v1/workflows?after=workflow_abc123xyz&limit=5&fields=id%2Cname%2Cupdated_at' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
{
"data": [
{
"id": "workflow_def456xyz",
"name": "Invoice Processing",
"description": "Extract invoice fields and route for review",
"published": {
"version_id": "ver_8zJfV7T9qK2mP4xN6bR1cD3eF5gH7iJ9",
"published_at": "2026-03-12T09:45:00Z"
},
"created_at": "2026-03-10T12:00:00Z",
"updated_at": "2026-03-12T09:45:00Z"
},
{
"id": "workflow_abc123xyz",
"name": "Receipt Classification",
"description": "",
"published": null,
"created_at": "2026-03-09T15:30:00Z",
"updated_at": "2026-03-11T18:20:00Z"
}
],
"list_metadata": {
"before": null,
"after": "workflow_abc123xyz"
}
}
Workflows
List Workflows
List workflows with pagination and optional filtering.
GET
/
v1
/
workflows
from retab import Retab
client = Retab()
workflows = client.workflows.list(
limit=10,
order="desc",
sort_by="updated_at",
)
next_page = client.workflows.list(
after=workflows.list_metadata.after,
limit=5,
)
print(workflows.list_metadata.after)
print(next_page.data[0].name)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const workflows = await client.workflows.list({
limit: 10,
order: "desc",
sortBy: "updated_at",
});
const nextPage = await client.workflows.list({
after: workflows.list_metadata.after ?? undefined,
limit: 5,
});
console.log(workflows.list_metadata.after);
console.log(nextPage.data[0]?.name);
package main
import (
"context"
"fmt"
"log"
retab "github.com/retab-dev/retab/clients/go"
)
func ptr[T any](v T) *T { return &v }
func main() {
ctx := context.Background()
client, err := retab.NewClient("")
if err != nil {
log.Fatal(err)
}
workflows, err := client.Workflows.List(ctx, &retab.WorkflowsListParams{
PaginationParams: retab.PaginationParams{Limit: ptr(10), Order: ptr("desc")},
SortBy: ptr("updated_at"),
})
if err != nil {
log.Fatal(err)
}
filtered, err := client.Workflows.List(ctx, &retab.WorkflowsListParams{
PaginationParams: retab.PaginationParams{
After: ptr("workflow_abc123xyz"),
Limit: ptr(5),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(workflows.ListMetadata.After)
fmt.Println(filtered.Data[0].Name)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
workflows = client.workflows.list(
limit: 10,
order: 'desc',
sort_by: 'updated_at',
)
filtered = client.workflows.list(
after: 'workflow_abc123xyz',
limit: 5,
fields: 'id,name,updated_at',
)
puts workflows.list_metadata.after
puts filtered.data[0].name
use retab::enums::WorkflowsOrder;
use retab::resources::workflows::ListParams;
use retab::Retab;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
let workflows = client
.workflows()
.list(ListParams {
limit: Some(10),
order: Some(WorkflowsOrder::Desc),
sort_by: Some("updated_at".into()),
..Default::default()
})
.await?;
let filtered = client
.workflows()
.list(ListParams {
after: Some("workflow_abc123xyz".into()),
limit: Some(5),
..Default::default()
})
.await?;
println!("{:?}", workflows.list_metadata.after);
if let Some(first) = filtered.data.first() {
println!("{}", first.name.as_deref().unwrap_or(""));
}
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->list();
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
var result = await client.Workflows.ListAsync(new WorkflowsListOptions());
Console.WriteLine(result);
import com.retab.RetabClient;
public final class Example {
public static void main(String[] args) throws Exception {
RetabClient client = new RetabClient(System.getenv("RETAB_API_KEY"));
var result = client.workflows().list(null, null, 10L, null, "created_at", null);
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows?limit=10&order=desc&sort_by=updated_at' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
curl -X 'GET' \
'https://api.retab.com/v1/workflows?after=workflow_abc123xyz&limit=5&fields=id%2Cname%2Cupdated_at' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
{
"data": [
{
"id": "workflow_def456xyz",
"name": "Invoice Processing",
"description": "Extract invoice fields and route for review",
"published": {
"version_id": "ver_8zJfV7T9qK2mP4xN6bR1cD3eF5gH7iJ9",
"published_at": "2026-03-12T09:45:00Z"
},
"created_at": "2026-03-10T12:00:00Z",
"updated_at": "2026-03-12T09:45:00Z"
},
{
"id": "workflow_abc123xyz",
"name": "Receipt Classification",
"description": "",
"published": null,
"created_at": "2026-03-09T15:30:00Z",
"updated_at": "2026-03-11T18:20:00Z"
}
],
"list_metadata": {
"before": null,
"after": "workflow_abc123xyz"
}
}
List workflows with id pagination. Use
before or after to page through results.
from retab import Retab
client = Retab()
workflows = client.workflows.list(
limit=10,
order="desc",
sort_by="updated_at",
)
next_page = client.workflows.list(
after=workflows.list_metadata.after,
limit=5,
)
print(workflows.list_metadata.after)
print(next_page.data[0].name)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const workflows = await client.workflows.list({
limit: 10,
order: "desc",
sortBy: "updated_at",
});
const nextPage = await client.workflows.list({
after: workflows.list_metadata.after ?? undefined,
limit: 5,
});
console.log(workflows.list_metadata.after);
console.log(nextPage.data[0]?.name);
package main
import (
"context"
"fmt"
"log"
retab "github.com/retab-dev/retab/clients/go"
)
func ptr[T any](v T) *T { return &v }
func main() {
ctx := context.Background()
client, err := retab.NewClient("")
if err != nil {
log.Fatal(err)
}
workflows, err := client.Workflows.List(ctx, &retab.WorkflowsListParams{
PaginationParams: retab.PaginationParams{Limit: ptr(10), Order: ptr("desc")},
SortBy: ptr("updated_at"),
})
if err != nil {
log.Fatal(err)
}
filtered, err := client.Workflows.List(ctx, &retab.WorkflowsListParams{
PaginationParams: retab.PaginationParams{
After: ptr("workflow_abc123xyz"),
Limit: ptr(5),
},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(workflows.ListMetadata.After)
fmt.Println(filtered.Data[0].Name)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
workflows = client.workflows.list(
limit: 10,
order: 'desc',
sort_by: 'updated_at',
)
filtered = client.workflows.list(
after: 'workflow_abc123xyz',
limit: 5,
fields: 'id,name,updated_at',
)
puts workflows.list_metadata.after
puts filtered.data[0].name
use retab::enums::WorkflowsOrder;
use retab::resources::workflows::ListParams;
use retab::Retab;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
let workflows = client
.workflows()
.list(ListParams {
limit: Some(10),
order: Some(WorkflowsOrder::Desc),
sort_by: Some("updated_at".into()),
..Default::default()
})
.await?;
let filtered = client
.workflows()
.list(ListParams {
after: Some("workflow_abc123xyz".into()),
limit: Some(5),
..Default::default()
})
.await?;
println!("{:?}", workflows.list_metadata.after);
if let Some(first) = filtered.data.first() {
println!("{}", first.name.as_deref().unwrap_or(""));
}
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->list();
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
var result = await client.Workflows.ListAsync(new WorkflowsListOptions());
Console.WriteLine(result);
import com.retab.RetabClient;
public final class Example {
public static void main(String[] args) throws Exception {
RetabClient client = new RetabClient(System.getenv("RETAB_API_KEY"));
var result = client.workflows().list(null, null, 10L, null, "created_at", null);
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows?limit=10&order=desc&sort_by=updated_at' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
curl -X 'GET' \
'https://api.retab.com/v1/workflows?after=workflow_abc123xyz&limit=5&fields=id%2Cname%2Cupdated_at' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
{
"data": [
{
"id": "workflow_def456xyz",
"name": "Invoice Processing",
"description": "Extract invoice fields and route for review",
"published": {
"version_id": "ver_8zJfV7T9qK2mP4xN6bR1cD3eF5gH7iJ9",
"published_at": "2026-03-12T09:45:00Z"
},
"created_at": "2026-03-10T12:00:00Z",
"updated_at": "2026-03-12T09:45:00Z"
},
{
"id": "workflow_abc123xyz",
"name": "Receipt Classification",
"description": "",
"published": null,
"created_at": "2026-03-09T15:30:00Z",
"updated_at": "2026-03-11T18:20:00Z"
}
],
"list_metadata": {
"before": null,
"after": "workflow_abc123xyz"
}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Items per page
Required range:
1 <= x <= 100Available options:
asc, desc Only return workflows belonging to this project. Use the shared project's id to list the organization's shared workflows.
Response
Successful Response
⌘I