Your whole account runs on a single WA Bridges API key. Provision a bridge per tenant, tag each one with the customer it belongs to, and operate the fleet from one control plane — no per-tenant accounts, no spreadsheet of secrets.
The hard part of multi-tenant WhatsApp isn't the first number — it's the thousandth. Once you're past a handful of bridges, the questions get operational: which tenant owns which bridge, which ones are paired, which are silently disconnected, and which you're still paying for after a customer left.
WA Bridges is built to fan out from a single API key. One key authenticates every call; every bridge carries a customer_ref you control. That means your fleet's source of truth is your own database, not a pile of per-tenant credentials. Provision with one POST, list the whole fleet with one GET, and reconcile state on a schedule. We bill you a flat $3/month per active bridge — the rest of the operational discipline is a few patterns you set up once.
I run a multi-tenant product on WA Bridges. One API key authenticates my whole account, and each of my customers gets their own WhatsApp bridge, tagged with a customer_ref that matches my internal tenant id. My stack: [Node.js / Express + Postgres — update this to yours] My setup: - WA_API_KEY: my WA Bridges API key (one key for the whole account) - A "tenants" table; I want a "bridge_id" and "bridge_status" column on it I need three things: 1. provisionBridge(tenantId): POST /api/instances with customer_ref set to the tenant id and webhook_url pointing at my backend. Store the returned bridge id and status on the tenant row. 2. reconcileFleet(): GET /api/instances to fetch every bridge, then diff it against my tenants table. Return three lists: orphaned bridges (no matching tenant), tenants missing a bridge, and bridges whose status drifted from what I have stored. Update bridge_status from the live data. 3. A summary I can log on a cron: counts by status (paired, awaiting scan, disconnected) and the total monthly cost at $3/bridge. Please read the WA Bridges API docs before writing any code: https://wabridges.com/docs.txt Treat my Postgres tenants table as the source of truth for ownership. Make reconcileFleet() safe to run repeatedly — it should never delete anything on its own, only report drift so I can act on it.