Any site becomes an API.
Record a task once, or describe the goal. Writ publishes it as a versioned REST endpoint and an MCP tool at /v1/{slug}/{path}, running on your own accounts.
Published as /v1/{slug}/extract
Record it, or describe it
From a no-code recording to a code-driven pipeline. Pick the way that fits the task; every one ends as the same callable endpoint.
Need list, detail, and pagination? Compose an extract step that walks a list, opens each detail page, and follows pagination into structured records.See web data extraction.
- a step fails: no valid selector
- the failing step + the live DOM go out
- the candidate is validated against the live page — or rejected
- the run completes
Auto-repair is opt-in, off by default, and a cloud capability — turning it on pins that workflow to the cloud.
Watch Writ record a workflow — then take over.
Sign-in, 2FA, extraction, download — on a demo portal. Click anywhere in the page to take over.
You just made a site callable. Now do it with yours.
- 9 actions recorded
- 4 steps after optimization
- 1 callable endpoint
This demo’s workflow is not saved: it lives in this page. No credit card.
New workflow
Set up what gets recorded
Run typeEditRun it, get a result, then stop. Ideal for an extraction, a form submission or a data pull — which is what most workflows need.
Entry URLThe page where recording will start.
Run onChoose where the browser runs. Local agents use your own machine’s browser and network.
Two-step verification
Enter the 6-digit code from your app
Invoices
Client area · Acme Supply
/ INV-2291
INV-2291
Due 12 Jul 2026 · Overdue
Payments
Settlements over the last 12 months
Settings
Billing preferences
Requests appear as you browse.
Proposed changes (3) — review before applying
The form posts to /api/client/session — one call authenticates, with no DOM driving.
The page reads /api/client/invoices; calling the JSON is faster and does not break when the layout changes.
The API call does not need the intermediate page.
This login uses 2FA. A persona signs in and enters the codes automatically on every run.
Ask AI for anything — extract data, find an element, build an extractor. It drives the browser and adds the step for you.
To record your site, you need Writ.
This demo replays an already-recorded session. To record your own site — including behind a login — open a real Writ browser.
Unlimited runs on your own machine · no credit card
No step type matches.
Endpoint
POST https://api.usewrit.app/api/v1/workflows/353/runs curl -X POST "https://api.usewrit.app/api/v1/workflows/353/runs" \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{}'
# → 200 {"success": true, "data": {...}} — blocks up to 120 s for the result.
# Add ?wait=false for {"task_id": ...} right away, then GET the same URL + /{task_id}. Quick edits — reorder, rename or delete. For anything visual, edit in the recorder.
Run on
This workflow signs in / uses credentials, so on Writ Cloud it runs ISOLATED — a fresh sandboxed browser process, destroyed after every run. Stronger isolation; a small surcharge. (Runs on your own agent are unaffected.)
Run it once to confirm everything works.
Run a testIt records the intent, not just the click
The recorder recognizes real-world UI patterns and writes resilient steps, so replays survive the site, not just the demo.
A copilot that turns a rough recording into a clean endpoint
While you record, an AI copilot reads your recorded steps and page context. Ask it to add or fix a step, write an extraction from a description, replay the underlying API, or split a recording into reusable functions. Every change lands as a preview you Apply or Discard.
A paid AI feature, priced by what it uses. The in-recorder copilot, AI Optimize, and AI-generated steps are available onStarter and up, billed by AI tokens used on managed cloud, and rate-limited. Bring your own keys on a local agent and that AI is unbilled by Writ.
Building blocks for the real, messy web
Grouped the same way as the in-app step palette: composable steps that handle logins, forms, tabs, and code on any site.
- Navigate (go to a URL)
- Click
- Hover
- Press Key
- Scroll
- Scroll to View
- Fill
- Type
- Select
- Check
- Uncheck
- Wait
- Wait for Change
- Screenshot
- Assert
- Verify
- End Point
- Extract (read data from an element)
- Evaluate JS (run JavaScript on the page)
- API Call (make an HTTP request)
- AI Fill (fill a form from instructions)
- AI Continue (perform a task autonomously)
- AI Navigate (navigate toward a goal)
- Tab Opened by Site
- Open New Tab
- Tab Closed
- Script Block (raw Playwright script)
Plus twofa for authenticator (TOTP) and mailbox-OTP sign-in on your own accounts.All step types in the docs.
Survives the site, not just the demo
Writ pairs recorded recipes with AI navigation, so a workflow keeps working through UI updates, without hallucinating actions.
When the site changes, the AI repairs the step and the run continues
Turn on AI auto-repair per workflow. If a layout change breaks a step mid-run, Writ re-derives that step against the new page and keeps going, instead of failing the run. Every repair is recorded.
ai_repair_enabled Repair broken steps automatically and continue the run. repair_count · 3last_repaired_at · 2 days ago
How a repair happens
- A step fails because the site changed: a button moved, a field was renamed, a panel was restructured.
- If
ai_repair_enabledis on, the AI re-derives that step against the new page, a simple selector fix or a complex rebuild. - The run continues from the repaired step, and the fix is written to the workflow's repair history.
Billed only when it runs. AI auto-repair is cloud-only and billed by AI-token usage, only when a repair actually fires. A healthy run that never breaks costs nothing extra. Seehow AI is billed.
One workflow, a REST endpoint and an MCP tool
A workflow's functions are its callable units: each becomes a REST operation and an MCP tool. Publish at /v1/{slug}/{path}, then call it from your app, a script, or an AI agent with an API key.
cURL
curl https://api.usewrit.app/v1/my-workflow/extract \
-H "Authorization: Bearer wt_xxx" \
-H "Content-Type: application/json" \
-d '{ "input": { "query": "quarterly report" } }' MCP config
{
"mcpServers": {
"writ": {
"url": "https://api.usewrit.app/v1/my-workflow/mcp",
"headers": { "Authorization": "Bearer wt_xxx" }
}
}
} Issue per-consumer keys, verify webhooks with HMAC, and serve from a custom branded domain. See managed endpointsand MCP.
Run it on your machine (free) or on the cloud
Run a workflow on your own local agent and it's never billed for compute; you provide the machine, and it can reach intranet, localhost, and VPN-only systems the cloud can't.
- No compute charge: you provide the hardware
- Reaches intranet, localhost, and VPN-only systems
- BYO-AI keys stored locally and unbilled
- Always-on managed execution fleet
- Metered by actual running time (~$0.12 per browser-hour)
- Paid from your prepaid balance, beyond the included usage
Local and BYO runs are free and unlimited on every plan, never metered and never billed; the cloud is metered by running time.How agents work.
One page for the whole workflow
Every workflow has Overview, Steps, Data, Runs, Connect, and Settings: edit steps, watch runs, see extracted data, publish endpoints, and share it on the marketplace, all in one place.
Explore the data explorer, orpublish it to the marketplace.