curl --request GET \
--url https://app.factorize.sh/api/v1/runs/{runId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.factorize.sh/api/v1/runs/{runId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.factorize.sh/api/v1/runs/{runId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.factorize.sh/api/v1/runs/{runId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.factorize.sh/api/v1/runs/{runId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.factorize.sh/api/v1/runs/{runId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.factorize.sh/api/v1/runs/{runId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"state": "<string>",
"execution_diagnostics": {
"state": "succeeded",
"detail": "<string>",
"systemd": {
"loadState": "<string>",
"activeState": "<string>",
"subState": "<string>",
"result": "<string>",
"execMainCode": 123,
"execMainStatus": 123
}
},
"harness_log": {
"id": "<string>",
"kind": "terminal_log",
"object_key": "<string>",
"provider": "<string>",
"format": "text",
"byte_size": 123,
"sha256": "<string>",
"state": "stored",
"created_at": "2023-11-07T05:31:56Z",
"format_version": "<string>",
"cli_version": "<string>",
"source_generation": "<string>",
"native_session_id": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"trace_generation": "<string>",
"trace_projection": {
"source_kind": "execution_stream",
"artifact_sha256": "<string>",
"parser_version": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"reconciliation": {
"state": "matched",
"events": 123,
"liveEvents": 123,
"mismatches": 123,
"liveOffset": 123,
"artifactBytes": 123,
"generation": "<string>",
"codexCompletion": "turn.completed"
}
},
"trace_sources": {
"primary": {
"kind": "execution_stream",
"path": "<string>",
"mediaType": "application/x-ndjson",
"provider": "codex",
"formatVersion": "<string>",
"cliVersion": "<string>",
"harnessVersion": "<string>",
"discoverCommand": "<string>"
},
"nativeSession": {
"kind": "execution_stream",
"path": "<string>",
"mediaType": "application/x-ndjson",
"provider": "codex",
"formatVersion": "<string>",
"cliVersion": "<string>",
"harnessVersion": "<string>",
"discoverCommand": "<string>"
}
},
"artifact_error": "<string>",
"job_name": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Get run
Requires the runs:read scope.
Accepts a scoped bearer token or interactive owner session.
curl --request GET \
--url https://app.factorize.sh/api/v1/runs/{runId} \
--header 'Authorization: Bearer <token>'import requests
url = "https://app.factorize.sh/api/v1/runs/{runId}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://app.factorize.sh/api/v1/runs/{runId}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://app.factorize.sh/api/v1/runs/{runId}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://app.factorize.sh/api/v1/runs/{runId}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("Authorization", "Bearer <token>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://app.factorize.sh/api/v1/runs/{runId}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://app.factorize.sh/api/v1/runs/{runId}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["Authorization"] = 'Bearer <token>'
response = http.request(request)
puts response.read_body{
"id": "<string>",
"state": "<string>",
"execution_diagnostics": {
"state": "succeeded",
"detail": "<string>",
"systemd": {
"loadState": "<string>",
"activeState": "<string>",
"subState": "<string>",
"result": "<string>",
"execMainCode": 123,
"execMainStatus": 123
}
},
"harness_log": {
"id": "<string>",
"kind": "terminal_log",
"object_key": "<string>",
"provider": "<string>",
"format": "text",
"byte_size": 123,
"sha256": "<string>",
"state": "stored",
"created_at": "2023-11-07T05:31:56Z",
"format_version": "<string>",
"cli_version": "<string>",
"source_generation": "<string>",
"native_session_id": "<string>"
},
"created_at": "2023-11-07T05:31:56Z",
"started_at": "2023-11-07T05:31:56Z",
"updated_at": "2023-11-07T05:31:56Z",
"trace_generation": "<string>",
"trace_projection": {
"source_kind": "execution_stream",
"artifact_sha256": "<string>",
"parser_version": "<string>",
"updated_at": "2023-11-07T05:31:56Z",
"reconciliation": {
"state": "matched",
"events": 123,
"liveEvents": 123,
"mismatches": 123,
"liveOffset": 123,
"artifactBytes": 123,
"generation": "<string>",
"codexCompletion": "turn.completed"
}
},
"trace_sources": {
"primary": {
"kind": "execution_stream",
"path": "<string>",
"mediaType": "application/x-ndjson",
"provider": "codex",
"formatVersion": "<string>",
"cliVersion": "<string>",
"harnessVersion": "<string>",
"discoverCommand": "<string>"
},
"nativeSession": {
"kind": "execution_stream",
"path": "<string>",
"mediaType": "application/x-ndjson",
"provider": "codex",
"formatVersion": "<string>",
"cliVersion": "<string>",
"harnessVersion": "<string>",
"discoverCommand": "<string>"
}
},
"artifact_error": "<string>",
"job_name": "<string>"
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}{
"error": {
"code": "<string>",
"message": "<string>"
}
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Path Parameters
1Response
Run including durable execution diagnostics and harness artifact location
First terminal backend observation, retained independently of collection and cleanup errors. Null for older or nonterminal runs. Commands and raw backend responses are never included.
Show child attributes
Show child attributes
Stored redacted harness stderr artifact, or null if unavailable. Uses the combined log for older VMs. Retains at most the first 64 KiB, drops a truncated final line, and redacts recognizable credentials before storage. The object key is a storage locator, not a public or signed URL. This artifact remains available after VM deletion.
Show child attributes
Show child attributes
Time the run was created and queued.
Time execution launch succeeded. Null until started or when unknown. Runtime starts here; the difference from created_at is queue time including launch preparation.
Last run update; used as the elapsed runtime endpoint for terminal runs.
Live file generation; clients reset trace pagination when it changes.
Committed projection receipt. Null means no durable reconciliation evidence; it does not mean complete.
Show child attributes
Show child attributes
Show child attributes
Show child attributes
Secondary artifact or cleanup error; does not replace execution_diagnostics
Current job name, included so run content does not require a separate job request.