from retab import Retab
client = Retab()
result = client.workflows.experiments.results.get("expresult_1")
print(result.document_id)
print(result.lifecycle.status)
print(result.artifact)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const result = await client.workflows.experiments.results.get("expresult_1");
console.log(result.documentId);
console.log(result.lifecycle.status);
console.log(result.artifact);
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)
}
result, err := client.Workflows.Experiments.Results.Get(ctx, "expresult_1")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.DocumentID)
fmt.Println(result.Lifecycle.Status())
fmt.Println(result.Artifact)
}
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 result = client
.workflows().experiments().results()
.get("expresult_1")
.await?;
println!("{}", result.document_id);
println!("{:?}", result.lifecycle);
println!("{:?}", result.artifact);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->experiments()->results()->get(
resultId: 'result_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.Results.GetAsync("result_abc123");
Console.WriteLine(result);
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflows.experiments.results.get(result_id: 'result_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().results().get("result_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/experiments/results/expresult_1' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "expresult_1",
"run_id": "exprun_2",
"experiment_id": "exp_abc",
"document_id": "expdoc_xyz",
"block_kind": "extract",
"lifecycle": { "status": "completed" },
"timing": {
"started_at": "2026-05-02T11:00:01Z",
"completed_at": "2026-05-02T11:00:05Z",
"duration_ms": 4120
},
"handle_inputs": {
"input-document-0": { "type": "file", "filename": "invoice_q1.pdf" }
},
"artifact": { "operation": "extraction", "id": "ext_xyz" },
"attempt": 0
}
{
"detail": "Experiment result not found: expresult_1"
}
Get Experiment Run Result
Retrieve a single experiment result.
Identified by result_id. Returns the per-document result with its
lifecycle status, timing, and produced artifact. Returns 404 if no result
with that ID exists.
from retab import Retab
client = Retab()
result = client.workflows.experiments.results.get("expresult_1")
print(result.document_id)
print(result.lifecycle.status)
print(result.artifact)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const result = await client.workflows.experiments.results.get("expresult_1");
console.log(result.documentId);
console.log(result.lifecycle.status);
console.log(result.artifact);
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)
}
result, err := client.Workflows.Experiments.Results.Get(ctx, "expresult_1")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.DocumentID)
fmt.Println(result.Lifecycle.Status())
fmt.Println(result.Artifact)
}
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 result = client
.workflows().experiments().results()
.get("expresult_1")
.await?;
println!("{}", result.document_id);
println!("{:?}", result.lifecycle);
println!("{:?}", result.artifact);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->experiments()->results()->get(
resultId: 'result_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.Results.GetAsync("result_abc123");
Console.WriteLine(result);
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflows.experiments.results.get(result_id: 'result_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().results().get("result_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/experiments/results/expresult_1' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "expresult_1",
"run_id": "exprun_2",
"experiment_id": "exp_abc",
"document_id": "expdoc_xyz",
"block_kind": "extract",
"lifecycle": { "status": "completed" },
"timing": {
"started_at": "2026-05-02T11:00:01Z",
"completed_at": "2026-05-02T11:00:05Z",
"duration_ms": 4120
},
"handle_inputs": {
"input-document-0": { "type": "file", "filename": "invoice_q1.pdf" }
},
"artifact": { "operation": "extraction", "id": "ext_xyz" },
"attempt": 0
}
{
"detail": "Experiment result not found: expresult_1"
}
result_id. Use this to refresh a
single document result without re-listing every result for the parent
experiment run.
from retab import Retab
client = Retab()
result = client.workflows.experiments.results.get("expresult_1")
print(result.document_id)
print(result.lifecycle.status)
print(result.artifact)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const result = await client.workflows.experiments.results.get("expresult_1");
console.log(result.documentId);
console.log(result.lifecycle.status);
console.log(result.artifact);
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)
}
result, err := client.Workflows.Experiments.Results.Get(ctx, "expresult_1")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.DocumentID)
fmt.Println(result.Lifecycle.Status())
fmt.Println(result.Artifact)
}
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 result = client
.workflows().experiments().results()
.get("expresult_1")
.await?;
println!("{}", result.document_id);
println!("{:?}", result.lifecycle);
println!("{:?}", result.artifact);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflows()->experiments()->results()->get(
resultId: 'result_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.Results.GetAsync("result_abc123");
Console.WriteLine(result);
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflows.experiments.results.get(result_id: 'result_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().results().get("result_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/experiments/results/expresult_1' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "expresult_1",
"run_id": "exprun_2",
"experiment_id": "exp_abc",
"document_id": "expdoc_xyz",
"block_kind": "extract",
"lifecycle": { "status": "completed" },
"timing": {
"started_at": "2026-05-02T11:00:01Z",
"completed_at": "2026-05-02T11:00:05Z",
"duration_ms": 4120
},
"handle_inputs": {
"input-document-0": { "type": "file", "filename": "invoice_q1.pdf" }
},
"artifact": { "operation": "extraction", "id": "ext_xyz" },
"attempt": 0
}
{
"detail": "Experiment result not found: expresult_1"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
One experiment block execution for a single document, addressed by experiment_run_id and document_id.
The result row has been created but execution has not started.
- PendingWorkflowExperimentResult
- QueuedWorkflowExperimentResult
- RunningWorkflowExperimentResult
- CompletedWorkflowExperimentResult
- ErrorWorkflowExperimentResult
- CancelledWorkflowExperimentResult
Show child attributes
Show child attributes
Show child attributes
Show child attributes
extract, classifier, split, for_each Show child attributes
Show child attributes
Show child attributes
Show child attributes
A resource produced by a workflow step.
An (operation, id) reference. The artifact itself carries no payload —
consumers dispatch on operation and fetch the referenced record by id.
Show child attributes
Show child attributes