curl --request GET \
--url https://agent.tinyfish.ai/v1/runs/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://agent.tinyfish.ai/v1/runs/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://agent.tinyfish.ai/v1/runs/{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://agent.tinyfish.ai/v1/runs/{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 => [
"X-API-Key: <api-key>"
],
]);
$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://agent.tinyfish.ai/v1/runs/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://agent.tinyfish.ai/v1/runs/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agent.tinyfish.ai/v1/runs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"run_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETED",
"goal": "Find all pricing information",
"created_at": "2026-01-14T10:30:00Z",
"started_at": "2026-01-14T10:30:05Z",
"finished_at": "2026-01-14T10:31:30Z",
"num_of_steps": 5,
"result": {},
"output_schema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"price": {
"type": "number"
}
},
"required": [
"title",
"price"
]
},
"profile_attached": true,
"profile_id": "prof_abc123",
"error": {
"message": "Browser crashed during execution",
"category": "SYSTEM_FAILURE",
"code": "service_busy",
"retry_after": 60,
"help_url": "https://docs.tinyfish.ai/prompting-guide",
"help_message": "Need help? Check out our goal prompting guide for tips and examples.",
"profile_hint": {
"message": "<string>",
"setup_url": "/profiles/prof_abc123/setup?domain=example.com&returnTo=%2Fruns%2Frun_123&ref=run_error_nudge",
"reason": "auth_wall"
}
},
"streaming_url": "https://stream.agent.tinyfish.ai/session/xyz",
"browser_config": {
"proxy_enabled": false,
"proxy_country_code": "US"
},
"video_url": "https://s3.amazonaws.com/bucket/eva-traces/run-id/video/recording.webm?...",
"steps": [
{
"id": "evt_abc123",
"timestamp": "2026-01-14T10:30:05Z",
"status": "COMPLETED",
"action": "Click the login button",
"screenshot": "https://agent.tinyfish.ai/runs/a1b2c3d4/steps/evt_abc123/screenshot",
"html": "https://agent.tinyfish.ai/runs/a1b2c3d4/steps/evt_abc123/html",
"duration": "1.2s"
}
],
"profile_hint": {
"message": "<string>",
"setup_url": "/profiles/prof_abc123/setup?domain=example.com&returnTo=%2Fruns%2Frun_123&ref=run_error_nudge",
"reason": "auth_wall"
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}Get run by ID
Get detailed information about a specific automation run by its ID.
curl --request GET \
--url https://agent.tinyfish.ai/v1/runs/{id} \
--header 'X-API-Key: <api-key>'import requests
url = "https://agent.tinyfish.ai/v1/runs/{id}"
headers = {"X-API-Key": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key': '<api-key>'}};
fetch('https://agent.tinyfish.ai/v1/runs/{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://agent.tinyfish.ai/v1/runs/{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 => [
"X-API-Key: <api-key>"
],
]);
$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://agent.tinyfish.ai/v1/runs/{id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("X-API-Key", "<api-key>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.get("https://agent.tinyfish.ai/v1/runs/{id}")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agent.tinyfish.ai/v1/runs/{id}")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Get.new(url)
request["X-API-Key"] = '<api-key>'
response = http.request(request)
puts response.read_body{
"run_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"status": "COMPLETED",
"goal": "Find all pricing information",
"created_at": "2026-01-14T10:30:00Z",
"started_at": "2026-01-14T10:30:05Z",
"finished_at": "2026-01-14T10:31:30Z",
"num_of_steps": 5,
"result": {},
"output_schema": {
"type": "object",
"properties": {
"title": {
"type": "string"
},
"price": {
"type": "number"
}
},
"required": [
"title",
"price"
]
},
"profile_attached": true,
"profile_id": "prof_abc123",
"error": {
"message": "Browser crashed during execution",
"category": "SYSTEM_FAILURE",
"code": "service_busy",
"retry_after": 60,
"help_url": "https://docs.tinyfish.ai/prompting-guide",
"help_message": "Need help? Check out our goal prompting guide for tips and examples.",
"profile_hint": {
"message": "<string>",
"setup_url": "/profiles/prof_abc123/setup?domain=example.com&returnTo=%2Fruns%2Frun_123&ref=run_error_nudge",
"reason": "auth_wall"
}
},
"streaming_url": "https://stream.agent.tinyfish.ai/session/xyz",
"browser_config": {
"proxy_enabled": false,
"proxy_country_code": "US"
},
"video_url": "https://s3.amazonaws.com/bucket/eva-traces/run-id/video/recording.webm?...",
"steps": [
{
"id": "evt_abc123",
"timestamp": "2026-01-14T10:30:05Z",
"status": "COMPLETED",
"action": "Click the login button",
"screenshot": "https://agent.tinyfish.ai/runs/a1b2c3d4/steps/evt_abc123/screenshot",
"html": "https://agent.tinyfish.ai/runs/a1b2c3d4/steps/evt_abc123/html",
"duration": "1.2s"
}
],
"profile_hint": {
"message": "<string>",
"setup_url": "/profiles/prof_abc123/setup?domain=example.com&returnTo=%2Fruns%2Frun_123&ref=run_error_nudge",
"reason": "auth_wall"
}
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}{
"error": {
"code": "INVALID_INPUT",
"message": "Field \"url\" is required and must be a string",
"details": "<unknown>"
},
"request_id": "8f9dba20-e37b-4749-a919-2269e28b4a2c"
}Authorizations
API key for authentication. Get your key from the API Keys page.
Path Parameters
Run ID
^[A-Za-z0-9_-]+$"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Query Parameters
Screenshot delivery mode. url: absolute URLs to screenshot images. base64: inline data URIs. none: omit screenshots. Defaults to url.
base64, url, none "url"
HTML snapshot delivery mode. url: absolute URLs to HTML snapshot pages (only non-null when capture_config.html was enabled). none: omit HTML URLs. Defaults to url.
url, none "url"
Response
Run details
A single automation run
Unique identifier for the run
"a1b2c3d4-e5f6-7890-abcd-ef1234567890"
Current status of the run
PENDING, RUNNING, COMPLETED, FAILED, CANCELLED "COMPLETED"
Natural language goal for this automation run
"Find all pricing information"
ISO 8601 timestamp when run was created
"2026-01-14T10:30:00Z"
ISO 8601 timestamp when run started executing
"2026-01-14T10:30:05Z"
ISO 8601 timestamp when run finished
"2026-01-14T10:31:30Z"
Number of steps taken during the automation run. Null while the run is still in progress.
x >= 05
Extracted data from the automation run
Show child attributes
Show child attributes
Provider-supported structured-output schema subset originally requested for this run. Null when no output_schema was provided.
Show child attributes
Show child attributes
{
"type": "object",
"properties": {
"title": { "type": "string" },
"price": { "type": "number" }
},
"required": ["title", "price"]
}
Whether this run attached a Browser Context Profile internally.
true
Browser Context Profile ID attached to this run, or null when no profile attached.
"prof_abc123"
Error details. Null if the run succeeded or is still running.
Show child attributes
Show child attributes
URL to watch live browser session (available while running)
"https://stream.agent.tinyfish.ai/session/xyz"
Browser configuration used for the run
Show child attributes
Show child attributes
Presigned URL to the video recording of this run. Null if no recording is available. URL expires after 15 minutes.
"https://s3.amazonaws.com/bucket/eva-traces/run-id/video/recording.webm?..."
Steps the agent took during this run.
Show child attributes
Show child attributes
Optional nudge shown when a failed run is likely solvable by setting up a Browser Context Profile.
Show child attributes
Show child attributes
Was this page helpful?