Skip to main content
POST
/
runs
Create Run
const options = {
  method: 'POST',
  headers: {'X-Browser-Use-API-Key': '<api-key>', 'Content-Type': 'application/json'},
  body: JSON.stringify({
    task: '<string>',
    model: 'minimax-m3',
    sessionId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
    workspaceId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
    browserSettings: {
      profileId: '3c90c3cc-0d44-4b50-8888-8dd25736052a',
      proxyCountryCode: 'us',
      customProxy: {
        host: '<string>',
        port: 32768,
        username: '<string>',
        password: '<string>',
        ignoreCertErrors: false
      },
      screenWidth: 3232,
      screenHeight: 1888
    },
    attachedFileIds: ['3c90c3cc-0d44-4b50-8888-8dd25736052a'],
    judge: {context: '<string>'}
  })
};

fetch('https://api.browser-use.com/api/v4/runs', options)
  .then(res => res.json())
  .then(res => console.log(res))
  .catch(err => console.error(err));
curl --request POST \
--url https://api.browser-use.com/api/v4/runs \
--header 'Content-Type: application/json' \
--header 'X-Browser-Use-API-Key: <api-key>' \
--data '
{
"task": "<string>",
"model": "minimax-m3",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"browserSettings": {
"profileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"proxyCountryCode": "us",
"customProxy": {
"host": "<string>",
"port": 32768,
"username": "<string>",
"password": "<string>",
"ignoreCertErrors": false
},
"screenWidth": 3232,
"screenHeight": 1888
},
"attachedFileIds": [
"3c90c3cc-0d44-4b50-8888-8dd25736052a"
],
"judge": {
"context": "<string>"
}
}
'
import requests

url = "https://api.browser-use.com/api/v4/runs"

payload = {
"task": "<string>",
"model": "minimax-m3",
"sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"browserSettings": {
"profileId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
"proxyCountryCode": "us",
"customProxy": {
"host": "<string>",
"port": 32768,
"username": "<string>",
"password": "<string>",
"ignoreCertErrors": False
},
"screenWidth": 3232,
"screenHeight": 1888
},
"attachedFileIds": ["3c90c3cc-0d44-4b50-8888-8dd25736052a"],
"judge": { "context": "<string>" }
}
headers = {
"X-Browser-Use-API-Key": "<api-key>",
"Content-Type": "application/json"
}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
{
  "id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "model": "<string>",
  "sessionId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "workspaceId": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
  "eventsUrl": "<string>",
  "missingFileIds": [
    "3c90c3cc-0d44-4b50-8888-8dd25736052a"
  ]
}
{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}

Authorizations

X-Browser-Use-API-Key
string
header
required

Body

application/json
task
string
required
Minimum string length: 1
model
enum<string>
default:minimax-m3
Available options:
glm-5.2,
minimax-m3,
claude-opus-4.7,
claude-opus-4.8,
claude-sonnet-5,
gpt-5.5,
gpt-5.6,
gemini-3.5-flash,
gemini-3.1-pro,
gemini-3-flash
sessionId
string<uuid> | null
workspaceId
string<uuid> | null
browserSettings
RunBrowserSettings · object | null

Browser config, owned by the browser row (never the run). Follow-ups: omitted fields inherit the session's prior browser; explicit values apply only to newly provisioned browsers (a live browser is reused as-is). Profile is the exception: a different profile → 400; an explicit value mismatching the live browser's profile (incl. null vs a profiled browser) declines reuse and provisions fresh. A live browser already matching the requested profile is reused.

attachedFileIds
string<uuid>[] | null
Maximum array length: 20
judge
RunJudgeSettings · object | null

Opt-in LLM judgement of the finished run. Presence of this object turns the judge on (send {} for defaults); CP judges the run's trajectory after it goes terminal and surfaces the verdict as RunSummary.judgement (null until it lands). The judge's LLM call is billed to the run.

Response

Successful Response

id
string<uuid>
required
status
enum<string>
required
Available options:
queued,
dispatching,
running,
completed,
failed,
cancelled
model
string
required
sessionId
string<uuid>
required
workspaceId
string<uuid>
required
eventsUrl
string
required
missingFileIds
string<uuid>[]