Vespo for Developers
Take your game's chat
beyond the game.
Put chat into your own Roblox game. Build a mini app that runs inside Vespo. Both are free, and you get a key the moment you register.
Free · key issued instantly · limits grow with your player count
Chat API
Make your game's chat reach beyond the game. People who have closed the game still get a notification on their phone.
Mini apps
A small app that opens inside a Vespo chat. You find out who opened it, safely.
What you can do
Chat API
Your game's chat keeps going outside the game
Messages sent in the game also appear in the Vespo app, and people can reply from there. ⚠️ What is written in the app does not appear inside the game (Roblox's rules do not allow text written outside to be brought in). The only things that flow back to the game are leaving, renaming, and the icon background colour.
POST /v1/messages · GET /v1/room-ops
Phones get notified even when the game is closed
This is the heart of Vespo. ⚠️ People on the same server right now are skipped, so nothing rings twice.
POST /v1/messages (presentRobloxIds)
Create rooms, add people, remove them
You choose the room IDs. Calling again gives the same result, so on failure you just call again.
POST /v1/rooms · POST /v1/rooms/leave
Give a room a name and an icon
Anything from the Roblox catalog can be the icon, and you can pick a background colour.
POST /v1/rooms (icon / iconBg)
See concurrent players
Report who is here and the developer site shows your concurrent count and its trend. Linking to the game is automatic.
POST /v1/presence
Show or hide "now playing"
Players choose whether it is shown. ⚠️ Off by default, so nobody sees it until the player turns it on.
POST /v1/presence-settings
See exactly how it is being used
Call counts, failures, response times and how many people typed in chat, in 5-minute steps.
Developer site
Mini apps
Your page opens inside a chat
The contents can stay on your own site. Vespo only lends the place to open it.
Mini app registration
Find out who opened it, safely
It takes both the ticket and your API key, so a stolen ticket alone is useless.
POST /v1/mini/verify
You decide what information you receive
Choose from name, icon, room key, call status and voice. ⚠️ Anything you did not choose is not returned (only the ID is always passed). ⚠️ Scores, saves, rankings and purchase checks need the server token (stateToken), which is only issued when you chose "call status (call)".
Scopes (name / avatar / room / call / voice)
This is all you paste
Just call it from Roblox's HttpService. No library to install.
local Players = game:GetService("Players")
-- ⚠️ presentRobloxIds = people on this same server right now.
-- They can already see it in the game, so their phones stay quiet
local present = {}
for _, p in Players:GetPlayers() do
table.insert(present, p.UserId)
end
call("POST", "/v1/messages", {
roomId = "myGame:lobby",
senderUserId = player.UserId,
senderName = player.DisplayName,
content = message, -- ⚠️ up to 2000 characters
clientMsgId = HttpService:GenerateGUID(false),
experienceId = game.GameId,
presentRobloxIds = present,
})Pricing
Chat API is free
Only when you sell something in a mini app: after payment fees, you keep 85% and Vespo takes 15%. Payouts start at ¥3,000.
Rate limit
Scales with players
600 + 1.5 × concurrent players per minute. Getting popular never gets you cut off.
What you can see
Totals and trends only
Who said what is shown to nobody — not to developers, not to us.
Get started
Sign in with a Roblox or Google account, register as a developer, and you get an API key on the spot.