Push events the moment they happen.

The free WebSocket server for realtime apps.

Hosted channels, presence and client events on a Pusher-style channel model. 500 concurrent connections and 500K messages a day, free, with no credit card.

npm install @apinator/client
CH presence-orders.us LIVE
21:04:17 subscribe  presence-orders.us 128 B
21:04:18 member.added  user_482 96 B
21:04:19 order.placed  {"sku":"AP-12"} 214 B
21:04:21 order.shipped  {"id":"ord_91"} 186 B
TransportWebSocket
Online12 members
Regionus-east
Price · forever
$0
Concurrent connections
500
Messages per day
500K
SDK languages
6
Regions · EU, US
2
Features

Realtime channels, presence and auto-reconnect.

The same primitives power chat, dashboards, live carts and multiplayer lobbies. Every feature is included on the free tier.

01 · Channels

Public, private, presence and cache channels

Built-in HMAC authorization for private channels, plus cache channels that hand late subscribers the last event.

presence-game.<room> signed + roster

A private channel with a live member list. Join and leave events arrive automatically.

02 · Presence

Live presence: know who's online

Members join and leave in realtime with no session store, Redis hash or cron job. Multiple tabs per user are handled.

  • Jana M. online
  • Rafael K. joined 2s
  • Sora E. online
  • Dev N. online
  • Lea P. away
Channel
presence-orders.eu
Members
12 online · 41 today
Last event
member_added · RK

03 · Multi-region

Pick US or EU, publish once

Choose US or EU per app. Redis Pub/Sub fans each event out to every node in that region, so any client on any server receives it.

Live: us-east · eu-central· ap-southeast soon

SERVER · trigger()CLIENT · client-*Apinator fan-out busREDIS · PUB / SUB · ONE REGIONnode-anode-bnode-cCONNECTED CLIENTS · ANY NODE

04 · Auto-reconnect

Automatic reconnection and resubscribe

Exponential backoff with jitter and automatic channel resubscription ship in every client SDK.

  1. +0.00s connection lost
  2. +0.50s attempt 1 · backoff 0.5s
  3. +1.10s attempt 2 · backoff 1.5s
  4. +2.60s reconnected · new socket id
  5. +2.62s resubscribed to 3 channels

05 · Webhooks

Signed webhooks for channel activity

Get a POST when a channel is occupied or vacated and when a presence member joins or leaves. Each endpoint has its own signing secret, and failed deliveries are retried.

POST
https://example.com/webhooks/apinator
X-Realtime-Event
member_added
X-Realtime-Signature
sha256=9f2c4e…
channel
presence-orders.eu
user_id
42
Getting started

Add realtime to your app in three steps.

Install, subscribe, trigger. No servers to provision, no load balancers to tune, no Redis to maintain.

  1. 01  Install

    Add the SDK

    npm, pip, go get, Composer or Swift Package Manager. One dependency, no config files.

    $ npm install @apinator/client
  2. 02  Subscribe

    Connect from the client

    Public, private and presence channels share one API. Reconnect is built in.

    const ch = client.connect()
      .subscribe('chat-room')
    ch.bind('message', fn)
  3. 03  Trigger

    Publish from your server

    A signed server-side call. Every subscribed client receives the event.

    await realtime.trigger({
      name: 'message',
      channel: 'chat-room',
      data: JSON.stringify({ text: 'hi' }) })
SDKs

WebSocket SDKs for six languages.

Open-source, MIT-licensed clients and servers with the same API shape everywhere: JavaScript, Node.js, Python, Go, PHP and Swift.

Framework guides

client.js
npm install @apinator/client
import { Apinator } from '@apinator/client'

const client = new Apinator({
  appKey: 'your-app-key',
  cluster: 'us'
})

const channel = client.connect().subscribe('chat-room')

channel.bind('message', (data) => {
  console.log('New message:', data)
})
Compare

Apinator vs Pusher, Ably and self-hosting

A Pusher-style channel model means concepts map 1:1, so migration is an SDK swap. The pricing model is where the options differ.

Beforepusher-js

new Pusher('app_key', {
  cluster: 'mt1', forceTLS: true
})

After@apinator/client

new Apinator({
  appKey: 'app_key', cluster: 'eu'
}).connect()
Based on each provider's published pricing model. Full breakdowns: Pusher alternative · Ably alternative · Managed vs self-hosted
ApinatorPusherAblySelf-hosted
Price$0, no cardFree sandbox, then $49+/moFree tier, then $29+/mo + usageServers + ops time
Billed onNothingPlan tier: connection and daily message capsMessages, connection and channel minutesInfrastructure
Presence channelsIncludedIncludedIncludedBuild it
RegionsEU + US, per appOne cluster per appGlobal edgeBuild it
Setup timeMinutesMinutesMinutesDays to weeks
Self-hostingNo, hosted onlyNoNoYes
Free tier

One free tier, $0 forever

No paid plan above it and no credit card. Private and presence channels, client events, multi-region and HMAC auth are all included.

Concurrent connections
500
Messages / day
500K
Channels
100
Presence members / channel
500
Client events / sec
500
Max WebSocket message
256 KB

Need more headroom? Open an issue and tell us what you're building.

WebSocket server FAQ

The documentation goes deeper. Background reading: WebSockets vs SSE and how WebSockets scale.

01

What is a managed WebSocket server?

A managed WebSocket server runs the servers, scaling and failover needed for persistent WebSocket connections, so you only write your app logic.

02

Is Apinator a Pusher alternative?

Yes. Apinator follows the Pusher channel model (public, private, presence and cache channels, client events, HMAC channel auth with the same signature format), so migration means swapping SDKs. It is free, with open-source SDKs and no per-message pricing.

03

Is Apinator really free?

Yes. Apinator is a free managed service maintained as a community project, with no paywalls, no upsells and no credit card requirement.

04

Which languages and frameworks are supported?

SDKs for JavaScript, Node.js, Python, Go, PHP and Swift. Framework guides cover Next.js, React, Vue, SvelteKit, Laravel, Python, Go and Swift.

05

How does Apinator scale WebSocket connections?

Redis Pub/Sub fan-out across nodes: any node can receive a publish and deliver it to every connected client, regardless of which server they're on.

06

Is Apinator open source?

The client and server SDKs are open source and MIT-licensed. The server behind the managed service is proprietary; you use Apinator as a hosted service rather than self-hosting it.

07

What are the free-tier limits?

500 concurrent connections, 500,000 messages per day, 100 channels, 500 presence members per channel, 500 client events per second, and up to 256 KB per WebSocket message (REST publish bodies up to 1 MB). Signed webhooks, with up to 10 endpoints per app, are included.

Send your first event in five minutes.

Sign-up takes about thirty seconds. Free, no credit card.