Skip to main content

Browser Agents

List browser runs

Browse your browser task history with filters and offset pagination.

gethttps://api.pre.dev/list-browser-agentsTry it
curl --fail-with-body 'https://api.pre.dev/list-browser-agents?limit=20&skip=0' \
  -H "Authorization: Bearer $PREDEV_API_KEY"

The response contains 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 run id, 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.

Errors

StatusWhen
401Missing or invalid key
500Unexpected error

Each status has an example body in the response examples. See errors and retries.

curl -X GET "https://api.pre.dev/list-browser-agents"
fetch("https://api.pre.dev/list-browser-agents", {  method: "GET"})
package mainimport (  "fmt"  "net/http"  "io/ioutil")func main() {  url := "https://api.pre.dev/list-browser-agents"  req, _ := http.NewRequest("GET", url, nil)  res, _ := http.DefaultClient.Do(req)  defer res.Body.Close()  body, _ := ioutil.ReadAll(res.Body)  fmt.Println(res)  fmt.Println(string(body))}
import requestsurl = "https://api.pre.dev/list-browser-agents"response = requests.request("GET", url)print(response.text)
import java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse;import java.net.http.HttpResponse.BodyHandlers;import java.time.Duration;HttpClient client = HttpClient.newBuilder()  .connectTimeout(Duration.ofSeconds(10))  .build();HttpRequest.Builder requestBuilder = HttpRequest.newBuilder()  .uri(URI.create("https://api.pre.dev/list-browser-agents"))  .GET()  .build();try {  HttpResponse<String> response = client.send(requestBuilder.build(), BodyHandlers.ofString());  System.out.println("Status code: " + response.statusCode());  System.out.println("Response body: " + response.body());} catch (Exception e) {  e.printStackTrace();}
using System;using System.Net.Http;using System.Text;var client = new HttpClient();var response = await client.GetAsync("https://api.pre.dev/list-browser-agents");var responseBody = await response.Content.ReadAsStringAsync();
use reqwest::{Result, Client};async fn main() -> Result<()> {  let client = Client::new();  let url = "https://api.pre.dev/list-browser-agents";  let res = client    .get(url)    .send()    .await?    .text()    .await?;  println!("{}", res);  Ok(())}
{  "batches": [    {      "id": "507f1f77bcf86cd799439011",      "name": "Example heading",      "status": "completed",      "total": 1,      "completed": 1,      "totalCreditsUsed": 0.1,      "createdAt": "2026-09-27T12:00:00.000Z",      "completedAt": "2026-09-27T12:00:21.000Z",      "results": []    }  ],  "total": 1,  "hasMore": false}
GET
/list-browser-agents

Authorization

AuthorizationBearer <token>

Your pre.dev workspace API key (pdk_...) from Integrations, Built-in tab: https://pre.dev/projects/integrations?tab=built-in

In: header

Query Parameters

limit?integer
Range1 <= value <= 100
Default20
skip?integer
Range0 <= value
Default0
status?string

Value in

  • "processing"
  • "completed"
  • "failed"

Response Body

application/json

Paginated run summaries.

TypeScript Definitions

Use the response body type in TypeScript.

application/json

application/json

Was this page helpful?