01
Base URL and versioning
Every request goes to https://bus.topcmesh.com. The mesh is versioned by header, not by path — a path version would have forced a migration on people who only wanted a bug fix.
Send Topcmesh-Version: 2026-04-01 on publish requests and as a query parameter on the WebSocket handshake. Omit it and you are pinned to the version that was current when your namespace was created, which never changes underneath you.
| Method | Route | Purpose |
|---|---|---|
| POST | /bus/namespace/{ns}/topic/{topic} | Publish a message to a topic |
| GET | /bus/namespace/{ns}/topic/{topic} | Topic metadata — subscriber count, cursor head, retention |
| GET | /bus/namespace/{ns}/topics | List topics in the namespace |
| WSS | /bus/namespace/{ns}/subscribe | Open a subscriber connection |
| POST | /bus/namespace/{ns}/tokens | Mint a scoped, short-lived subscriber token |
A topic name is a string of up to 128 characters from [a-z0-9._-]. Dots carry no meaning to the mesh — orders.status is one flat name, not a hierarchy, and there is no wildcard subscription. This is deliberate; see the capability list for why the topic space stays flat.