Step function vs No-Code step

If you've built an automation in the No-Code Tool and want to drive the equivalent flow via the axiom-api library, this table maps each step to its closest method. Steps without a direct equivalent are flagged in the Notes column with the recommended workaround.

Mapping table


No-Code Tool stepaxiom-api methodNotes
Go to pageaxiom.goto(url, ...)Direct equivalent.
Click elementaxiom.click(select, ...)Direct equivalent. Supports left/right click and "click if present" via the optionalClick flag.
Click multiple elementsaxiom.clickMultiple(select, ...)Direct equivalent.
Click engagement buttonaxiom.clickEngagementButton(select, setValueToCheck)Direct equivalent for like/follow/subscribe-style toggles.
Enter textaxiom.enterText(selectTextField, text, ...)Direct equivalent. Per-character delay, append-vs-replace, and a custom-line-break token are all supported.
Press key(s)axiom.pressKeys(key, delimiter, delay)Direct equivalent.
Rollover elementaxiom.hover(select)Direct equivalent.
Mouse click & dragaxiom.clickAndDrag(start, end)Direct equivalent.
Select listaxiom.selectList(select, text)Direct equivalent for native <select> elements.
Date pickeraxiom.datePicker(...)Direct equivalent for calendar-widget date pickers.
Waitaxiom.wait(time)Direct equivalent. Pauses on the pod so the session's inactivity timer stays reset.
Random waitCompose in codeCompute the delay in your code, then call axiom.wait(delay).
Switch browser tabaxiom.switchBrowserTab(selectTab)Direct equivalent.
Open a new tabaxiom.goto(url, false, true)Pass openInNewTab: true (third arg) to goto.
Close browser tabaxiom.browserClose()Closes the whole session. There is no single-tab close today.
Get data from bot's current pageaxiom.scrape(url, selector, pager, max_results, settings)Direct equivalent. Pass null for url to scrape the page already loaded.
Get page metadataaxiom.scrapeMetadata(metadata)Direct equivalent for title/description/OG-tag style fields.
Get a list of links to pages from bot's current pageaxiom.scrape(...)Pass a selector that targets the links you want.
Read clipboardaxiom.getClipboardContents()Direct equivalent.
Save screenshot locallyNot exposedFall back to a No-Code Tool automation triggered via /trigger, or take the screenshot yourself over CDP (Page.captureScreenshot).
Save page HTMLNot exposedUse axiom.scrape() for structured extraction, or drop down to CDP and read DOM.getOuterHTML.
Download file from URLNot exposedUse a normal HTTP client in your code.
Write javascriptNot exposedFall back to /trigger for arbitrary JS execution, or use CDP Runtime.evaluate.
Clear cookiesNot exposedOpen a fresh session for cookie isolation. The doNotShareLocalstorage flag on axiom.goto() handles the localStorage case for a single navigation.
Current UrlNot exposedTrack URLs in your own code from each axiom.goto() call.
Solve Captchaaxiom.solveCaptcha(apiKey)Direct equivalent. You supply the solver API key.
Generate text with ChatGPT / AIaxiom.integrateAI(aiOptions)Direct equivalent for the inline-AI step. For arbitrary OpenAI/Anthropic usage, call those APIs from your code instead.
Try / CatchNative language constructtry { ... } catch (e) { ... }
If conditionNative language constructBranch based on data returned by previous calls.
Loop through dataNative language constructfor loop in your code.
Read data from a Google SheetNot exposedUse the Google Sheets API directly from your code.
Write data to a Google SheetNot exposedUse the Google Sheets API directly from your code.
Send an emailNot exposedUse your language's email library or a service like SendGrid.
Trigger webhookNative HTTP callfetch(url, { method: "POST", body }) from your code.

When to fall back to /trigger


The step-trigger surface covers the common interaction and extraction steps directly. For everything else (screenshots, raw HTML readout, arbitrary JS, file downloads, sheet I/O, email), the recommended workaround is:

  1. Build the missing capability into a No-Code Tool automation.
  2. Trigger that automation via /trigger from your code.

This gives you the imperative control of axiom-api for the parts of the flow that need it, plus the full No-Code Tool step library for the parts that don't.

When to port and when not to


Porting a No-Code Tool automation to axiom-api makes sense when:

  • The flow needs to branch based on what each step returned.
  • The flow needs to live alongside other code in your stack (in a backend service, a CI job, a scheduled function).
  • You want version control, code review, and tests on your automation logic.

Stick with the No-Code Tool when:

  • The flow is short and stable, with no runtime branching.
  • The person maintaining it isn't a developer.
  • Triggering it via /trigger from your code already covers your needs.

The two surfaces aren't either-or. A common pattern is keeping the visual automation as the source of truth for stable workflows, then using axiom-api for the dynamic, branchy parts of your application.