List and search runs
curl --request GET \
--url https://agent.tinyfish.ai/v1/runs \
--header 'X-API-Key: <api-key>'import requests
url = "https://agent.tinyfish.ai/v1/runs"
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', 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",
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"
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")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agent.tinyfish.ai/v1/runs")
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{
"data": [
{
"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"
},
"profile_hint": {
"message": "<string>",
"setup_url": "/profiles/prof_abc123/setup?domain=example.com&returnTo=%2Fruns%2Frun_123&ref=run_error_nudge",
"reason": "auth_wall"
}
}
],
"pagination": {
"total": 142,
"next_cursor": "eyJpZCI6ImFiYyIsImNyZWF0ZWRBdCI6IjIwMjYtMDEtMDFUMTI6MDA6MDBaIn0=",
"has_more": true
}
}{
"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"
}Runs
List and search runs
List automation runs with optional filtering by status, goal text, and date range. Returns paginated results with total count. Default sort order is newest first.
GET
/
v1
/
runs
List and search runs
curl --request GET \
--url https://agent.tinyfish.ai/v1/runs \
--header 'X-API-Key: <api-key>'import requests
url = "https://agent.tinyfish.ai/v1/runs"
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', 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",
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"
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")
.header("X-API-Key", "<api-key>")
.asString();require 'uri'
require 'net/http'
url = URI("https://agent.tinyfish.ai/v1/runs")
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{
"data": [
{
"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"
},
"profile_hint": {
"message": "<string>",
"setup_url": "/profiles/prof_abc123/setup?domain=example.com&returnTo=%2Fruns%2Frun_123&ref=run_error_nudge",
"reason": "auth_wall"
}
}
],
"pagination": {
"total": 142,
"next_cursor": "eyJpZCI6ImFiYyIsImNyZWF0ZWRBdCI6IjIwMjYtMDEtMDFUMTI6MDA6MDBaIn0=",
"has_more": true
}
}{
"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.
Query Parameters
Filter by run status
Available options:
PENDING, RUNNING, COMPLETED, FAILED, CANCELLED Example:
"COMPLETED"
Filter runs by goal text (case-insensitive partial match)
Maximum string length:
500Example:
"linkedin"
Filter runs created after this ISO 8601 timestamp
Example:
"2026-01-01T00:00:00Z"
Filter runs created before this ISO 8601 timestamp
Example:
"2026-02-01T00:00:00Z"
Sort order by created_at
Available options:
asc, desc Example:
"desc"
Cursor for pagination (from previous response)
Example:
"eyJpZCI6ImFiYyIsImNyZWF0ZWRBdCI6IjIwMjYtMDEtMDFUMTI6MDA6MDBaIn0="
Maximum number of results to return (1-100)
Required range:
1 <= x <= 100Example:
20
Was this page helpful?
⌘I