API
The axiom.ai API has three layers. They can be used together or individually:
- Chrome API — a long-lived WebSocket to a cloud browser, drivable from Puppeteer, Playwright, or any CDP-speaking client.
- Step API — our library of step functions wraps the Chrome API with high-level browser actions in Node.
- Orchestrate API — trigger any pre-built automation, code or no-code, and manage its runs over REST.
All three layers are reachable from your own code. Start with the quickstart, then generate an API key.
Chrome API
Open a WebSocket to a cloud browser and drive it from Puppeteer, Playwright, or any CDP client.
Step API
Our library of step functions removes the CDP boilerplate — high-level browser actions in Node via the @axiom_ai/api package.
Orchestrate API
Trigger any pre-built automation — code or no-code — and manage its runs over REST. For Zapier, Make, a backend service, or an MCP client.
YOUR CODE
│
[API key]
│
╔═══════════════════════════════════════════════╗
║ axiom.ai API ║
╚═══════════════════════════════════════════════╝
│
┌───────────────────────────────────────┼───────────────────────────────────────┐
│ │ │
▼ ▼ ▼
╔══════════════════════╗ ╔══════════════════════╗ ╔══════════════════════╗
║ Chrome API ║ ║ Step API ║ ║ Orchestrate API ║
╚══════════════════════╝ ╚══════════════════════╝ ╚══════════════════════╝
Long-lived WebSocket. Node library calling REST. Fire pre-built
Connect Puppeteer, /api/v5/step. High-level automations and
Playwright, or any browser step functions. manage their runs.
CDP-speaking client.
wss://cdp-lb.axiom.ai/ npm install @axiom_ai/api POST /trigger
?token=API_KEY │ POST /run-data
new AxiomApi(key) POST /run-reports
│ POST /list-automations
browserOpen() POST /stop
│
goto(url)
click(selector)
enterText(sel, text)
scrape()
wait(ms)
│
browserClose()
Chrome API
A long-lived Chrome DevTools Protocol WebSocket pointed at a fresh cloud browser. Connect Puppeteer, Playwright, or any CDP-speaking library and drive it exactly as you would locally — except it runs on our infrastructure, with no Chromium to install or maintain. Best when you want full control of every browser action from your own stack, in any language.
const browser = await puppeteer.connect({
browserWSEndpoint: "wss://cdp-lb.axiom.ai/?token=YOUR_API_KEY"
});
Read the full Chrome API guide →
Step API
The @axiom_ai/api Node package gives you high-level browser actions over our /api/v5/step REST endpoint — call named step functions instead of speaking CDP yourself. Open a session with browserOpen(), drive it with actions like goto, click, enterText, scrape, wait, …, close with browserClose(). The Step API is a separate surface from the Chrome API above — pick whichever fits your stack. Best when you want code-driven flows in Node but don't want to write Puppeteer or wire up CDP yourself.
Start a session
Install @axiom_ai/api, instantiate the AxiomApi class with your API key, then open a cloud browser session.
Go to URL
Send the cloud browser session to a URL using axiom.goto() and wait for the page to load.
Click
Click a button, link, or any other element in a cloud browser session by passing a CSS selector to axiom.click().
Enter text
Enter text into an input, textarea, or other focusable element in a cloud browser session using axiom.enterText().
Click multiple
Click every element matching a CSS selector, up to a maximum, using axiom.clickMultiple().
Click engagement button
Click a like, follow, subscribe, or similar toggle only when it isn't already in the target state, using axiom.clickEngagementButton().
Hover
Move the mouse over an element to trigger hover-only UI (dropdown menus, tooltips, lazy-loaded content) using axiom.hover().
Click and drag
Press the mouse at one coordinate, drag to another, and release using axiom.clickAndDrag(). Useful for sliders, range pickers, drag-and-drop UIs, and slider captchas.
Press keys
Send keyboard key presses (Enter, Tab, arrow keys, modifier combinations) to the currently focused element using axiom.pressKeys().
Select list
Pick an option in a native HTML <select> element by visible text using axiom.selectList().
Date picker
Navigate a calendar widget month by month and pick a target day using axiom.datePicker().
Switch browser tab
Switch the cloud browser session's focus to another tab using axiom.switchBrowserTab().
Get clipboard contents
Read the contents of the cloud browser's clipboard, useful for pages that put their copy output on the clipboard rather than in the DOM.
Scrape
Smart-scrape a list of records from one or more pages, with optional pagination and a maximum-results cap, using axiom.scrape().
Scrape metadata
Extract page-level metadata (title, analytics IDs, schema.org structured data, or any meta-tag content) using axiom.scrapeMetadata().
Integrate AI
Run an LLM call inline within a step-function session for prompt completion, classification, or extraction using axiom.integrateAI().
Solve captcha
Send the current page's captcha to a third-party solver and submit the result using axiom.solveCaptcha().
Wait
Pause the session for a fixed duration on the pod, keeping the session alive while you wait for content to render or for a server-side process to finish.
Restart browser
Restart the cloud browser within the current session to recover from a wedged state without losing the session itself, using axiom.restartBrowser().
Close a session
Close the cloud browser session to free its resources and stop consuming runtime quota.
Step function vs No-Code step
Find the @axiom_ai/api method equivalent of every No-Code Tool step, useful when porting a visual automation to code.
Orchestrate API
Trigger any pre-built automation — code or no-code — and manage its runs over REST. Pass inputs at trigger time, poll status, fetch run history, stop in-flight runs. Best when the automation is already authored in the No-Code Tool or Code Dashboard and you want to wire it into Zapier, Make, a backend service, a cron job, or an MCP client.
Trigger an automation
Start a saved No-Code Tool automation in the cloud by name, with optional input data passed in the request body.
Pass input data
Send dynamic input into a No-Code Tool automation when triggering it via the API, using the table-shaped data payload.
Check run status
Poll the axiom.ai API for the current status of an automation by name and retrieve any data it wrote out.
List run reports
Fetch a list of recent automation runs on your account, each with its status, description, and timestamps.
List automations
Fetch the names of every saved No-Code Tool automation on your account, useful for building UIs or validating an automation name before triggering it.
Stop a run
Cancel a triggered automation that's still running in the cloud, freeing the concurrency slot for other runs.
Webhooks from a step
Use webhook steps inside an automation to push data to external services or trigger an automation from inbound webhooks.
Usage and limits
Check how much cloud runtime your account has left, see how runs are queued when you hit your concurrency limit, and stay inside the per-minute rate limits.
Check remaining runtime
Query the axiom.ai API for your account's cloud runtime allowance, used minutes, and remaining minutes for the current billing period.
Queue and concurrency
Understand how axiom.ai handles concurrent cloud runs, when triggers get queued, and how the queue clears.
Rate limits
The axiom.ai API allows 100 calls per minute per API key. Calls past that limit return a 429 error and the requested automation does not run.
Reference
Endpoint summaries, request and response payloads, and error codes for the full API surface.
Endpoints
Every axiom.ai API endpoint at a glance, with method, path, required parameters, and links to full reference pages.
API responses
Every JSON response shape returned by the axiom.ai API, including success, queued, and error variants.
Error codes
Every axiom.ai API error response, what it means, and how to resolve it.
Data payload format
Schema reference for the 3-D data array passed in axiom.ai automation triggers.
Need help? Contact support or ask a question in our Reddit community.