from retab import Retabclient = Retab()run = client.workflows.experiments.runs.create( workflow_id="wf_abc123", experiment_id="exp_abc",)print(run.id, run.lifecycle.status)# Wait for the run to complete, then read metrics.metrics = client.workflows.experiments.metrics.get( run.id, view="summary",)
import { Retab } from "@retab/node";const client = new Retab({ apiKey: process.env.RETAB_API_KEY });const run = await client.workflows.experiments.runs.create("exp_abc", "wf_abc123");console.log(run.id, run.lifecycle.status);// Wait for the run to complete, then read metrics.const metrics = await client.workflows.experiments.metrics.get({ runId: run.id, view: "summary",});
package mainimport ( "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) } run, err := client.Workflows.Experiments.Runs.Create(ctx, &retab.ExperimentRunsCreateParams{ WorkflowID: ptr("wf_abc123"), ExperimentID: "exp_abc", }) if err != nil { log.Fatal(err) } fmt.Println(run.ID, run.Lifecycle.Status()) // Wait for the run to complete, then read metrics. metrics, err := client.Workflows.Experiments.Metrics.Get(ctx, &retab.ExperimentRunMetricsGetParams{RunID: run.ID, View: ptr(retab.ExperimentRunMetricsViewSummary)}) if err != nil { log.Fatal(err) } _ = metrics}
use retab::enums::ExperimentRunMetricsView;use retab::models::CreateExperimentRunRequest;use retab::resources::experiment_run_metrics::GetParams as MetricsGetParams;use retab::resources::experiment_runs::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 mut body = CreateExperimentRunRequest::new("exp_abc"); body.workflow_id = Some("wf_abc123".into()); let run = client .workflows().experiments().runs() .create(CreateParams::new(body)) .await?; println!("{} {:?}", run.id, run.lifecycle); // Wait for the run to complete, then read metrics. let mut params = MetricsGetParams::new(&run.id); params.view = Some(ExperimentRunMetricsView::Summary); let _metrics = client.workflows().experiments().metrics().get(params).await?; Ok(())}
using Retab;using RetabClient = Retab.Retab;var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;var client = new RetabClient(apiKey);var result = await client.Workflows.Experiments.Runs.CreateAsync(new ExperimentRunsCreateOptions());Console.WriteLine(result);
require 'retab'client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])result = client.workflows.experiments.runs.createputs 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().experiments().runs().create("exp_abc123", "wf_abc123", null); System.out.println(result); }}
The experiment_id and an optional workflow_id are supplied in the body.
When workflow_id is omitted, the experiment’s workflow is used; when
supplied, it must match that workflow or the request is rejected with 404.
POST
/
v1
/
workflows
/
experiments
/
runs
from retab import Retabclient = Retab()run = client.workflows.experiments.runs.create( workflow_id="wf_abc123", experiment_id="exp_abc",)print(run.id, run.lifecycle.status)# Wait for the run to complete, then read metrics.metrics = client.workflows.experiments.metrics.get( run.id, view="summary",)
import { Retab } from "@retab/node";const client = new Retab({ apiKey: process.env.RETAB_API_KEY });const run = await client.workflows.experiments.runs.create("exp_abc", "wf_abc123");console.log(run.id, run.lifecycle.status);// Wait for the run to complete, then read metrics.const metrics = await client.workflows.experiments.metrics.get({ runId: run.id, view: "summary",});
package mainimport ( "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) } run, err := client.Workflows.Experiments.Runs.Create(ctx, &retab.ExperimentRunsCreateParams{ WorkflowID: ptr("wf_abc123"), ExperimentID: "exp_abc", }) if err != nil { log.Fatal(err) } fmt.Println(run.ID, run.Lifecycle.Status()) // Wait for the run to complete, then read metrics. metrics, err := client.Workflows.Experiments.Metrics.Get(ctx, &retab.ExperimentRunMetricsGetParams{RunID: run.ID, View: ptr(retab.ExperimentRunMetricsViewSummary)}) if err != nil { log.Fatal(err) } _ = metrics}
use retab::enums::ExperimentRunMetricsView;use retab::models::CreateExperimentRunRequest;use retab::resources::experiment_run_metrics::GetParams as MetricsGetParams;use retab::resources::experiment_runs::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 mut body = CreateExperimentRunRequest::new("exp_abc"); body.workflow_id = Some("wf_abc123".into()); let run = client .workflows().experiments().runs() .create(CreateParams::new(body)) .await?; println!("{} {:?}", run.id, run.lifecycle); // Wait for the run to complete, then read metrics. let mut params = MetricsGetParams::new(&run.id); params.view = Some(ExperimentRunMetricsView::Summary); let _metrics = client.workflows().experiments().metrics().get(params).await?; Ok(())}
using Retab;using RetabClient = Retab.Retab;var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;var client = new RetabClient(apiKey);var result = await client.Workflows.Experiments.Runs.CreateAsync(new ExperimentRunsCreateOptions());Console.WriteLine(result);
require 'retab'client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])result = client.workflows.experiments.runs.createputs 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().experiments().runs().create("exp_abc123", "wf_abc123", null); System.out.println(result); }}
Trigger an experiment run with the current draft block configuration.The canonical API route is flat: send experiment_id in the request body.
workflow_id is optional in the body and scopes the lookup when provided.This is the call that produces metrics: it re-processes every experiment
document through the block with n_consensus parallel passes per document.
Use it after creating an experiment, after editing the block, or after
changing the document set.The endpoint is async - it returns a run resource immediately. Poll the
experiment run with Get Experiment Run
until it reaches a terminal status, then read metrics with Get Experiment Run
Metrics.Runs use the experiment’s stored n_consensus and document set.
from retab import Retabclient = Retab()run = client.workflows.experiments.runs.create( workflow_id="wf_abc123", experiment_id="exp_abc",)print(run.id, run.lifecycle.status)# Wait for the run to complete, then read metrics.metrics = client.workflows.experiments.metrics.get( run.id, view="summary",)
import { Retab } from "@retab/node";const client = new Retab({ apiKey: process.env.RETAB_API_KEY });const run = await client.workflows.experiments.runs.create("exp_abc", "wf_abc123");console.log(run.id, run.lifecycle.status);// Wait for the run to complete, then read metrics.const metrics = await client.workflows.experiments.metrics.get({ runId: run.id, view: "summary",});
package mainimport ( "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) } run, err := client.Workflows.Experiments.Runs.Create(ctx, &retab.ExperimentRunsCreateParams{ WorkflowID: ptr("wf_abc123"), ExperimentID: "exp_abc", }) if err != nil { log.Fatal(err) } fmt.Println(run.ID, run.Lifecycle.Status()) // Wait for the run to complete, then read metrics. metrics, err := client.Workflows.Experiments.Metrics.Get(ctx, &retab.ExperimentRunMetricsGetParams{RunID: run.ID, View: ptr(retab.ExperimentRunMetricsViewSummary)}) if err != nil { log.Fatal(err) } _ = metrics}
use retab::enums::ExperimentRunMetricsView;use retab::models::CreateExperimentRunRequest;use retab::resources::experiment_run_metrics::GetParams as MetricsGetParams;use retab::resources::experiment_runs::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 mut body = CreateExperimentRunRequest::new("exp_abc"); body.workflow_id = Some("wf_abc123".into()); let run = client .workflows().experiments().runs() .create(CreateParams::new(body)) .await?; println!("{} {:?}", run.id, run.lifecycle); // Wait for the run to complete, then read metrics. let mut params = MetricsGetParams::new(&run.id); params.view = Some(ExperimentRunMetricsView::Summary); let _metrics = client.workflows().experiments().metrics().get(params).await?; Ok(())}
using Retab;using RetabClient = Retab.Retab;var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;var client = new RetabClient(apiKey);var result = await client.Workflows.Experiments.Runs.CreateAsync(new ExperimentRunsCreateOptions());Console.WriteLine(result);
require 'retab'client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])result = client.workflows.experiments.runs.createputs 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().experiments().runs().create("exp_abc123", "wf_abc123", null); System.out.println(result); }}