Realtime infrastructure for products that can't wait

REST and WebSocket APIs built to hold a connection open — chat, presence, live dashboards, and notifications, without running the infrastructure yourself.

42ms
median publish → deliver, global
99.99%
uptime, trailing 12 months
6.2M
peak concurrent connections

Everything a live feature needs

The parts you'd otherwise build yourself — connection handling, delivery guarantees, presence — as one API.

REST API

Publish a message with a single POST request. No SDK required, no persistent connection to manage on your side.

WebSocket channels

Open a socket once and hold it. Automatic reconnection and message replay pick up exactly where a dropped connection left off.

Presence

Know who's online, who just joined, and who just left, without polling for it.

Global edge network

Points of presence on five continents keep the round trip short, wherever your users are.

Webhooks

Forward channel events to your own backend the moment they happen.

Scoped access

Every API key is scoped to specific channels and actions, down to read-only or publish-only.

Send a message either way

Use the REST API for events from your backend, or open a WebSocket for anything that needs to stay live.

publish.sh
curl -X POST https://api.wavelane.dev/v1/channels/orders/publish \
  -H "Authorization: Bearer $WAVELANE_KEY" \
  -H "Content-Type: application/json" \
  -d '{"event": "order.shipped", "data": {"orderId": "8842"}}'
connect.js
const socket = new WebSocket("wss://api.wavelane.dev/v1/ws/orders");

socket.onopen = () => {
  socket.send(JSON.stringify({ type: "subscribe", channel: "orders" }));
};

socket.onmessage = (event) => {
  const { type, data } = JSON.parse(event.data);
  console.log(type, data);
};

From zero to live in three steps

No provisioning, no infrastructure to size ahead of time.

01

Create a channel

Name it whatever your app calls it — a room, an order, a document. There's no setup step.

02

Connect

REST for backend events, WebSocket for anything live. Both reach the same channel.

03

It scales itself

Wavelane holds the connections open and fans out messages. You don't run anything.

Pricing that grows with your traffic

Start free. Move up when your connection count does.

Starter
For side projects and early testing
$0
  • 100 concurrent connections
  • 1M messages / month
  • Community support
Start building
Enterprise
For teams with scale requirements
Custom
  • Unlimited connections
  • Dedicated infrastructure
  • SSO & audit logs
  • Uptime SLA
Talk to sales

Questions

What happens if a connection drops?

Wavelane buffers recent messages per channel. When a client reconnects, it can request everything it missed since its last known message.

Do you support private channels?

Yes. Scope API keys to specific channels, and require a short-lived token for client-side connections.

Which languages do you support?

The REST API works from anything that can make an HTTP request. WebSocket clients exist for JavaScript, Python, Go, and Swift.

Where is data processed?

Messages route through the nearest edge location and aren't stored beyond the replay window you configure.

Start building on Wavelane

The free tier includes everything you need to try it in production.

Start building free