WAVE Realtime
Your broadcast talks back. Two IETF standards, WHIP ingest and WHEP egress, plus N-to-N rooms, gated on the same gateway and the same token as WAVE broadcast. No second stack, no second bill.
browser
│ WebRTC
▼
POST /v1/whip/publish ─▶ ingest (IETF WHIP)
POST /v1/whep/subscribe ─▶ egress (IETF WHEP)
POST /rtk/join ─▶ N-to-N room + voice agent
│
└─ an internal trust header, stamped by api.wave.online AFTER it authenticates and charges the call
Three routes. Check that all three are real.
A roadmap page returns 404. A demo returns 200 to anyone. These return 401, which is the interesting answer: the request reached a live handler and was refused for exactly one reason, the gateway's trust header. Run all three yourself. No key needed.
$ curl -s -X POST https://rt.wave.online/v1/whip/publish $ curl -s -X POST https://rt.wave.online/v1/whep/subscribe $ curl -s -X POST https://rt.wave.online/rtk/join 401 {"error":"UNAUTHORIZED", "message":"paid endpoint — call via api.wave.online"}
Every route answers. None answers for free. WHIP ingest, WHEP egress and rooms pass the same chokepoint, so one place decides who is authorized and one meter charges them.
One plane, both directions. WAVE is media infrastructure for the agentic internet: one call shape moves live and on-demand media, and both kinds of user, people and agents, call it and pay for it per call. The broadcast plane carries one-to-many. This spoke is the interactive half, with rooms, calls and voice agents authorized by the same token and metered through the same gateway.