Automation overview
Santiago turns every browser profile into a programmable, fully-spoofed browser you can drive from your own code or hand to an AI agent. You talk to a single local HTTP API on http://localhost:7891; the daemon launches a Camoufox (Firefox-based) browser for the profile and applies all fingerprint, proxy, timezone and WebRTC spoofing for you. You never assemble a fingerprint or wire up a proxy in your automation code — you reference a profile by ID and act inside it.
What you can automate
Section titled “What you can automate”Anything you can do by hand in a profile window, you can script — at one profile or across hundreds, in parallel.
| Use case | What it looks like |
|---|---|
| Fill in forms | Navigate to a form, fill every field, solve the dropdowns, submit — all through trusted, humanized events. See Filling forms. |
| Extract data | Launch a profile, read the DOM with evaluate, and pull out the text or values you need. Cookies and tabs sync back on stop. |
| Drive multiple profiles | Run many isolated profiles at once — each with its own fingerprint, proxy and cookie store — to run the same task in parallel. See Multiple profiles. |
| Long-running tasks | Hand an agent a duration and let it work autonomously, with randomized, human-like pacing. See Autonomous tasks. |
How the pieces fit together
Section titled “How the pieces fit together”Santiago is one desktop app with a layered process hierarchy:
Electron tray app └─ local daemon (Fastify HTTP server on http://localhost:7891) └─ Camoufox browser (one process per running profile)- Electron tray — the desktop app you install and sign in to. It owns your license and starts the daemon.
- Local daemon — a Fastify HTTP server listening on
http://localhost:7891. This is the only public Santiago API. It manages profiles, launches browsers, and exposes the automation endpoints. - Camoufox — a hardened Firefox-based browser, launched per profile, with the profile’s fingerprint baked in. When humanize is enabled, the daemon adds bezier-curve cursor movement to every action automatically.
Your code or AI agent sits outside this stack and calls the daemon over plain HTTP:
your code / AI agent ──HTTP──▶ daemon :7891 ──▶ Camoufox profileThe API surface
Section titled “The API surface”There are two HTTP surfaces on :7891, both under /api:
| Surface | Base path | Purpose |
|---|---|---|
| Profile API | http://localhost:7891/api/profiles | List, create, update, launch, stop profiles; read status; import/export cookies. |
| Automation API | http://localhost:7891/api/automation/:profileId/<action> | Drive a running profile: navigate, snapshot, click, type, fill forms, screenshot, evaluate. |
Every response uses the same envelope:
{ "ok": true, "data": { } }{ "ok": false, "error": { "code": "PROFILE_NOT_RUNNING", "message": "..." } }A minimal flow
Section titled “A minimal flow”Pick a profile, launch it, and start driving it. All you need is the profile ID.
curl -s localhost:7891/api/profiles | jq '.data[] | {id, name, status}'PROFILE=<profile-id>curl -s localhost:7891/api/profiles/$PROFILE/launch -X POSTcurl -s localhost:7891/api/automation/$PROFILE/navigate -X POST \ -H 'Content-Type: application/json' -d '{"url":"https://example.com"}'curl -s localhost:7891/api/automation/$PROFILE/snapshot -X POST | jq -r .data.snapshotcurl -s localhost:7891/api/profiles/$PROFILE/stop -X POSTThe full set of actions (click, type, fill-page, select-combobox, screenshot, evaluate, wait, batch, and more) is documented in the HTTP API guide and the API reference.
Two ways to drive it
Section titled “Two ways to drive it”You can call the daemon however you like — curl, fetch, a Python client, anything that speaks HTTP. There are two common patterns:
- Your own code — issue the HTTP calls directly. The endpoints, payloads and response shapes are in the HTTP API and API reference.
- An AI agent — install the Santiago agent skill and let a model decide the concrete actions (which element to click, what to type, when to wait). The skill teaches the agent the endpoints and the stealth rules. See Install the agent skill.
curl -fsSL https://downloads.santiago-browser.com/skill/latest/santiago-browser-skill.tar.gz \ -o santiago-browser-skill.tar.gzStealth rules that matter for automation
Section titled “Stealth rules that matter for automation”The disguise is only as good as the events you generate. Two rules carry over into everything you script:
Profile status and concurrency
Section titled “Profile status and concurrency”A profile reports one runtime status; automation only works against a running profile.
| Status | Meaning |
|---|---|
idle | Not launched. Automation calls return PROFILE_NOT_RUNNING. |
launching | Browser is starting up. |
running | Ready to drive via the automation API. |
stopping | Browser is shutting down (syncing cookies and tabs). |
locked | The profile is in use on another device — it can’t be launched here until released. |
How many profiles you can launch concurrently is set by your plan, and the daemon enforces it.
| Plan | Price | Profiles |
|---|---|---|
| Starter | $9/mo | 3 |
| Pro (most popular) | $59/mo | 40 |
| Agency | $149/mo | 300 + team up to 10 members |
Santiago is paid-only — there is no free trial. A profile launch requires an active license and a free concurrent slot; exceeding the slot count returns CONCURRENT_LIMIT_REACHED. See Plans for details.
Where to go next
Section titled “Where to go next”- Install the agent skill — hand the local API to an AI agent.
- Launch profiles — start, check, and stop profiles from your code.
- HTTP API — the endpoints, payloads and response shapes.
- API reference — every action and its fields.
- Best practices — batching, pacing, retries, and the stealth rules.
- Automation guides — end-to-end workflows that combine the endpoints.