DOCUMENTATION
Ottobrowse API
Three things to know: you ask for a browser, you connect to it, and you give it back. Everything below is detail on those three.
Base URL https://ottobrowse.com/api/browser/v1. Every request carries Authorization: Bearer <key>. Keys are stored only as SHA-256 hashes and are never read from a query string. The machine-readable spec is at /ottobrowse.openapi.json.
Create a browser
curl https://ottobrowse.com/api/browser/v1/sessions \
-H "Authorization: Bearer $OTTOBROWSE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'Idempotency-Key: nightly-scrape-2026-09-12' \
-d '{"timeoutSeconds": 900}'A 201 carries id, status, expiresAt, connectUrl and liveViewUrl. The connect URL grants control of that browser — keep it on your server and share only the live view, and only with whoever should be driving. Both are omitted from lists and from ended sessions.
Endpoints
| POST | /sessions | Create a browser. Requires an Idempotency-Key of 8–128 letters, digits, _ or -. |
| GET | /sessions?offset=0 | Up to 50 of your sessions, newest first. Never includes connection secrets. |
| GET | /sessions/:id | One session, with connectUrl and liveViewUrl while it is running. |
| DELETE | /sessions/:id | Stop and release. Safe to retry; 202 while a startup is still being cancelled. |
| GET | /usage | Browser-hours this period, active sessions, and your plan's limits. |
Retries and idempotency
Reuse the same idempotency key and options after a network error: a duplicate returns the existing session (202 while it is still starting, otherwise 200), even if it has since ended. Changing the options under a used key returns 409 — a genuinely new job needs a new key. This is what stops a timeout from quietly leaving you paying for two browsers.
| 400 | The options were not valid — usually timeoutSeconds outside the plan's range. |
| 401 | The key is missing, wrong, revoked, or its project is disabled. |
| 402 | No active plan. Pick one on the dashboard. |
| 404 | No such session — also the answer for another project's session. |
| 409 | That idempotency key was already used with different options. |
| 429 | A limit was hit: concurrency, sessions per day, or included hours with no overage. |
| 503 | Capacity or a provider failure. Carries Retry-After. |
Errors are { "error": { "code", "message", "requestId" } }. Quote the request id — it is in X-Request-Id on every response — when asking for help.
Ottobrowse compared with Browserbase
Written to be useful rather than flattering. If a row matters to you and the answer is “No”, take the other product — we would rather lose the signup than a month of your time.
| CAPABILITY | OTTOBROWSE | BROWSERBASE |
|---|---|---|
| Sessions API, create/list/get/release | Yes | Yes |
| Connect over CDP (Playwright, Puppeteer) | Yes | Yes |
| Selenium / WebDriver | No — CDP only | Yes |
| Live view of a running session | Yes, noVNC, token-gated | Yes |
| Human takeover through the live view | Yes, typing included | Yes |
| Isolation | One Firecracker microVM per session | Isolated sessions |
| Egress restrictions (no private/metadata ranges, HTTPS only) | Yes, enforced by the VM firewall | Not offered as a guarantee |
| Idempotent session creation | Yes, required | No |
| Max session length | 6 hours | Varies by plan |
| Concurrency | Up to 50 on Scale | Up to 100 on Startup |
| Persistent contexts / saved logins | Internal to Dispatch only — not in the public API | Yes |
| Residential and datacenter proxies | No | Yes |
| Stealth mode / fingerprint spoofing | No | Yes |
| CAPTCHA solving | No | Yes on paid plans |
| Session recording and replay | No | Yes |
| Session logs API | No | Yes |
| Official SDK packages | A TypeScript client to copy; no published package | Node and Python |
| Regions | One (iad1) | Multiple |
| Uptime SLA | No | On Enterprise |
The short version: if you are driving ordinary sites with Playwright and sometimes need a person to step in, Ottobrowse does that, cheaper, with stronger isolation guarantees. If your target actively fights automation, you want proxies, stealth and CAPTCHA solving — and we do not have them.