curl --request GET \
--url https://platform.jobbit.uk/v1/automations/runs/{run_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://platform.jobbit.uk/v1/automations/runs/{run_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.jobbit.uk/v1/automations/runs/{run_id}', 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://platform.jobbit.uk/v1/automations/runs/{run_id}",
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://platform.jobbit.uk/v1/automations/runs/{run_id}"
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://platform.jobbit.uk/v1/automations/runs/{run_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.jobbit.uk/v1/automations/runs/{run_id}")
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{
"run": {
"id": "f60b3c91-0a2d-4e75-8b1c-d49e27a5c308",
"automation_id": "2d9c6a40-7e18-4b3f-a5d2-61f08b4c9e37",
"automation_name": "Weekly booking summary",
"version_id": "88e1d5b2-43a7-4c06-9f3e-b7a0c2d41e59",
"event_id": "6a20b9d4-1c58-4f37-8d02-5e7a91c3b480",
"status": "succeeded",
"reason": "completed",
"parent_execution_id": null,
"depth": 0,
"priority": 1,
"metrics": {
"cost_usd": 0.021,
"active_seconds": 38.2,
"steps_completed": 3,
"attempts": 3
},
"cost_credits": 7,
"result": {
"summary": "42 bookings this week, 6 more than last week."
},
"error": null,
"cancel_requested_at": null,
"created_at": "2026-11-02T08:00:00+00:00",
"started_at": "2026-11-02T08:00:01+00:00",
"finished_at": "2026-11-02T08:00:41+00:00",
"trigger": {
"trigger_id": "weekly",
"source": "schedule",
"received_at": "2026-11-02T08:00:00+00:00"
},
"actor": null,
"retry_of": null,
"retried_by": null,
"stopped_at": null,
"working": false
},
"role": "owner",
"trigger": {
"trigger_id": "weekly",
"source": "schedule",
"received_at": "2026-11-02T08:00:00+00:00",
"input": {}
},
"steps": [
{
"step_id": "collect",
"type": "code",
"status": "succeeded",
"attempt_count": 1,
"retry_count": 0,
"cost_credits": 0
}
],
"attempts": [],
"segments": [],
"files": [],
"agent_files": [],
"definition_steps": [
{
"id": "collect",
"title": "Collect bookings",
"type": "code"
}
]
}{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "not_found",
"message": "unknown run",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}Get a run
Returns one run with its trigger and input, steps, attempts, files and costs.
Requires the automations:read permission.
curl --request GET \
--url https://platform.jobbit.uk/v1/automations/runs/{run_id} \
--header 'Authorization: Bearer <token>'import requests
url = "https://platform.jobbit.uk/v1/automations/runs/{run_id}"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://platform.jobbit.uk/v1/automations/runs/{run_id}', 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://platform.jobbit.uk/v1/automations/runs/{run_id}",
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://platform.jobbit.uk/v1/automations/runs/{run_id}"
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://platform.jobbit.uk/v1/automations/runs/{run_id}")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://platform.jobbit.uk/v1/automations/runs/{run_id}")
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{
"run": {
"id": "f60b3c91-0a2d-4e75-8b1c-d49e27a5c308",
"automation_id": "2d9c6a40-7e18-4b3f-a5d2-61f08b4c9e37",
"automation_name": "Weekly booking summary",
"version_id": "88e1d5b2-43a7-4c06-9f3e-b7a0c2d41e59",
"event_id": "6a20b9d4-1c58-4f37-8d02-5e7a91c3b480",
"status": "succeeded",
"reason": "completed",
"parent_execution_id": null,
"depth": 0,
"priority": 1,
"metrics": {
"cost_usd": 0.021,
"active_seconds": 38.2,
"steps_completed": 3,
"attempts": 3
},
"cost_credits": 7,
"result": {
"summary": "42 bookings this week, 6 more than last week."
},
"error": null,
"cancel_requested_at": null,
"created_at": "2026-11-02T08:00:00+00:00",
"started_at": "2026-11-02T08:00:01+00:00",
"finished_at": "2026-11-02T08:00:41+00:00",
"trigger": {
"trigger_id": "weekly",
"source": "schedule",
"received_at": "2026-11-02T08:00:00+00:00"
},
"actor": null,
"retry_of": null,
"retried_by": null,
"stopped_at": null,
"working": false
},
"role": "owner",
"trigger": {
"trigger_id": "weekly",
"source": "schedule",
"received_at": "2026-11-02T08:00:00+00:00",
"input": {}
},
"steps": [
{
"step_id": "collect",
"type": "code",
"status": "succeeded",
"attempt_count": 1,
"retry_count": 0,
"cost_credits": 0
}
],
"attempts": [],
"segments": [],
"files": [],
"agent_files": [],
"definition_steps": [
{
"id": "collect",
"title": "Collect bookings",
"type": "code"
}
]
}{
"error": {
"code": "invalid_key",
"message": "the API key is missing or invalid",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "insufficient_scope",
"message": "this key does not have the deploy:write permission",
"details": {
"required": "deploy:write"
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "not_found",
"message": "unknown run",
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "invalid_request",
"message": "the request is not valid",
"details": [
{
"location": [
"body",
"name"
],
"message": "String should match pattern '^[a-z0-9][a-z0-9-]*$'",
"type": "string_pattern_mismatch"
}
],
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}{
"error": {
"code": "rate_limited",
"message": "too many read requests, retry in 4 s",
"details": {
"group": "read",
"limit": 120,
"window_seconds": 60
},
"request_id": "5d3f0b7c8a2e4e19b6c47a90d1e2f3a4"
}
}Authorizations
An API key from Settings → API keys, sent as Authorization: Bearer jb_live_…
Path Parameters
The run id.
Response
The run.
A run with its steps and the run's history. The fields actor, retry_of, retried_by, stopped_at and working sit beside run, not inside it.
A run of an automation. Other internal fields of the run (concurrency_key, max_parallel, lease, parked_until, segment_failures) may appear.
Show child attributes
Show child attributes
The account's role on the automation.
What started the run, with the input it received.
The steps, with their status and output.
Every attempt at a step.
The segments the run was executed in.
Files saved by the run.
Files the agent made in agent steps.
The steps of the version that ran.
Show child attributes
Show child attributes
Who asked for the run, if a person or the agent did: kind and id.
The run this one repeats.
The last retry of this run: run_id, status, started_at.
The step where an unfinished run stopped: step_id, title, index, total, status.
True while the run waits for the agent to finish a step.