from retab import Retab
client = Retab()
workflow = client.workflows.get("workflow_abc123xyz")
print(workflow.name)
print(workflow.published.version_id if workflow.published else None)
print(workflow.updated_at)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const workflow = await client.workflows.get("workflow_abc123xyz");
console.log(workflow.name);
console.log(workflow.published?.versionId);
console.log(workflow.updatedAt);
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)
}
workflow, err := client.Workflows.Get(ctx, "workflow_abc123xyz")
if err != nil {
log.Fatal(err)
}
fmt.Println(workflow.Name)
if workflow.Published != nil {
fmt.Println(workflow.Published.VersionID)
}
fmt.Println(workflow.UpdatedAt)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
workflow = client.workflows.get(workflow_id: 'workflow_abc123xyz')
puts workflow.name
puts workflow.published ? workflow.published.version_id : nil
puts workflow.updated_at
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 workflow = client.workflows().get("workflow_abc123xyz").await?;
println!("{}", workflow.name.as_deref().unwrap_or(""));
if let Some(published) = &workflow.published {
println!("{}", published.version_id.as_deref().unwrap_or(""));
}
println!("{}", workflow.updated_at);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->get(
workflowId: 'wf_abc123',
);
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.GetAsync("wf_abc123");
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().get("wf_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/workflow_abc123xyz' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "workflow_abc123xyz",
"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"
}
{
"detail": "Workflow not found"
}
Workflows
Get Workflow
Get a single workflow by ID.
Returns workflow metadata only.
GET
/
v1
/
workflows
/
{workflow_id}
from retab import Retab
client = Retab()
workflow = client.workflows.get("workflow_abc123xyz")
print(workflow.name)
print(workflow.published.version_id if workflow.published else None)
print(workflow.updated_at)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const workflow = await client.workflows.get("workflow_abc123xyz");
console.log(workflow.name);
console.log(workflow.published?.versionId);
console.log(workflow.updatedAt);
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)
}
workflow, err := client.Workflows.Get(ctx, "workflow_abc123xyz")
if err != nil {
log.Fatal(err)
}
fmt.Println(workflow.Name)
if workflow.Published != nil {
fmt.Println(workflow.Published.VersionID)
}
fmt.Println(workflow.UpdatedAt)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
workflow = client.workflows.get(workflow_id: 'workflow_abc123xyz')
puts workflow.name
puts workflow.published ? workflow.published.version_id : nil
puts workflow.updated_at
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 workflow = client.workflows().get("workflow_abc123xyz").await?;
println!("{}", workflow.name.as_deref().unwrap_or(""));
if let Some(published) = &workflow.published {
println!("{}", published.version_id.as_deref().unwrap_or(""));
}
println!("{}", workflow.updated_at);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->get(
workflowId: 'wf_abc123',
);
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.GetAsync("wf_abc123");
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().get("wf_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/workflow_abc123xyz' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "workflow_abc123xyz",
"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"
}
{
"detail": "Workflow not found"
}
Get a single workflow by ID.
from retab import Retab
client = Retab()
workflow = client.workflows.get("workflow_abc123xyz")
print(workflow.name)
print(workflow.published.version_id if workflow.published else None)
print(workflow.updated_at)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const workflow = await client.workflows.get("workflow_abc123xyz");
console.log(workflow.name);
console.log(workflow.published?.versionId);
console.log(workflow.updatedAt);
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)
}
workflow, err := client.Workflows.Get(ctx, "workflow_abc123xyz")
if err != nil {
log.Fatal(err)
}
fmt.Println(workflow.Name)
if workflow.Published != nil {
fmt.Println(workflow.Published.VersionID)
}
fmt.Println(workflow.UpdatedAt)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
workflow = client.workflows.get(workflow_id: 'workflow_abc123xyz')
puts workflow.name
puts workflow.published ? workflow.published.version_id : nil
puts workflow.updated_at
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 workflow = client.workflows().get("workflow_abc123xyz").await?;
println!("{}", workflow.name.as_deref().unwrap_or(""));
if let Some(published) = &workflow.published {
println!("{}", published.version_id.as_deref().unwrap_or(""));
}
println!("{}", workflow.updated_at);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->get(
workflowId: 'wf_abc123',
);
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.GetAsync("wf_abc123");
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().get("wf_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/workflow_abc123xyz' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "workflow_abc123xyz",
"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"
}
{
"detail": "Workflow not found"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
A workflow and its current configuration.
Unique ID for this workflow
The name of the workflow
Description of the workflow
Project that owns this workflow. Null only on legacy rows that predate the project backfill.
Published workflow metadata when a published version exists
Show child attributes
Show child attributes
⌘I