WARHOUNDOPEN SOURCEGitHub
DOCUMENTATION / HOUNDBROWSER

API reference

Versioned HTTP commands and ticket-authenticated, read-only WebSocket events.

Session lifecycle

POST /v1/browser/sessions creates a browser for an approved origin. GET /v1/browser/sessions/{id} returns its current revision. DELETE closes it. A session is owned by the service key’s tenant.

POST /v1/browser/sessions
{"scope":{"origin":"https://example.com"}}

POST /v1/browser/sessions/{id}/commands
{"id":"command-1","idempotencyKey":"command-1","action":"navigate",
 "args":{"url":"https://example.com"},"revision":0}

Actions

Navigate, observe, click, type, select, scroll, keyboard, back, forward, tabs, screenshots, diagnostics, scoped HTTP, unauthenticated page JavaScript, constrained assertions, and bounded synthetic experiments.

Results and evidence

Poll GET /v1/browser/sessions/{id}/commands/{command}. Status is accepted, running, completed, failed, cancelled, or outcome_unknown. Screenshot results reference authenticated artifact downloads with a SHA-256 digest.

Live observation

POST /v1/browser/sessions/{id}/viewer issues a one-use ticket valid for 60 seconds. Connect to /v1/browser/live with subprotocols houndbrowser and ticket.<ticket>. Viewers cannot issue browser commands. Full schema is served at /openapi.json with service authentication.