from retab import Retab
client = Retab()
result = client.workflows.tests.results.get("wfnodetestrun_a")
print(result.test_id)
print(result.lifecycle.status)
print(result.verdict)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const result = await client.workflows.tests.results.get("wfnodetestrun_a");
console.log(result.testId);
console.log(result.lifecycle.status);
console.log(result.verdict);
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.Tests.Results.Get(ctx, "wfnodetestrun_a")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.TestID)
fmt.Println(result.Lifecycle)
fmt.Println(result.Verdict)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflow_test_run_results.get(result_id: 'wfnodetestrun_a')
puts result.test_id
puts result.lifecycle.status
puts result.verdict
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().tests().results()
.get("wfnodetestrun_a")
.await?;
println!("{}", result.test_id);
println!("{:?}", result.lifecycle);
println!("{:?}", result.verdict);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflowTestRunResults()->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.Tests.Results.GetAsync("result_abc123");
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().tests().results().get("result_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/tests/results/wfnodetestrun_a' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "wfnodetestrun_a",
"run_id": "wftestrun_q1z2",
"test_id": "wfnodetest_a",
"target": { "type": "block", "block_id": "block_extract_invoice" },
"lifecycle": { "status": "completed" },
"timing": {
"started_at": "2026-05-18T10:00:02Z",
"completed_at": "2026-05-18T10:00:20Z",
"duration_ms": 18221
},
"outputs": {
"output-json-0": { "total": 1234.56, "vendor": { "name": "Acme Inc" } }
},
"assertion_result": {
"assertion_id": "assert_xyz",
"condition_kind": "equals",
"status": "passed",
"actual_value": 1234.56,
"expected_value": 1234.56,
"failure": null
},
"verdict": { "status": "passed" }
}
{
"detail": "Workflow test result not found: wfnodetestrun_a"
}
Get Test Run Result
Retrieve a single workflow test result.
Identified by result_id. Returns the result for one test within a run,
including its verdict (passed, failed, or blocked), lifecycle,
timing, and any error. Returns 404 if no result with that ID exists.
from retab import Retab
client = Retab()
result = client.workflows.tests.results.get("wfnodetestrun_a")
print(result.test_id)
print(result.lifecycle.status)
print(result.verdict)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const result = await client.workflows.tests.results.get("wfnodetestrun_a");
console.log(result.testId);
console.log(result.lifecycle.status);
console.log(result.verdict);
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.Tests.Results.Get(ctx, "wfnodetestrun_a")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.TestID)
fmt.Println(result.Lifecycle)
fmt.Println(result.Verdict)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflow_test_run_results.get(result_id: 'wfnodetestrun_a')
puts result.test_id
puts result.lifecycle.status
puts result.verdict
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().tests().results()
.get("wfnodetestrun_a")
.await?;
println!("{}", result.test_id);
println!("{:?}", result.lifecycle);
println!("{:?}", result.verdict);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflowTestRunResults()->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.Tests.Results.GetAsync("result_abc123");
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().tests().results().get("result_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/tests/results/wfnodetestrun_a' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "wfnodetestrun_a",
"run_id": "wftestrun_q1z2",
"test_id": "wfnodetest_a",
"target": { "type": "block", "block_id": "block_extract_invoice" },
"lifecycle": { "status": "completed" },
"timing": {
"started_at": "2026-05-18T10:00:02Z",
"completed_at": "2026-05-18T10:00:20Z",
"duration_ms": 18221
},
"outputs": {
"output-json-0": { "total": 1234.56, "vendor": { "name": "Acme Inc" } }
},
"assertion_result": {
"assertion_id": "assert_xyz",
"condition_kind": "equals",
"status": "passed",
"actual_value": 1234.56,
"expected_value": 1234.56,
"failure": null
},
"verdict": { "status": "passed" }
}
{
"detail": "Workflow test result not found: wfnodetestrun_a"
}
result_id. Use this to refresh a
single result row without re-listing every result for the parent test run.
from retab import Retab
client = Retab()
result = client.workflows.tests.results.get("wfnodetestrun_a")
print(result.test_id)
print(result.lifecycle.status)
print(result.verdict)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
const result = await client.workflows.tests.results.get("wfnodetestrun_a");
console.log(result.testId);
console.log(result.lifecycle.status);
console.log(result.verdict);
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.Tests.Results.Get(ctx, "wfnodetestrun_a")
if err != nil {
log.Fatal(err)
}
fmt.Println(result.TestID)
fmt.Println(result.Lifecycle)
fmt.Println(result.Verdict)
}
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
result = client.workflow_test_run_results.get(result_id: 'wfnodetestrun_a')
puts result.test_id
puts result.lifecycle.status
puts result.verdict
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().tests().results()
.get("wfnodetestrun_a")
.await?;
println!("{}", result.test_id);
println!("{:?}", result.lifecycle);
println!("{:?}", result.verdict);
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
$result = $client->workflowTestRunResults()->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.Tests.Results.GetAsync("result_abc123");
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().tests().results().get("result_abc123");
System.out.println(result);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/workflows/tests/results/wfnodetestrun_a' \
-H 'Authorization: Bearer <your-api-key>'
{
"id": "wfnodetestrun_a",
"run_id": "wftestrun_q1z2",
"test_id": "wfnodetest_a",
"target": { "type": "block", "block_id": "block_extract_invoice" },
"lifecycle": { "status": "completed" },
"timing": {
"started_at": "2026-05-18T10:00:02Z",
"completed_at": "2026-05-18T10:00:20Z",
"duration_ms": 18221
},
"outputs": {
"output-json-0": { "total": 1234.56, "vendor": { "name": "Acme Inc" } }
},
"assertion_result": {
"assertion_id": "assert_xyz",
"condition_kind": "equals",
"status": "passed",
"actual_value": 1234.56,
"expected_value": 1234.56,
"failure": null
},
"verdict": { "status": "passed" }
}
{
"detail": "Workflow test result not found: wfnodetestrun_a"
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
Response
Successful Response
The outcome of one test within a test run: its lifecycle, timing, and verdict.
The test run has been created but execution has not started.
- PendingWorkflowTestRun
- QueuedWorkflowTestRun
- RunningWorkflowTestRun
- CompletedWorkflowTestRun
- ErrorWorkflowTestRun
- CancelledWorkflowTestRun
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Verdict label populated only when the underlying test reaches a terminal lifecycle state and the verdict could be determined. Execution-error details flow through lifecycle, not through this enum.
passed, failed, blocked 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
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Result of evaluating ONE assertion against a block's output.
outcome is a verdict only — pass / fail / blocked. An execution
error (the assertion couldn't be evaluated because of a type error,
invalid regex, schema validation crash, block execution crash, etc.) is
expressed by outcome="blocked" with a populated failure whose
code identifies the specific failure mode (execution_error,
type_error, invalid_regex, schema_invalid,
block_execution_failed, ...).
Show child attributes
Show child attributes
Show child attributes
Show child attributes