from retab import Retab
client = Retab()
# List recent workflow-run usage rows
runs = client.usage.list_runs(
limit=20,
order="desc",
)
# Filter by workflow and date range
runs = client.usage.list_runs(
workflow_id="wf_123",
from_date="2024-01-01",
to_date="2024-12-31",
limit=50,
)
for run in runs.data:
print(run.run_id, run.credits, run.page_count)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
// List recent workflow-run usage rows
const runs = await client.usage.list_runs({
limit: 20,
order: "desc",
});
// Filter by workflow and date range
const filtered = await client.usage.list_runs({
workflowId: "wf_123",
fromDate: "2024-01-01",
toDate: "2024-12-31",
limit: 50,
});
console.log(runs.data, filtered.data);
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)
}
// List recent workflow-run usage rows
runs, err := client.Usage.ListRuns(ctx, &retab.UsageListRunsParams{
PaginationParams: retab.PaginationParams{Limit: ptr(20), Order: ptr("desc")},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(runs)
// Filter by workflow and date range
filtered, err := client.Usage.ListRuns(ctx, &retab.UsageListRunsParams{
PaginationParams: retab.PaginationParams{Limit: ptr(50)},
WorkflowID: ptr("wf_123"),
FromDate: ptr("2024-01-01"),
ToDate: ptr("2024-12-31"),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(filtered)
}
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 runs = client.usage().listRuns();
System.out.println(runs);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/usage/runs?limit=20&order=desc' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
# Filter by workflow and date range
curl -X 'GET' \
'https://api.retab.com/v1/usage/runs?workflow_id=wf_123&from_date=2024-01-01&to_date=2024-12-31&limit=50' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
# List per-run usage rows
runs = client.usage.list_runs(
limit: 20,
order: 'desc',
)
# Filter by workflow and date range
runs = client.usage.list_runs(
workflow_id: 'wf_123',
from_date: '2024-01-01',
to_date: '2024-12-31',
limit: 50,
)
runs.data.each do |row|
puts row.run_id
end
use retab::resources::usage::ListRunsParams;
use retab::Retab;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
// List per-run usage rows
let _runs = client
.usage()
.list_runs(ListRunsParams {
limit: Some(20),
..Default::default()
})
.await?;
// Filter by workflow and date range
let _filtered = client
.usage()
.list_runs(ListRunsParams {
workflow_id: Some("wf_123".into()),
from_date: Some("2024-01-01".into()),
to_date: Some("2024-12-31".into()),
limit: Some(50),
..Default::default()
})
.await?;
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
// List per-run usage rows
$result = $client->usage()->listRuns(limit: 20);
// Filter by workflow and date range
$filtered = $client->usage()->listRuns(
workflowId: 'wf_123',
fromDate: '2024-01-01',
toDate: '2024-12-31',
limit: 50,
);
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
// List per-run usage rows
var result = await client.Usage.ListRunsAsync(new UsageListRunsOptions { Limit = 20 });
// Filter by workflow and date range
var filtered = await client.Usage.ListRunsAsync(new UsageListRunsOptions
{
WorkflowId = "wf_123",
FromDate = "2024-01-01",
ToDate = "2024-12-31",
Limit = 50,
});
Console.WriteLine(result);
{
"data": [
{
"run_id": "run_01G34H8J2K",
"workflow_id": "wf_123",
"status": "completed",
"trigger_type": "api",
"created_at": "2024-03-15T10:30:00Z",
"started_at": "2024-03-15T10:30:01Z",
"completed_at": "2024-03-15T10:30:12Z",
"duration_ms": 11000,
"page_count": 8,
"credits": 12.5,
"retry_count": 0,
"execution_duration_ms": 9400
}
],
"list_metadata": {
"before": null,
"after": "run_01G34H8J2K"
}
}
Usage
List Usage Runs
GET
/
v1
/
usage
/
runs
from retab import Retab
client = Retab()
# List recent workflow-run usage rows
runs = client.usage.list_runs(
limit=20,
order="desc",
)
# Filter by workflow and date range
runs = client.usage.list_runs(
workflow_id="wf_123",
from_date="2024-01-01",
to_date="2024-12-31",
limit=50,
)
for run in runs.data:
print(run.run_id, run.credits, run.page_count)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
// List recent workflow-run usage rows
const runs = await client.usage.list_runs({
limit: 20,
order: "desc",
});
// Filter by workflow and date range
const filtered = await client.usage.list_runs({
workflowId: "wf_123",
fromDate: "2024-01-01",
toDate: "2024-12-31",
limit: 50,
});
console.log(runs.data, filtered.data);
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)
}
// List recent workflow-run usage rows
runs, err := client.Usage.ListRuns(ctx, &retab.UsageListRunsParams{
PaginationParams: retab.PaginationParams{Limit: ptr(20), Order: ptr("desc")},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(runs)
// Filter by workflow and date range
filtered, err := client.Usage.ListRuns(ctx, &retab.UsageListRunsParams{
PaginationParams: retab.PaginationParams{Limit: ptr(50)},
WorkflowID: ptr("wf_123"),
FromDate: ptr("2024-01-01"),
ToDate: ptr("2024-12-31"),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(filtered)
}
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 runs = client.usage().listRuns();
System.out.println(runs);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/usage/runs?limit=20&order=desc' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
# Filter by workflow and date range
curl -X 'GET' \
'https://api.retab.com/v1/usage/runs?workflow_id=wf_123&from_date=2024-01-01&to_date=2024-12-31&limit=50' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
# List per-run usage rows
runs = client.usage.list_runs(
limit: 20,
order: 'desc',
)
# Filter by workflow and date range
runs = client.usage.list_runs(
workflow_id: 'wf_123',
from_date: '2024-01-01',
to_date: '2024-12-31',
limit: 50,
)
runs.data.each do |row|
puts row.run_id
end
use retab::resources::usage::ListRunsParams;
use retab::Retab;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
// List per-run usage rows
let _runs = client
.usage()
.list_runs(ListRunsParams {
limit: Some(20),
..Default::default()
})
.await?;
// Filter by workflow and date range
let _filtered = client
.usage()
.list_runs(ListRunsParams {
workflow_id: Some("wf_123".into()),
from_date: Some("2024-01-01".into()),
to_date: Some("2024-12-31".into()),
limit: Some(50),
..Default::default()
})
.await?;
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
// List per-run usage rows
$result = $client->usage()->listRuns(limit: 20);
// Filter by workflow and date range
$filtered = $client->usage()->listRuns(
workflowId: 'wf_123',
fromDate: '2024-01-01',
toDate: '2024-12-31',
limit: 50,
);
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
// List per-run usage rows
var result = await client.Usage.ListRunsAsync(new UsageListRunsOptions { Limit = 20 });
// Filter by workflow and date range
var filtered = await client.Usage.ListRunsAsync(new UsageListRunsOptions
{
WorkflowId = "wf_123",
FromDate = "2024-01-01",
ToDate = "2024-12-31",
Limit = 50,
});
Console.WriteLine(result);
{
"data": [
{
"run_id": "run_01G34H8J2K",
"workflow_id": "wf_123",
"status": "completed",
"trigger_type": "api",
"created_at": "2024-03-15T10:30:00Z",
"started_at": "2024-03-15T10:30:01Z",
"completed_at": "2024-03-15T10:30:12Z",
"duration_ms": 11000,
"page_count": 8,
"credits": 12.5,
"retry_count": 0,
"execution_duration_ms": 9400
}
],
"list_metadata": {
"before": null,
"after": "run_01G34H8J2K"
}
}
from retab import Retab
client = Retab()
# List recent workflow-run usage rows
runs = client.usage.list_runs(
limit=20,
order="desc",
)
# Filter by workflow and date range
runs = client.usage.list_runs(
workflow_id="wf_123",
from_date="2024-01-01",
to_date="2024-12-31",
limit=50,
)
for run in runs.data:
print(run.run_id, run.credits, run.page_count)
import { Retab } from "@retab/node";
const client = new Retab({ apiKey: process.env.RETAB_API_KEY });
// List recent workflow-run usage rows
const runs = await client.usage.list_runs({
limit: 20,
order: "desc",
});
// Filter by workflow and date range
const filtered = await client.usage.list_runs({
workflowId: "wf_123",
fromDate: "2024-01-01",
toDate: "2024-12-31",
limit: 50,
});
console.log(runs.data, filtered.data);
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)
}
// List recent workflow-run usage rows
runs, err := client.Usage.ListRuns(ctx, &retab.UsageListRunsParams{
PaginationParams: retab.PaginationParams{Limit: ptr(20), Order: ptr("desc")},
})
if err != nil {
log.Fatal(err)
}
fmt.Println(runs)
// Filter by workflow and date range
filtered, err := client.Usage.ListRuns(ctx, &retab.UsageListRunsParams{
PaginationParams: retab.PaginationParams{Limit: ptr(50)},
WorkflowID: ptr("wf_123"),
FromDate: ptr("2024-01-01"),
ToDate: ptr("2024-12-31"),
})
if err != nil {
log.Fatal(err)
}
fmt.Println(filtered)
}
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 runs = client.usage().listRuns();
System.out.println(runs);
}
}
curl -X 'GET' \
'https://api.retab.com/v1/usage/runs?limit=20&order=desc' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
# Filter by workflow and date range
curl -X 'GET' \
'https://api.retab.com/v1/usage/runs?workflow_id=wf_123&from_date=2024-01-01&to_date=2024-12-31&limit=50' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <your-api-key>'
require 'retab'
client = Retab::Client.new(api_key: ENV['RETAB_API_KEY'])
# List per-run usage rows
runs = client.usage.list_runs(
limit: 20,
order: 'desc',
)
# Filter by workflow and date range
runs = client.usage.list_runs(
workflow_id: 'wf_123',
from_date: '2024-01-01',
to_date: '2024-12-31',
limit: 50,
)
runs.data.each do |row|
puts row.run_id
end
use retab::resources::usage::ListRunsParams;
use retab::Retab;
#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
let client = Retab::new(std::env::var("RETAB_API_KEY")?);
// List per-run usage rows
let _runs = client
.usage()
.list_runs(ListRunsParams {
limit: Some(20),
..Default::default()
})
.await?;
// Filter by workflow and date range
let _filtered = client
.usage()
.list_runs(ListRunsParams {
workflow_id: Some("wf_123".into()),
from_date: Some("2024-01-01".into()),
to_date: Some("2024-12-31".into()),
limit: Some(50),
..Default::default()
})
.await?;
Ok(())
}
<?php
require 'vendor/autoload.php';
use Retab\Client;
$client = new Client(apiKey: getenv('RETAB_API_KEY'));
// List per-run usage rows
$result = $client->usage()->listRuns(limit: 20);
// Filter by workflow and date range
$filtered = $client->usage()->listRuns(
workflowId: 'wf_123',
fromDate: '2024-01-01',
toDate: '2024-12-31',
limit: 50,
);
print_r($result);
using Retab;
using RetabClient = Retab.Retab;
var apiKey = Environment.GetEnvironmentVariable("RETAB_API_KEY")!;
var client = new RetabClient(apiKey);
// List per-run usage rows
var result = await client.Usage.ListRunsAsync(new UsageListRunsOptions { Limit = 20 });
// Filter by workflow and date range
var filtered = await client.Usage.ListRunsAsync(new UsageListRunsOptions
{
WorkflowId = "wf_123",
FromDate = "2024-01-01",
ToDate = "2024-12-31",
Limit = 50,
});
Console.WriteLine(result);
{
"data": [
{
"run_id": "run_01G34H8J2K",
"workflow_id": "wf_123",
"status": "completed",
"trigger_type": "api",
"created_at": "2024-03-15T10:30:00Z",
"started_at": "2024-03-15T10:30:01Z",
"completed_at": "2024-03-15T10:30:12Z",
"duration_ms": 11000,
"page_count": 8,
"credits": 12.5,
"retry_count": 0,
"execution_duration_ms": 9400
}
],
"list_metadata": {
"before": null,
"after": "run_01G34H8J2K"
}
}
Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Query Parameters
Maximum number of run rows to return.
Required range:
1 <= x <= 10000Sort direction on run created_at.
Available options:
asc, desc Return runs before this run id (keyset cursor).
Return runs after this run id (keyset cursor).
Filter to a single workflow id.
Filter by lifecycle status: pending, queued, running, completed, error, failed, awaiting_review, or cancelled.
Filter by trigger type: manual, api, schedule, webhook, email, or restart.
Inclusive created_at lower bound (YYYY-MM-DD, UTC).
Inclusive created_at upper bound (YYYY-MM-DD, UTC).
⌘I