require 'retab'client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])workflow = client.workflows.create( name: 'Invoice Processing', description: 'Extract invoice fields and route for review',)puts workflow.idputs workflow.published
use retab::models::CreateWorkflowRequest;use retab::resources::workflows::CreateParams;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() .create(CreateParams::new(CreateWorkflowRequest { name: Some("Invoice Processing".into()), description: Some("Extract invoice fields and route for review".into()), project_id: "project_abc".into(), })) .await?; println!("{}", workflow.id); println!("{:?}", workflow.published); Ok(())}
<?phprequire 'vendor/autoload.php';use Retab\Client;$client = new Client(apiKey: getenv('RETAB_API_KEY'));$result = $client->workflows()->create();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.CreateAsync(new WorkflowsCreateOptions());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().create("Invoice Processing", "Extract invoice fields", null); System.out.println(result); }}
require 'retab'client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])workflow = client.workflows.create( name: 'Invoice Processing', description: 'Extract invoice fields and route for review',)puts workflow.idputs workflow.published
use retab::models::CreateWorkflowRequest;use retab::resources::workflows::CreateParams;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() .create(CreateParams::new(CreateWorkflowRequest { name: Some("Invoice Processing".into()), description: Some("Extract invoice fields and route for review".into()), project_id: "project_abc".into(), })) .await?; println!("{}", workflow.id); println!("{:?}", workflow.published); Ok(())}
<?phprequire 'vendor/autoload.php';use Retab\Client;$client = new Client(apiKey: getenv('RETAB_API_KEY'));$result = $client->workflows()->create();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.CreateAsync(new WorkflowsCreateOptions());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().create("Invoice Processing", "Extract invoice fields", null); System.out.println(result); }}
{ "id": "wf_abc123xyz", "name": "Invoice Processing", "description": "Extract invoice fields and route for review", "published": null, "created_at": "2026-05-01T14:30:00Z", "updated_at": "2026-05-01T14:30:00Z"}
Create a new workflow. The workflow is created unpublished, with a default start_document block at canvas position (0, 0). Use the Blocks and Edges endpoints to build out the graph, then Publish when you’re ready to run it.
from retab import Retabclient = Retab()workflow = client.workflows.create( name="Invoice Processing", description="Extract invoice fields and route for review", project_id="project_abc",)print(workflow.id)print(workflow.published) # None — newly created workflows are unpublished
import { Retab } from "@retab/node";const client = new Retab({ apiKey: process.env.RETAB_API_KEY });const workflow = await client.workflows.create("Invoice Processing", "Extract invoice fields and route for review");console.log(workflow.id);console.log(workflow.published);
require 'retab'client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])workflow = client.workflows.create( name: 'Invoice Processing', description: 'Extract invoice fields and route for review',)puts workflow.idputs workflow.published
use retab::models::CreateWorkflowRequest;use retab::resources::workflows::CreateParams;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() .create(CreateParams::new(CreateWorkflowRequest { name: Some("Invoice Processing".into()), description: Some("Extract invoice fields and route for review".into()), project_id: "project_abc".into(), })) .await?; println!("{}", workflow.id); println!("{:?}", workflow.published); Ok(())}
<?phprequire 'vendor/autoload.php';use Retab\Client;$client = new Client(apiKey: getenv('RETAB_API_KEY'));$result = $client->workflows()->create();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.CreateAsync(new WorkflowsCreateOptions());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().create("Invoice Processing", "Extract invoice fields", null); System.out.println(result); }}