public beta

the easiest way to pair any two clients.

three words whispered over voice, chat, or QR โ†’ both sides get a shared session. mishear a word? fuzzy matching handles it. no accounts, no infra to build.

3 words โ†’ shared session 0 servers to build fuzzy matched
built for: โœ“ webrtc signaling โœ“ device pairing โœ“ multiplayer game lobbies โœ“ multi-agent systems โœ“ temporary collaboration sessions

no infra to build. just the handshake.

๐Ÿ—ฃ๏ธ

three words

share over voice, chat, or QR code. the other person doesn't need an account โ€” they just get the session.

โšก

no websockets

we handle the connection layer. your app just posts and polls messages โ€” long-polling built in.

๐Ÿ”’

no user accounts

only you need a project and API key. the other side is anonymous โ€” they just need the words.

three words โ†’ shared session

1

create

hit the API with your project credentials. you get three random words and a session_id.

โ†’
2

share

say "aardvark absurd acme" over a call, drop it in chat, or flash a QR code.

โ†’
3

claim

the other party posts the same three words and gets the same session_id. now both sides share a secret.

โ†’
4

talk

post and poll messages on the session channel. or use the session_id for WebRTC signaling โ€” it's up to you.

โš  Messages are stored as plaintext by default. For end-to-end encryption, consider using the shared session_id as an AES-256-GCM key via our client helpers โ€” the server never has access to the key.

We provide encryptPayload() / decryptPayload() in the TypeScript client to do this automatically.

pair and messages expire together, cleaned by the sweeper.

any two parties need to find each other

๐ŸŽฎ

game lobbies

pair two players into the same session. drop the words in discord โ€” both join the same lobby, no friend list needed.

curl โ€ข js โ€ข unity
๐ŸŽ›

creative tool sync

sync session context between two DAWs or VJ instances. the shared session_id is your handshake for whatever protocol comes next.

curl โ€ข python โ€ข max/msp
๐Ÿ“Ÿ

iot pairing

pair a phone to a device by scanning a QR code that reveals three words. no bluetooth menus, no wifi credentials to type.

http โ€ข embedded
๐Ÿ“ก

webrtc signaling

use the session channel to exchange SDP offers, answers, and ICE candidates for SimplePeer. no signaling server to deploy โ€” the channel is your transport. recommended: Pro tier for lower latency on SDP/ICE exchanges.

simple-peer โ€ข webrtc โ€ข js

pay for convenience, not for pairs

no per-message fees, no hidden costs. the cloud option is for when you want zero ops. same API, same code, just someone else's problem.

Free

$0 / month
  • โ€” projects
  • โ€” channels
  • โ€” pairs / day
  • โ€” TTL
  • community support
get started

Pro

$12 / month
  • loading...
  • loading...
  • loading...
  • loading...
  • priority support
subscribe

everything includes the full api, fuzzy matching, and ssl. billing by Creem โ€” no lock-in, cancel anytime.

specs

endpoints POST /api/pair ยท POST/GET /api/pair/:ch/messages
auth Basic (project id + secret) ยท Bearer (JWT, HS256)
words pgp wordlist (512 words)
fuzzy match levenshtein โ‰ค 2
session 16-byte random id
expiry 1 hour (configurable)
edge cloudflare workers, global
encryption session exchange only. messages are plaintext by default
word storage hmac-sha256 lookup only
ephemeral cleaned by sweeper after TTL
client TypeScript SDK on npm
distribution cloud API
license mit

questions? probably answered.

three words. one session.

three words. one session. your app.

โœฆ get started free

no credit card required.