Це повний довідник API автоматизації Santiago: набір ендпоінтів, які локальний демон надає для керування запущеним профілем браузера. Кожен ендпоінт керує реальною сторінкою на базі Playwright усередині антидетект-браузера, тож той самий відбиток і проксі, які ви налаштували для профілю, застосовуються до кожної дії.
Про налаштування та загальне використання дивіться Основи HTTP API та Найкращі практики . Готові наскрізні сценарії дивіться у посібниках з автоматизації .
Усі ендпоінти автоматизації працюють через локальний демон і спрямовані на один запущений профіль за його id:
http://localhost:7891/api/automation/:profileId/<action>
Демон слухає лише на http://localhost:7891. Замініть :profileId на id запущеного профілю — спочатку запустіть його (дивіться Запуск профілів для автоматизації ). Виклики до профілю, який не запущено, повертають 404 PROFILE_NOT_RUNNING.
Націлювання на елемент
Більшість ендпоінтів взаємодії приймають або ref (id елемента зі snapshot), або selector (CSS-селектор). Потрібен принаймні один. Робочий процес із ref найнадійніший: зробіть snapshot, прочитайте id [ref=eN], потім дійте на них.
Кожен ендпоінт повертає однаковий конверт.
{ "ok" : true , "data" : { ... } }
{ "ok" : false , "error" : { "code" : " ERROR_CODE " , "message" : " ... " } }
Дії, які лише завершуються успіхом або помилкою (click, hover, type, рухи миші тощо), повертають { "ok": true } без data. Ендпоінти, які видають значення (snapshot, screenshot, navigate, tabs, evaluate, dialog), заповнюють data.
Константа Значення Стосується Таймаут навігації 30 с navigate, back, forward, reload, відкриття вкладки з URLТаймаут дії 2 с Ендпоінти взаємодії (click, hover, type, select-option, scroll-to, скріншоти елемента) Таймаут очікування 15 с (за замовчуванням) Ендпоінт wait; перевизначається полем timeout
Чому взаємодії падають швидко
Таймаут дії навмисно короткий (2 с). На анімованих чи нестабільних сторінках довге очікування прокрутки до елемента — марна трата часу. Якщо дія на основі локатора перевищує таймаут, перейдіть до дій миші на основі координат або fill-page .
Метод Шлях Ключові параметри Призначення POST /:profileId/navigateurl (обов’язковий)Перейти за URL. POST /:profileId/backнемає Перейти назад в історії. POST /:profileId/forwardнемає Перейти вперед в історії. POST /:profileId/reloadнемає Перезавантажити поточну сторінку.
Усі чотири повертають { ok, data: { url, title } } з підсумковими URL і заголовком сторінки.
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /navigate \
-H ' Content-Type: application/json ' \
-d ' {"url": "https://example.com"} '
{ "ok" : true , "data" : { "url" : " https://example.com/ " , "title" : " Example Domain " } }
Метод Шлях Ключові параметри Призначення POST /:profileId/snapshotselector, depthЗахопити дерево доступності сторінки й отримати посилання на елементи. POST /:profileId/screenshotfullPage, ref, selectorЗробити скріншот PNG у кодуванні base64.
Захоплює дерево доступності поточної сторінки. Це основний спосіб «побачити» структуру сторінки та отримати id [ref=eN] для подальших дій.
Поле Тип За замовчуванням Опис selectorstring — CSS-селектор, щоб обмежити знімок піддеревом одного елемента depthnumber — Обмежити глибину дерева
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /snapshot \
-H ' Content-Type: application/json ' \
{ "ok" : true , "data" : { "snapshot" : " - heading \" Example \" [ref=e1] \n - textbox \" Email \" [ref=e2] \n ... " } }
Робить скріншот. Повертає рядок PNG у кодуванні base64. Передайте ref або selector, щоб захопити один елемент; інакше захоплюється область перегляду (або повна сторінка).
Поле Тип За замовчуванням Опис fullPageboolean falseЗахопити всю прокручувану сторінку (ігнорується, коли задано ref/selector) refstring — Скріншот конкретного елемента за ref selectorstring — Скріншот конкретного елемента за CSS-селектором
{ "ok" : true , "data" : { "screenshot" : " iVBORw0KGgo... " } }
Усі наведені нижче ендпоінти взаємодії приймають або ref (зі snapshot), або selector (CSS); потрібен принаймні один.
Метод Шлях Ключові параметри Призначення POST /:profileId/clickref/selector, button, doubleClick, modifiersКлікнути по елементу. POST /:profileId/hoverref/selectorНавести курсор на елемент. POST /:profileId/dragstartRef/startSelector, endRef/endSelectorПеретягнути й відпустити між двома елементами. POST /:profileId/scroll-toref/selectorПрокрутити сторінку так, щоб елемент став видимим.
Поле Тип За замовчуванням Опис refstring — Посилання на елемент зі snapshot selectorstring — CSS-селектор button"left" | "right" | "middle""left"Кнопка миші doubleClickboolean falseПодвійний клік modifiersstring[] — "Alt", "Control", "ControlOrMeta", "Meta", "Shift"
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /click \
-H ' Content-Type: application/json ' \
Поле Тип Опис refstring Посилання на елемент selectorstring CSS-селектор
Перетягнути від елемента-джерела до цільового елемента. Кожна сторона приймає ref або селектор.
Поле Тип Опис startRefstring Посилання на елемент-джерело startSelectorstring CSS-селектор джерела endRefstring Посилання на цільовий елемент endSelectorstring CSS-селектор цілі
Прокрутити сторінку так, щоб елемент став видимим.
Поле Тип Опис refstring Посилання на елемент selectorstring CSS-селектор
Два ендпоінти охоплюють два види випадних списків, які ви зустрічаєте в інтернеті: нативні елементи <select> та кастомні віджети комбобокса ARIA.
Метод Шлях Ключові параметри Призначення POST /:profileId/select-optionref/selector, values (обов’язковий)Вибрати опцію(ї) в нативному <select>. POST /:profileId/select-comboboxref/selector, value (обов’язковий), optionSelectorРозумний вибір для кастомних випадних списків комбобокса ARIA.
Вибрати опцію(ї) в нативному елементі <select>.
Поле Тип Обов’язковий Опис ref / selectorstring так Цільовий елемент <select> valuesstring[] так Значення для вибору
{ "ok" : true , "data" : { "selected" : [ " value1 " ] } }
Розумний вибір для випадних списків комбобокса ARIA — кастомних віджетів <div role="combobox">, які використовують багато сучасних вебзастосунків. Він виконує всю послідовність: клік для відкриття, читання aria-controls для пошуку listbox, очікування, доки listbox стане видимим (5 с), пошук [role="option"], що відповідає value (або вашому optionSelector), і клік по ньому.
Поле Тип Обов’язковий Опис ref / selectorstring так Цільовий елемент комбобокса valuestring так Текст опції для вибору optionSelectorstring — Кастомний CSS-селектор для опції (перевизначає зіставлення за текстом)
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /select-combobox \
-H ' Content-Type: application/json ' \
-d ' {"ref": "e5", "value": "March"} '
{ "ok" : true , "data" : { "selected" : " March " } }
Метод Шлях Ключові параметри Призначення POST /:profileId/typeref/selector, text (обов’язковий)Очистити поле та ввести значення (людиноподібна затримка між клавішами). POST /:profileId/press-sequentiallyref/selector, text (обов’язковий), delayВводити текст клавіша за клавішею без попереднього очищення. POST /:profileId/press-keykey (обов’язковий), modifiersНатиснути клавішу або комбінацію клавіш. POST /:profileId/fill-formfields (обов’язковий)Заповнити кілька полів одночасно (на основі ref/selector). POST /:profileId/fill-pagefields, submit, waitAfterSubmitВисокорівневе заповнення форми на основі координат + опційне надсилання.
Сфокусувати поле, очистити його наявне значення, потім ввести нове значення з людиноподібною затримкою між клавішами.
Поле Тип Обов’язковий Опис ref / selectorstring так Цільовий елемент введення textstring так Текст для введення
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /type \
-H ' Content-Type: application/json ' \
-d ' {"ref": "e2", "text": "jane.doe@example.com"} '
Вводить текст клавіша за клавішею в цільовий елемент (без попереднього очищення). Корисно для полів, які реагують на кожне натискання.
Поле Тип За замовчуванням Опис ref / selectorstring обов’язковий Цільовий елемент textstring обов’язковий Текст для введення delaynumber 50Затримка між клавішами в мс
Натиснути одну клавішу клавіатури або комбінацію. З modifiers демон об’єднує їх в акорд (наприклад, Control+a).
Поле Тип Опис keystring Назва клавіші: "Enter", "Tab", "Escape", "a", "F1" тощо. modifiersstring[] "Alt", "Control", "ControlOrMeta", "Meta", "Shift"
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /press-key \
-H ' Content-Type: application/json ' \
Заповнює кілька полів форми за один виклик. Кожне поле заповнюється через локатор Playwright (клік, очищення, введення); якщо це не вдається, демон переходить до стратегії на основі координат (визначення обмежувального прямокутника, клік по центру, виділити все, видалити, ввести). Результат кожного поля повідомляє використану стратегію strategy (locator або coords).
Поле Тип Обов’язковий Опис fieldsarray так [{ ref?, selector?, value }]
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /fill-form \
-H ' Content-Type: application/json ' \
{"ref": "e2", "value": "Jane Doe"},
{"selector": "#email", "value": "jane@example.com"}
{ "ref" : " e1 " , "ok" : true },
{ "selector" : " #email " , "ok" : true },
{ "ref" : " e3 " , "ok" : false , "error" : " Element not found " }
Високорівневе заповнення на основі координат, яке повністю обходить локатори Playwright (evaluate для пошуку центрів, потім миша + клавіатура). Один виклик може заповнити цілу форму, вибрати комбобокси та клікнути кнопку надсилання — замінюючи багато звернень. Комбобокси відкриваються, клікається відповідна опція, а вибір перевіряється (з однією автоматичною повторною спробою).
Поле Тип За замовчуванням Опис fieldsarray — Масив об’єктів полів (дивіться нижче) submitobject — { selector?, text? } кнопка надсилання (спершу selector, потім запасний варіант text)waitAfterSubmitnumber 2000Мілісекунди очікування після кліку надсилання
Кожен запис у fields:
Поле Тип За замовчуванням Опис selectorstring обов’язковий CSS-селектор елемента valuestring обов’язковий Значення для введення або текст опції для вибору type"text" | "combobox""text"Вид поля nthnumber 0Індекс із нуля, коли селектор збігається з кількома елементами optionSelectorstring li[role=option]CSS для елементів опцій (лише для combobox)
Потрібен принаймні один із fields або submit (інакше 400 BAD_REQUEST).
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /fill-page \
-H ' Content-Type: application/json ' \
{"selector": "#firstName", "value": "Jane"},
{"selector": "#month", "value": "March", "type": "combobox"}
"submit": {"text": "Submit"},
{ "selector" : " #firstName " , "type" : " text " , "ok" : true },
{ "selector" : " #month " , "type" : " combobox " , "ok" : true , "selectedValue" : " March " }
"submit" : { "ok" : true , "url" : " https://example.com/welcome " }
Низькорівневе керування мишею за координатами області перегляду. Використовуйте це, коли взаємодія на основі локатора заблокована або ненадійна.
Метод Шлях Ключові параметри Призначення POST /:profileId/mouse/movex, y (обов’язкові)Перемістити курсор у точку. POST /:profileId/mouse/clickx, y (обов’язкові), buttonКлікнути в точці. POST /:profileId/mouse/downbuttonНатиснути кнопку миші. POST /:profileId/mouse/upbuttonВідпустити кнопку миші. POST /:profileId/mouse/wheeldeltaX, deltaYПрокрутити колесом.
Поле Тип Обов’язковий xnumber так ynumber так
Поле Тип За замовчуванням xnumber обов’язковий ynumber обов’язковий button"left" | "right" | "middle""left"
Поле Тип За замовчуванням button"left" | "right" | "middle""left"
Поле Тип За замовчуванням Опис deltaXnumber 0Горизонтальна прокрутка deltaYnumber 0Вертикальна прокрутка (додатне = вниз)
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /mouse/click \
-H ' Content-Type: application/json ' \
-d ' {"x": 480, "y": 320} '
Метод Шлях Ключові параметри Призначення GET /:profileId/tabsнемає Перелічити відкриті вкладки. POST /:profileId/tabs/newurlВідкрити нову вкладку (порожню, якщо url пропущено). POST /:profileId/tabs/selectindex (обов’язковий)Перемкнутися на вкладку за індексом. POST /:profileId/tabs/closeindexЗакрити вкладку (за замовчуванням останню; не можна закрити єдину залишену вкладку).
curl http://localhost:7891/api/automation/ $PROFILE_ID /tabs
{ "ok" : true , "data" : { "tabs" : [{ "index" : 0 , "url" : " https://... " , "title" : " ... " }] } }
Поле Тип За замовчуванням Опис urlstring — URL для відкриття (порожня вкладка, якщо пропущено)
Повертає { ok, data: { index, url, title } }.
Поле Тип Обов’язковий indexnumber так
Повертає { ok, data: { index, url, title } }. Індекс поза діапазоном повертає 400 BAD_REQUEST.
Поле Тип За замовчуванням Опис indexnumber остання вкладка Індекс вкладки для закриття
Повертає { ok, data: { closedIndex } }. Закриття єдиної залишеної вкладки повертає 400 LAST_TAB — натомість зупиніть профіль.
Метод Шлях Ключові параметри Призначення POST /:profileId/evaluatecode (обов’язковий)Виконати JavaScript у контексті сторінки й повернути результат.
Поле Тип Обов’язковий codestring так
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /evaluate \
-H ' Content-Type: application/json ' \
-d ' {"code": "document.title"} '
{ "ok" : true , "data" : { "result" : " Example Domain " } }
Метод Шлях Ключові параметри Призначення POST /:profileId/waittext, selector, state, timeoutОчікувати на стан елемента/тексту або фіксований час.
Якщо ви передаєте selector або text, виклик очікує, доки цей елемент досягне state. Якщо ви не передаєте жодного, він просто очікує timeout мілісекунд.
Поле Тип За замовчуванням Опис textstring — Очікувати на появу цього тексту selectorstring — Очікувати на цей CSS-селектор state"visible" | "hidden" | "attached" | "detached""visible"Цільовий стан timeoutnumber 15000Таймаут у мс. Без text/selector очікує цей час безумовно
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /wait \
-H ' Content-Type: application/json ' \
-d ' {"selector": "#dashboard", "state": "visible", "timeout": 20000} '
Метод Шлях Ключові параметри Призначення POST /:profileId/dialogaction (обов’язковий), promptTextПрийняти або відхилити очікуваний alert/confirm/prompt.
Демон відстежує нативні діалоги (alert, confirm, prompt) для кожного профілю в міру їх відкриття. Викличте цей ендпоінт, щоб обробити найстаріший очікуваний.
Поле Тип Обов’язковий Опис action"accept" | "dismiss"так Прийняти або відхилити діалог promptTextstring — Текст для введення в діалогах prompt (використовується при accept)
{ "ok" : true , "data" : { "type" : " confirm " , "message" : " Are you sure? " , "defaultValue" : "" } }
Якщо немає очікуваного діалогу, виклик повертає 404 NO_DIALOG.
Метод Шлях Ключові параметри Призначення POST /:profileId/batchactions (обов’язковий)Виконати кілька дій за один HTTP-виклик з людиноподібним темпом.
Виконує кілька дій послідовно в одному запиті. Демон вставляє випадкову затримку 80–250 мс між діями для людиноподібного темпу. Він зупиняється на першій помилці — решта дій пропускаються (тож вони ніколи не виконуються на застарілому стані).
curl -X POST http://localhost:7891/api/automation/ $PROFILE_ID /batch \
-H ' Content-Type: application/json ' \
{"action": "type", "ref": "e1", "text": "Jane Doe"},
{"action": "select-combobox", "ref": "e5", "value": "March"},
{"action": "click", "ref": "e20"}
Доступні дії та поля, які використовує кожна (так само, як і відповідний окремий ендпоінт):
Дія Поля clickref/selector, button, doubleClick, modifierstyperef/selector, textpress-sequentiallyref/selector, text, delaypress-keykey, modifiersselect-optionref/selector, valuesselect-comboboxref/selector, value, optionSelectorhoverref/selectorscroll-toref/selectorwaittext, selector, state, timeoutnavigateurlsnapshotselector, depthscreenshotref, selector, fullPageevaluatecode
{ "index" : 0 , "action" : " type " , "ok" : true },
{ "index" : 1 , "action" : " select-combobox " , "ok" : true , "data" : { "selected" : " March " } },
{ "index" : 2 , "action" : " click " , "ok" : true }
Порожній масив actions повертає 400 BAD_REQUEST.
Код Коли PROFILE_NOT_RUNNINGid профілю не є запущеним профілем (HTTP 404). BAD_REQUESTВідсутні обов’язкові поля тіла або індекс вкладки поза діапазоном (HTTP 400). LAST_TABСпроба закрити єдину залишену вкладку (HTTP 400). NO_DIALOGdialog викликано без очікуваного діалогу (HTTP 404).NAVIGATE_FAILEDnavigate / back / forward / reload не вдалися.SNAPSHOT_FAILED / SCREENSHOT_FAILEDSnapshot або screenshot не вдалися. CLICK_FAILED / HOVER_FAILED / DRAG_FAILED / SCROLL_FAILEDВідповідна взаємодія не вдалася (часто 2-секундний таймаут дії). SELECT_FAILED / SELECT_COMBOBOX_FAILEDВибір у випадному списку не вдався. TYPE_FAILED / PRESS_SEQ_FAILED / KEY_PRESS_FAILED / FILL_FORM_FAILED / FILL_PAGE_FAILEDВведення тексту не вдалося. MOUSE_FAILEDДія миші за координатами не вдалася. TABS_FAILED / TAB_NEW_FAILED / TAB_SELECT_FAILED / TAB_CLOSE_FAILEDДія з вкладкою не вдалася. EVALUATE_FAILEDСкрипт сторінки викинув виняток. WAIT_FAILEDУмова очікування перевищила таймаут. DIALOG_FAILEDОбробка діалогу не вдалася. BATCH_FAILEDПакетний запит не вдалося виконати (наприклад, профіль не запущено).