List browser runs
curl --request GET \
--url https://api.pre.dev/list-browser-agents \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.pre.dev/list-browser-agents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.pre.dev/list-browser-agents', 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://api.pre.dev/list-browser-agents",
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://api.pre.dev/list-browser-agents"
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://api.pre.dev/list-browser-agents")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pre.dev/list-browser-agents")
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{
"batches": [
{
"id": "<string>",
"status": "processing",
"name": "<string>",
"taskNames": [
"<string>"
],
"total": 123,
"completed": 123,
"results": [
{
"url": "<string>",
"name": "<string>",
"instruction": "<string>",
"input": {},
"output": {},
"status": "PENDING",
"data": "<unknown>",
"creditsUsed": 123,
"durationMs": 123,
"error": "<string>",
"attempts": 123,
"queuePosition": 123,
"events": [
{
"type": "<string>",
"timestamp": 123,
"iteration": 123,
"data": "<unknown>"
}
]
}
],
"totalCreditsUsed": 123,
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"error": "<string>"
}
],
"total": 123,
"hasMore": true
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"actionUrl": "<string>",
"requiresSubscription": true,
"trialsUsed": 123,
"maxTrials": 123
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"actionUrl": "<string>",
"requiresSubscription": true,
"trialsUsed": 123,
"maxTrials": 123
}API reference
List browser runs
Browse your browser task history with filters and offset pagination.
GET
/
list-browser-agents
List browser runs
curl --request GET \
--url https://api.pre.dev/list-browser-agents \
--header 'Authorization: Bearer <token>'import requests
url = "https://api.pre.dev/list-browser-agents"
headers = {"Authorization": "Bearer <token>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {Authorization: 'Bearer <token>'}};
fetch('https://api.pre.dev/list-browser-agents', 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://api.pre.dev/list-browser-agents",
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://api.pre.dev/list-browser-agents"
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://api.pre.dev/list-browser-agents")
.header("Authorization", "Bearer <token>")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.pre.dev/list-browser-agents")
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{
"batches": [
{
"id": "<string>",
"status": "processing",
"name": "<string>",
"taskNames": [
"<string>"
],
"total": 123,
"completed": 123,
"results": [
{
"url": "<string>",
"name": "<string>",
"instruction": "<string>",
"input": {},
"output": {},
"status": "PENDING",
"data": "<unknown>",
"creditsUsed": 123,
"durationMs": 123,
"error": "<string>",
"attempts": 123,
"queuePosition": 123,
"events": [
{
"type": "<string>",
"timestamp": 123,
"iteration": 123,
"data": "<unknown>"
}
]
}
],
"totalCreditsUsed": 123,
"createdAt": "2023-11-07T05:31:56Z",
"completedAt": "2023-11-07T05:31:56Z",
"error": "<string>"
}
],
"total": 123,
"hasMore": true
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"actionUrl": "<string>",
"requiresSubscription": true,
"trialsUsed": 123,
"maxTrials": 123
}{
"error": "<string>",
"message": "<string>",
"code": "<string>",
"actionUrl": "<string>",
"requiresSubscription": true,
"trialsUsed": 123,
"maxTrials": 123
}curl --fail-with-body 'https://api.pre.dev/list-browser-agents?limit=20&skip=0' \
-H "Authorization: Bearer $PREDEV_API_KEY"
batches, total, and hasMore. Entries are sorted newest first. Increase skip by your page size while hasMore is true. limit defaults to 20 and is clamped to 1–100. Use a nonnegative skip.
The status filter accepts processing or completed; omit it to include all stored statuses, including failed runs.
Summary rows
Rows include the runid, task count total, finished-task completed count, status, totalCreditsUsed, and available names and timestamps. Their results arrays can contain null slots. The first slot may be a partial task stub to identify the run before results arrive.
Fetch run status for full task details and timelines. List summaries and detailed run snapshots have different behavior for the completed count; use status to decide whether a run is terminal.
Node: client.listBrowserAgents({ limit: 20, skip: 0 }). Python: client.list_browser_agents(limit=20, skip=0) returns a dictionary.Authorizations
apiKeyAuthxApiKey
Use a pre.dev API key from https://pre.dev/projects/key.
Query Parameters
Required range:
1 <= x <= 100Required range:
x >= 0Available options:
processing, completed, failed Was this page helpful?

