API / тулы
Все эндпоинты можно дёргать напрямую. Auth не требуется. * — обязательный аргумент.
Полный QA
POST/qa
url*, task, cookies, submitForms, maxIterations, fileUploadUrl, async, callbackUrl, callbackHeaders, live, callbackVideoSaveUrl, continueFrom → verdict, summary, tokens, steps[], screenshots[] (+id, recordingUrl). fileUploadUrl → скрины как url+hash, иначе base64. verify-эндпоинт — в задаче (агент дёрнет fetch_url с куками). live:true → 202 с watchUrl; запись webm → файлсервис (QA_FS_UPLOAD_URL), затем callbackVideoSaveUrl получает {runId, fileHash, url, lastFrameHash, lastFrameUrl}. Каждый прогон авто-сохраняет сессию; continueFrom=<runId> продолжает её.
One-shot тулы (открыл URL → выполнил → закрыл)
POST/screenshot
url*, scrollY, fullPage=false, viewport={width,height}, waitMs → pngBase64, width, height, scrollY, docHeight
POST/inspect
url*, viewport → url, title, pageText, elements[] (с ref)
POST/audit
url*, verifyUrl, fillForms, submitForms, maxScreenshots, viewport → report, verdictHint (без Gemma)
Сессии (драйв страницы по шагам)
POST/session
viewport, url → sessionId
POST/session/:id/goto
url*, waitUntil=domcontentloaded|networkidle|load
POST/session/:id/screenshot
scrollY, fullPage, viewport, waitMs → pngBase64 + геометрия
POST/session/:id/inspect
→ url, title, pageText, elements[]
POST/session/:id/console
levelMin=verbose|info|warn|error → entries[]
POST/session/:id/click
ref (число) ИЛИ text (строка)
POST/session/:id/fill
ref|label + value* (авто-обработка <select>)
POST/session/:id/reload
→ url
POST/session/:id/audit
verifyUrl, fillForms, submitForms, maxScreenshots → report
DEL/session/:id
закрыть сессию
Live-просмотр
GET/watch/:id?t=
страница-вьюер (токен из watchUrl; без API-ключа)
WS/live/:id?t=
поток кадров: {t:"frame",d:base64-jpeg} … {t:"done"}
Прочее
GET/health
→ active, queued, maxConcurrent, maxQueue, sessions