Variables
Many steps can save output into variables like page_text, job_link, or llm_output. Those values can be reused in prompts, formatted text, tool inputs, endpoint calls, and loop conditions.
{{job_title}}
{{page_text}}
Help
Reference for the standard workflow editor, including step behavior, common options, and where each step fits best.
Workflow Basics
Many steps can save output into variables like page_text, job_link, or llm_output. Those values can be reused in prompts, formatted text, tool inputs, endpoint calls, and loop conditions.
{{job_title}}
{{page_text}}
Many interaction and extraction steps target page elements with a CSS selector so the workflow can act on exactly the right field, button, or region.
input[name="email"]
button[type="submit"]
.jobs-easy-apply-modal
nth and modeSome steps support mode: nth to use one matching element, mode: all to use every matching element, and n or nth to choose which match to use. 0 means the first match.
Muted steps stay in the workflow for editing and testing, but they are skipped during run and test execution.
Start Loop and End Loop let a workflow repeat a block of steps until a stop or continue condition changes.
Extract Steps
These steps are mainly used for extraction, summaries, and building structured context for later workflow actions.
Extract one kind of value from matching elements, such as links, image URLs, text, form values, HTML, or a custom attribute.
Best for
Important options
source: href, src, text, value, html, or a custom attributemode: all or nthunique: remove duplicatesabsolute_url: convert relative URLs to absolute URLssave_as: store the resultExtract structured data from repeated card-like elements using a JSON field definition.
Best for
Important options
selector: card container selectorfields_json: extraction map for fields inside each cardmode: all or nthsave_as: store the structured arrayGet readable page content, usually as markdown-like text, optionally scoped to one part of the page.
Best for
Important options
selector: optional scope selectormode: all or nthinclude_images: include image referencessave_as: store the contentExtract the visible inputs on the page, including labels and metadata.
Best for
Important options
scope_selector: limit extraction to one areainclude_iframes: include iframe content when possibleinclude_hidden: include hidden inputssave_as: store the payloadExtract a single element or matching elements in one of several output formats.
Best for
Important options
property: text, html, overview, or essentialsmode: all or nthn: which match to use in nth modesave_as: store the resultCapture a page-level snapshot in HTML or JSON-oriented formats.
Best for
Important options
output: full HTML, sanitized HTML, JSON full, JSON compact, or controls-only JSONinputs_view: grouped or flat input formattingsave_as: store the snapshotWait until a selector appears on the page or times out.
Best for
Important options
selector: requiredtimeout_ms: how long to waitInteraction Steps
Clicks a target element.
Best for
Important options
selectornthtrustedhumanize, mode, move_first, pre_click_wait_msblock_file_chooserTypes text into a field.
Best for
Important options
selector: requiredtext: requiredtext_format: plain, markdown, or htmlclearpress_enterPresses a keyboard key, optionally against a targeted element.
Best for
Important options
selector: optionalnthkey: requiredrepeatdelay_msSelects an option in a native HTML <select> control.
Best for
Important options
selector: requiredvalue: value, label, or text to chooseTiming, Debug, And Data Steps
Pauses the workflow for a fixed time.
Best for
Important options
ms: required duration in millisecondsSends a prompt to the configured LLM and returns the response.
Best for
Important options
prompt: requiredsystem: optionaltemperaturemax_tokensendpoint, model, api_keysave_asBuilds a string from a template using workflow variables.
Best for
Important options
template: requiredsource_var: optionalsave_asRuns a JSON array of steps generated elsewhere.
Best for
Important options
source_var: variable containing steps JSONsteps_json: inline JSON step listper_step_delayTools, Control Flow, And Integration
Runs one of the built-in tools or playbooks from inside a workflow.
Best for
Important options
tool_name: requiredsource_varinclude_varssave_asSome tools show additional tool-specific fields in the editor based on the selected tool.
Marks the start of a loop block.
Best for
Important options
loop_name: optional labelmax_iterations: safety limitMarks the end of a loop block and decides whether to stop or continue.
Best for
Important options
loop_namestop_var, stop_operator, stop_valuecontinue_var, continue_operator, continue_valuewait_mstruthy, falsy, empty, not_empty, equals, not_equals, contains, not_contains, greater_than, less_than, length_equals, length_greater_than, and length_less_thanRuns one of the saved custom endpoints configured in the plugin.
Best for
Important options
endpoint_id: required saved endpointTakes a screenshot of the current page.
Best for
Important options
path: optional save pathfull_page: capture the full page instead of just the viewportWrites values into page inputs using a structured payload rather than manual typing.
Best for
Important options
payload: required object or array of values to injectdebug: emit extra debug informationUploads one or more files into a file input.
Best for
Important options
selector: target upload input or controluse_input_type_file: use input[type=file] directlypaths: URL(s) or JSON array of file paths/data sourceswait_ms: delay after uploadclose_key or close_button_text: optional close action after uploadEndpoints Help
Endpoints are reusable HTTP request templates managed in the plugin and then called from workflows. They are the bridge between browser automation and external APIs or backend services.
An endpoint is a saved HTTP request template that you can reuse inside workflows. Instead of rebuilding the same API call every time, you create it once in the Endpoints tab and then call it from any workflow with the Call Endpoint step.
At runtime, the workflow only picks a saved endpoint. The plugin loads the saved request definition, resolves variables into the request, sends it, parses the response, and can store the selected result back into workflow variables.
Each saved endpoint definition has a small set of core fields that control request behavior and response handling.
Endpoints support variable interpolation in url, headers_json, body_json, and response_path. The plugin resolves templates using the current workflow variables before the request is sent.
{{page_output}}
{{job_title}}
${page_output}The Call Endpoint step is intentionally simple in the workflow editor. It mainly shows the saved endpoint picker plus reference information. At runtime, the endpoint definition does the heavy lifting.
A common pattern is extracting browser content, passing it to an API, then saving one returned value for later steps.
The endpoint editor includes tools for validating requests before they are used in production workflows.
When an endpoint succeeds, the plugin keeps the response in several forms internally. For workflows, the most important part is the selected output and whether it is stored into output_var. If the request fails, the Call Endpoint step fails the workflow.
Saved endpoints work best when they are treated like reusable building blocks instead of one-off request snippets.
API Help
The API is the bridge between external systems and the live connected browser plugin. It is designed for curl, n8n, Python, and similar integrations that need to run workflows or tools in a real browser session instead of a server-only environment.
The plugin API lets external systems call into the connected browser plugin to check browser status, list workflows, and run saved workflows or built-in tools. It does not run against a server-only browser session. Instead, it routes commands into the real browser instance currently connected for that user.
There are two connector-related controls in the plugin, and they do different jobs. One controls live connector ownership, and the other only shows usage examples.
A normal API setup starts in the plugin, then hands off to curl, n8n, Python, or another service using the generated request examples.
The connector API uses the run API key header. The hosted connector URL used by the plugin examples points at the NodeCodeStudio browser connector service.
X-Run-API-Key: your_key_here
https://nodecodestudio.com/browser-connector
GET /health
GET /workflows
POST /runMost integrations only need three routes: health checks, workflow listing, and workflow or tool execution through the connected browser.
GET /health: check whether the connector sees a connected browser for the requested account or sessionGET /workflows: return saved workflows for the connected accountPOST /run: run a workflow, tool, or direct payload through the connected browservariables.some_name in connector examplescurl -H "X-Run-API-Key: your_key_here" \
https://nodecodestudio.com/browser-connector/health
curl -H "X-Run-API-Key: your_key_here" \
"https://nodecodestudio.com/browser-connector/workflows?include_steps=1"
curl -sS -X POST https://nodecodestudio.com/browser-connector/run \
-H "Content-Type: application/json" \
-H "X-Run-API-Key: your_key_here" \
--data-raw '{
"workflow_name": "My Workflow",
"variables.input_text": "Example value",
"timeout_s": 180
}'The Connector button on workflows and tools is the fastest way to get a working request example. It shows the payload shape, required fields, and copyable curl or Python examples built around the current workflow or tool.
Only one browser connection should be active per user account at a time. You can be signed in on multiple browsers, but only one should own the live connector session that receives API runs.
API runs execute against the real connected browser session, so results depend on what that browser is doing at that moment. This is powerful, but it also means the API depends on live page state instead of a detached server session.
Most connector issues come down to browser ownership, missing variables, or the target page not being in the expected live state. Start with health checks and connector ownership before debugging deeper run failures.
GET /health before debugging more complicated run failuresLegacy Notes
The runtime still supports some older or less commonly used commands for backward compatibility, but this help page focuses on the standard steps exposed in the workflow editor for normal workflow creation.