from retab import Retab
client = Retab()
run = client.workflows.experiments.runs.get("exprun_2")
print(run.lifecycle.status, run.completed_document_count)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const run = await client.workflows.experiments.runs.get("exprun_2");
console.log(run.lifecycle.status, run.completedDocumentCount);
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)
}
run, err := client.Workflows.Experiments.Runs.Get(ctx, "exprun_2")
if err != nil {
log.Fatal(err)
}
fmt.Println(run.Lifecycle.Status(), run.CompletedDocumentCount)
}
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 run = client.workflows().experiments().runs().get("exprun_2").await?;
println!("{:?} {:?}", run.lifecycle, run.completed_document_count);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->experiments()->runs()->get(
runId: 'run_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.Experiments.Runs.GetAsync("run_abc123");
Console.WriteLine(result);
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflows.experiments.runs.get(run_id: 'run_abc123')
puts 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().get("run_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/experiments/runs/exprun_2' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "exprun_2",
"workflow": {
"workflow_id": "wf_abc123",
"version_id": "draft_2026_05_18"
},
"trigger": { "type": "api" },
"lifecycle": { "status": "completed" },
"timing": {
"created_at": "2026-05-02T11:00:00Z",
"started_at": "2026-05-02T11:00:01Z",
"completed_at": "2026-05-02T11:04:18Z",
"duration_ms": 258221
},
"experiment_id": "exp_abc",
"block_id": "extract-invoice",
"block_kind": "extract",
"n_consensus": 5,
"total_document_count": 12,
"completed_document_count": 12,
"error_count": 0,
"score": 0.87,
"block_execution_fingerprint": "0ff93ddc7cefcb42",
"documents_fingerprint": "ddd95baadce6045f"
}
Runs
Get Experiment Run
Retrieve a single experiment run.
Identified by run_id. Returns the run with its lifecycle status, timing,
score, and document progress counts. Returns 404 if no run with that ID
exists.
GET
/
v1
/
workflows
/
experiments
/
runs
/
{run_id}
from retab import Retab
client = Retab()
run = client.workflows.experiments.runs.get("exprun_2")
print(run.lifecycle.status, run.completed_document_count)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const run = await client.workflows.experiments.runs.get("exprun_2");
console.log(run.lifecycle.status, run.completedDocumentCount);
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)
}
run, err := client.Workflows.Experiments.Runs.Get(ctx, "exprun_2")
if err != nil {
log.Fatal(err)
}
fmt.Println(run.Lifecycle.Status(), run.CompletedDocumentCount)
}
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 run = client.workflows().experiments().runs().get("exprun_2").await?;
println!("{:?} {:?}", run.lifecycle, run.completed_document_count);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->experiments()->runs()->get(
runId: 'run_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.Experiments.Runs.GetAsync("run_abc123");
Console.WriteLine(result);
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflows.experiments.runs.get(run_id: 'run_abc123')
puts 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().get("run_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/experiments/runs/exprun_2' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "exprun_2",
"workflow": {
"workflow_id": "wf_abc123",
"version_id": "draft_2026_05_18"
},
"trigger": { "type": "api" },
"lifecycle": { "status": "completed" },
"timing": {
"created_at": "2026-05-02T11:00:00Z",
"started_at": "2026-05-02T11:00:01Z",
"completed_at": "2026-05-02T11:04:18Z",
"duration_ms": 258221
},
"experiment_id": "exp_abc",
"block_id": "extract-invoice",
"block_kind": "extract",
"n_consensus": 5,
"total_document_count": 12,
"completed_document_count": 12,
"error_count": 0,
"score": 0.87,
"block_execution_fingerprint": "0ff93ddc7cefcb42",
"documents_fingerprint": "ddd95baadce6045f"
}
Fetch an experiment run by
run_id. Use this while polling for
lifecycle.status, then inspect child records with List Experiment Run
Results or metrics
with Get Experiment Run Metrics.
from retab import Retab
client = Retab()
run = client.workflows.experiments.runs.get("exprun_2")
print(run.lifecycle.status, run.completed_document_count)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const run = await client.workflows.experiments.runs.get("exprun_2");
console.log(run.lifecycle.status, run.completedDocumentCount);
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)
}
run, err := client.Workflows.Experiments.Runs.Get(ctx, "exprun_2")
if err != nil {
log.Fatal(err)
}
fmt.Println(run.Lifecycle.Status(), run.CompletedDocumentCount)
}
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 run = client.workflows().experiments().runs().get("exprun_2").await?;
println!("{:?} {:?}", run.lifecycle, run.completed_document_count);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->experiments()->runs()->get(
runId: 'run_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.Experiments.Runs.GetAsync("run_abc123");
Console.WriteLine(result);
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflows.experiments.runs.get(run_id: 'run_abc123')
puts 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().get("run_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/experiments/runs/exprun_2' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "exprun_2",
"workflow": {
"workflow_id": "wf_abc123",
"version_id": "draft_2026_05_18"
},
"trigger": { "type": "api" },
"lifecycle": { "status": "completed" },
"timing": {
"created_at": "2026-05-02T11:00:00Z",
"started_at": "2026-05-02T11:00:01Z",
"completed_at": "2026-05-02T11:04:18Z",
"duration_ms": 258221
},
"experiment_id": "exp_abc",
"block_id": "extract-invoice",
"block_kind": "extract",
"n_consensus": 5,
"total_document_count": 12,
"completed_document_count": 12,
"error_count": 0,
"score": 0.87,
"block_execution_fingerprint": "0ff93ddc7cefcb42",
"documents_fingerprint": "ddd95baadce6045f"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
A single execution of an experiment, identified by id.
Show child attributes
Show child attributes
Available options:
extract, classifier, split, for_each Available options:
3, 5, 7 The experiment run has been created but execution has not started.
- PendingWorkflowExperimentRun
- QueuedWorkflowExperimentRun
- RunningWorkflowExperimentRun
- CompletedWorkflowExperimentRun
- ErrorWorkflowExperimentRun
- CancelledWorkflowExperimentRun
Show child attributes
Show child attributes
Show child attributes
Show child attributes