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.
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.
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"}}'
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.
Create a channel
Name it whatever your app calls it — a room, an order, a document. There's no setup step.
Connect
REST for backend events, WebSocket for anything live. Both reach the same channel.
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.
- 100 concurrent connections
- 1M messages / month
- Community support
- 10,000 concurrent connections
- 50M messages / month
- Presence & webhooks
- Email support
- Unlimited connections
- Dedicated infrastructure
- SSO & audit logs
- Uptime SLA
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