Developers

Build real-time messaging
into your product in minutes.

EmitWave gives developers typed client and server SDKs, signed publishing, channel authorization, presence, and webhooks — one realtime protocol behind every language you ship.

WebSocketChannelsPresenceSigned publishingWebhooksSDKs
publish.ts
200 OK · 22ms
import { Client } from "@emitwave/node"

const emitwave = new Client({
  gatewayUrl: "https://api.emitwave.com",
  appId: process.env.EMITWAVE_APP_ID,
  key: process.env.EMITWAVE_KEY,
  secret: process.env.EMITWAVE_SECRET,
})

// HMAC-signs the body, POSTs /apps/{appId}/events
await emitwave.trigger("orders", "order.created", {
  id: "ord_123",
  total: 4900,
})
Response
queued
{
  "id": "evt_01HX9K8QW4",
  "status": "queued",
  "channel": "orders.company_123",
  "event": "order.approved",
  "created_at": "2026-05-02T18:30:00Z"
}
Quickstart

Start with three lines of code.

Step 1Install the SDK
npm install @emitwave/node
Step 2Initialize the client
const emitwave = new Client({
  gatewayUrl: "https://api.emitwave.com",
  appId: process.env.EMITWAVE_APP_ID,
  key: process.env.EMITWAVE_KEY,
  secret: process.env.EMITWAVE_SECRET
})
Step 3Publish your first event
await emitwave.trigger("orders", "order.created", {
  id: "ord_123",
  total: 4900
})
The API

One API to publish, authorize, and manage.

Publish

HMAC-signed publish of an event to any channel type.

POST/apps/{appId}/events

Connect token

Mint a short-lived connection token for a browser socket.

POST/emitwave/connect-token

Channel auth

Authorize a private or presence channel for the current user.

POST/emitwave/channel-auth

Applications

Manage organizations, applications, and per-app settings.

GET/applications/{id}

Credentials

Create, rotate, and revoke server publishing credentials.

POST/applications/{id}/credentials

Webhooks

Configure webhooks and inspect or retry their deliveries.

POST/applications/{id}/webhooks
SDKs

Use EmitWave with your favorite stack.

Ja

JavaScript

Client
npm install @emitwave/js
Documentation
Re

React

Client
npm install @emitwave/react @emitwave/js
Documentation
Ne

Next.js

Client
npm install @emitwave/next @emitwave/react
Documentation
Vu

Vue

Client
npm install @emitwave/vue @emitwave/js
Documentation
No

Node.js

Server
npm install @emitwave/node
Documentation
Py

Python

Server
pip install emitwave
Documentation
PH

PHP

Server
composer require emitwave/php
Documentation
La

Laravel

Server
composer require emitwave/laravel
Documentation
Go

Go

Server
go get github.com/emitwave/go-sdk@latest
Documentation
Ru

Ruby

Server
gem install emitwave
Documentation
Ru

Rust

Server
cargo add emitwave
Documentation
Ja

Java

Server
com.emitwave:emitwave:0.1.0
Documentation
Code examples

Common workflows, simple code.

import { Client } from "@emitwave/node"

const emitwave = new Client({
  appId: process.env.EMITWAVE_APP_ID,
  key: process.env.EMITWAVE_KEY,
  secret: process.env.EMITWAVE_SECRET,
  // gatewayUrl defaults to https://api.emitwave.com
})

// HMAC-signs the body and POSTs /apps/{appId}/events
await emitwave.trigger("orders", "order.created", {
  id: "ord_123",
  total: 4900,
})
Webhooks

React to application events server-side.

EmitWave webhooks call your backend when events are published and as deliveries succeed, fail, or are retried — signed, SSRF-guarded, and replayable.

Webhook events

event.publisheddelivery.succeededdelivery.faileddelivery.retried

Security

  • Signed webhook requests
  • SSRF-guarded delivery
  • Automatic retries
  • Delivery history
  • Manual redelivery
Webhook payload
POST /your-handler
{
  "type": "event.published",
  "id": "wh_01HX9K8QW4",
  "data": {
    "channel": "orders",
    "event": "order.created",
    "payload": { "id": "ord_123" }
  },
  "created_at": "2026-05-02T18:35:00Z"
}
Authentication & Security

Secure from the first request.

EmitWave uses HMAC-signed publishing, short-lived connection and subscription tokens, private channel authorization, signed webhooks, and per-application tenancy to protect every request and delivery.

Separate credentials

Public keys for browsers, HMAC server credentials for publishing — never mixed.

Private channels

Authorize users with your own rules before they subscribe.

Signed webhooks

Verify every webhook request, with SSRF-guarded outbound delivery.

Tenant isolation

Channels are scoped per application, so tenants never share a stream.

Rate limits

Publishing is rate-limited and size-capped with stable error codes.

Signed publish
Node
// The SDK HMAC-signs method, path, query, and
// a hash of the exact body — no bearer key leaks.
await emitwave.trigger("orders", "order.created", {
  id: "ord_123",
  total: 4900
})
Observability

See every publish, connection, and delivery.

Events published
24.1M
Active connections
42.1k
Active channels
12.4k
Presence members
6.9k
Rejected (rate)
187
Publish p99
19ms
Webhook success
99.97%
Delivery p99
24ms
Live event log
● streaming
[18:30:01]publishpublish orders → order.created
[18:30:01]authsignature verified
[18:30:02]routechannel scoped: public:app_1a2b.orders
[18:30:02]realtimefan-out to 312 subscribers
[18:30:03]authchannel-auth private-company.123 allowed
[18:30:04]presencepresence-room.lobby join (count 42)
[18:30:04]webhookwebhook event.published dispatched
Built-in dev tools
  • Live debug console
  • Connection metrics
  • Presence counts
  • Rate-limit visibility
  • Webhook delivery log
  • Stable error codes
  • Delivery insights
  • Latency percentiles
Build & test

Test safely before you ship.

Spin up an isolated test application, mint test credentials, and publish against the live debug console — so you can verify end to end without touching production traffic.

Capabilities
  • Test credentials
  • Live debug console
  • Signed publish helper
  • Isolated test applications
  • Dry-run publishing
  • Replayable webhook deliveries
  • Stable error codes
  • Integration test suites
  • Environment overrides
  • Typed SDKs everywhere
publish.ts
test
// Publish to a test app and watch it
// arrive in the live debug console.
await emitwave.trigger("orders", "order.created", {
  id: "ord_test_1"
})
Use cases

Made for event-driven products.

Live dashboards

Stream metrics, events, and status changes into dashboards the moment they happen.

Payment activity

Push wallet credits, transfer updates, and balance changes to private per-user channels.

Collaboration

Sync comments, cursors, and edits across everyone viewing the same document.

Live tracking

Broadcast driver location and delivery status to customers and operations in realtime.

Presence & chat

Show who is online with presence channels and deliver chat messages instantly.

System events

Fan out job progress, queue depth, and incident status to internal tooling.

Your first event is
one API call away.

Start building realtime channels, presence, and live updates with signed publishing and typed client and server SDKs.