wire ▸ n8n opened 0
n8nSource-available workflow automation

Use Writ
inside n8n.

Add the one node n8n can't build alone: a real browser on your logged-in accounts, called over HTTP.

Writ runs on your own accounts, with your own credentials and data, on sites you are authorized to use.
gap ▸ hits a wall 1
01
the gap

Where n8n alone hits a wall

n8n orchestrates almost anything you can express as nodes and API calls, but it assumes the systems it talks to expose an API. When a target site has no API and sits behind a login with 2FA, there's no clean node for it, and hand-rolling a browser node is a project of its own.

fit ▸ one step 2
02
how it fits

Writ becomes one step in your n8n flow

Writ becomes a normal HTTP step in your flow. Point an HTTP Request node at the Writ endpoint /v1/{slug}/{path} with your wt_ key, and Writ runs the recorded browser workflow on your own account and returns JSON. For change-driven flows, have Writ POST to an n8n Webhook node instead. The browser side lives in Writ, the orchestration stays in n8n.

n8n flow
triggers & steps
Writ endpoint
browser on your account
JSON result
back in n8n
login + 2FA CAPTCHA dynamic JS wt_key
wire ▸ steps captured 4
03
wire it up

Connect Writ with n8n

  1. 1

    Record the browser workflow in Writ

    Record the login-gated action once (or describe it, or discover it from the site's network calls) and publish it as a managed endpoint.

  2. 2

    Attach a persona

    Attach a persona so Writ handles login, TOTP, and mailbox-OTP 2FA on your own account; secrets resolve at runtime and never appear in logs.

  3. 3

    Add an HTTP Request node in n8n

    In your n8n flow, add an HTTP Request node that POSTs to /v1/{slug}/{path} with your wt_ key and any inputs.

  4. 4

    Use the JSON downstream

    Map Writ's JSON response into the rest of your n8n nodes, or trigger Writ the other way via an n8n Webhook node for change-driven runs.

The call n8n makes

n8n-http-request · http
// n8n → HTTP Request node
POST https://api.usewrit.app/v1/{slug}/{path}
Authorization: Bearer wt_xxx
Content-Type: application/json

{
  "input": {
    "account": "[email protected]",
    "since": "2026-07-01"
  }
}

A representative request. The endpoint is /v1/{slug}/{path}; authenticate with a wt_ key. API reference.

split ▸ who does what 4
04
better together

n8n + Writ, side by side

An honest split of who does what. Writ never replaces your orchestrator; it reaches the part it can't reach alone.

What you need n8n alone n8n + Writ
Logged-in pages behind 2FA No durable authenticated browser session; login/2FA is DIY per node Runs on your authorized session; handles TOTP + mailbox OTP
A site with no API Nodes assume an API exists; a custom browser node is your project to build and maintain Recorded once, exposed as /v1/{slug}/{path}
CAPTCHA on your own accounts Not a built-in step Handled inside the Writ browser run
Dynamic / JS-heavy pages HTTP nodes fetch markup, not a rendered page Real browser waits for the page to settle
Orchestration & 400+ integrations n8n's core strength: nodes, branching, custom code Stays in n8n; Writ is one HTTP step
Self-hosting the engine n8n is source-available and self-host-first (its home turf) Writ's local/BYO agent runs on your machine; managed cloud optional
ask ▸ common questions 5
05
faq

Common questions

How does Writ show up inside n8n?
As a plain HTTP Request node calling /v1/{slug}/{path} with your wt_ key. There's nothing exotic to install. If n8n can make an HTTP call, it can call Writ.
Can a page change in Writ trigger my n8n flow?
Yes. Point Writ's webhook (or a Monitor) at an n8n Webhook node, so a detected change or a finished run kicks off the rest of your flow.
Does this replace n8n?
No, it complements it. Keep your orchestration, branching, and 400+ integrations in n8n; let Writ own the hard browser step on a no-API, login-gated site.
Whose account does the browser run on?
Yours. Writ runs on your own credentials on sites you're authorized to use, with a persona carrying login and 2FA. n8n never sees the credentials.