docs.
Get a browser running in about a minute. If you would rather use plain HTTP, see the api reference.
1. install the cli
2. authenticate
$ guise auth <your-api-key>No key yet? Get one at guise.sh/keys.
3. create a browser
$ guise new --ttl 300
id 0d66042b-e723-4fa7-9d7d-c7ef61317bd8
connectUrl https://api.guise.sh/v1/sessions/0d66042b-…/cdp
egress residential (exit -)
expires 4m (pooled)4. point your agent at it
connectUrl is the second line above. To get it on its own — for a script, or once you have lost the scrollback:
$ guise connect 0d66042b
https://api.guise.sh/v1/sessions/0d66042b-…/cdpconst b = await chromium.connectOverCDP(connectUrl);
const page = await b.contexts()[0].newPage();
await page.goto("https://example.com");5. let a person take over
Create a link that lets someone drive the browser themselves. Useful for a login, a captcha, or just watching what the agent is doing.
$ guise takeover 0d66042b --ttl 300
https://api.guise.sh/takeover#<sessionId>.<token>Open the link in any browser. The token sits after the #, so it is never sent in the request and never reaches a server log. It does stay in that browser's history, so revoke the link when you are done. There is one link per session and it cannot outlast the session, so give the session a longer ttlSec up front if a person might be needed. Revoke with DELETE /v1/sessions/:id/takeover.
6. clean up (or don't)
$ guise rm 0d66042b # kill now (an id prefix is enough)
$ guise rm --all # kill everythingYou can skip this and the browser deletes itself when ttlSec runs out — you are never billed past that. But you are billed up to it: a browser you walk away from runs the full timer and costs the full timer. Disconnecting does not count; the session has no idea your client went away. Delete when you are done, or set a ttlSec close to how long you actually need.
## cli reference
guise auth <key>save your api key locallyguise new [--ttl sec]create a browser and print its id and urlguise lslist your browsersguise connect <id>print the url for a browserguise takeover <id> [--ttl sec] [--open]create a link for a person to drive itguise rm <id> | --alldelete one browser, or all of themguise usagehours used and credit leftguise statuscheck api access, session count, and creditguise updateinstall the latest cli (signed release channel)
Add --json to any command for machine-readable output. You can also set GUISE_API_KEY instead of running guise auth.
## worth knowing
- ▸ One session is one browser. Want 30? Make 30 requests.
- ▸ Browsers are deleted, never reused. Cookies and cache go with them.
- ▸ The IP is chosen on the browser’s first request, then stays the same for the rest of the session.
- ▸ Treat connectUrl as a secret. Anyone with it can drive your browser.
- ▸ Billing runs from create to delete at one flat rate. GET /v1/usage shows your balance. At zero, new sessions are refused and running ones finish.