Skip to main content
GET
/
v1
/
workflows
/
experiments
/
results
/
{result_id}
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"
}
Fetch one experiment result by its opaque 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

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

result_id
string
required

Response

Successful Response

One experiment block execution for a single document, addressed by experiment_run_id and document_id.

id
string
required
experiment_run_id
string
required
experiment_id
string
required
document_id
string
required
lifecycle
PendingWorkflowExperimentResult · object
required

The result row has been created but execution has not started.

timing
ExperimentResultTiming · object
required
block_type
enum<string>
required
Available options:
extract,
classifier,
split,
for_each
handle_inputs
Handle Inputs · object
handle_outputs
Handle Outputs · object
artifact
StepArtifactRef · object | null

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.

attempt
integer
default:0