Matchmaking as a service

Matchmaking infrastructure for your game

Queue teams, match by skill, and deliver results through signed webhooks — without building the engine yourself.

No card required · slot-based engine · internal Elo or external ratings

Skill-based matchmakingskill · 1v1
Matching±50 window
····
Candidates · closest rating wins

Scanning the pool…

Match

Widening the window until someone fits…

Versus + FFA
match structures
Team-based
solo to N-player parties
Elo or external
rating per mode
Signed webhooks
with retries

Everything the matchmaking layer needs

One engine for pairing, ratings, and delivery — so you can ship the game, not the plumbing.

Team-based by default
Solo is a team of one, parties are teams of N, and team-vs-team fits without rebuilding the model.
Skill or neutral
Internal Elo, bring-your-own external ratings, or disabled — chosen per game mode.
Expanding rating window
Tight matches first; the allowed skill gap widens over time so nobody waits forever.
Slot-based matches
1v1, 5v5, or free-for-all expressed as slots and groups — versus and FFA from one engine.
Multi-tenant dashboard
Organizations, projects, API keys, environments, and role-based access out of the box.
Signed, retried webhooks
HMAC-signed delivery with exponential backoff and a full delivery log you can inspect — so a match result never silently disappears.

How it works

1

Configure a game mode

Set structure, team sizes, and rating behaviour per project.

2

Enqueue teams

Your game server posts queue entries with one API call.

3

A match forms

The engine pairs eligible teams and assembles strict slots.

4

Get the callback

A signed match.created webhook hits your server in real time.

One call in, one call out

Post a queue entry from your game server. When the engine forms a match, it calls you back with a signed webhook — no polling, no engine to maintain.

enqueue.sh
curl -X POST https://api.yourhub.dev/v1/queues/enqueue \
-H "Authorization: Bearer <project_api_key>" \
-H "Content-Type: application/json" \
-d '{
"projectId": "proj_123",
"gameModeId": "mode_ranked_1v1",
"environment": "production",
"team": { "members": [{ "playerId": "p1", "rating": 1500 }] }
}'
match.created
POST https://game.example.com/hook
X-Webhook-Signature: sha256=…
 
{
"event": "match.created",
"matchId": "match_abc",
"gameModeId": "mode_ranked_1v1",
"environment": "production"
}

Frequently asked

Do I have to bring my own ratings?

No. Each game mode picks its rating behaviour: internal Elo computed for you, an external rating you pass in per enqueue, or disabled for casual play.

Does it support teams and free-for-all?

Yes. Everything is modelled as slots and groups, so 1v1, 5v5, party-vs-party, and FFA all come from the same engine — solo is just a team of one.

How do I get match results?

A signed match.created webhook hits your server in real time, with HMAC signatures, exponential-backoff retries, and a delivery log you can inspect in the dashboard.

How does skill-based pairing avoid long waits?

The rating window starts tight and widens on a fixed cadence, so close matches form first and nobody is stuck in queue forever.

Is it multi-tenant?

Organizations, projects, environments, API keys, and role-based access are built in, so you can isolate games and teams from day one.

Start matchmaking in minutes

Create a project, drop in an API key, and send your first queue entry.