Mahjong Online-Trained · Inference API

Mahjong AI,
as an API.

Send your seat's view of the board. MJOT replays it server-side, runs one neural-network forward, and returns the move — ranked candidates, probabilities and all — from a single stateless POST.

POST /v3/react · 4-player & 3-player riichi · gzip in, JSON out
East 1 · seat 0 · after drawmodel: 4p-ot2
dahai: W0.83
reach0.10
dahai: 5p0.04
{ "reaction": { "type": "dahai", "pai": "W", "tsumogiri": false }, "candidates": [ … ], "model": "4p-ot2" }
How it works

One position in, one decision out.

The API is stateless: every call carries the current hand's event stream from your seat's perspective. No sessions, no sockets, nothing to keep alive.

01 — SEND

Upload your seat's events

Standard mjai events for the current hand, censored to what your seat can see. Opponents' hidden tiles are just "?".

02 — REPLAY

The server rebuilds the position

Your stream is replayed into model input on our GPUs and batched with other requests for one forward pass.

03 — MOVE

Reaction + candidates back

The exact move as an mjai event, plus the policy's top-k candidate actions with probabilities.

Documentation

An API you can integrate in an afternoon.

Auth is one bearer key. The payload is the open mjai protocol — the same format used across the riichi AI ecosystem. Examples in curl, Python and JavaScript, with error semantics and rate limits spelled out.

Browse the docs

terminalPOST /v3/react
curl -sS https://api.mjot.example/v3/react \
  -H "Authorization: Bearer $KEY" \
  -d '{"model": "4p-ot2", "player_id": 0,
       "events": [ … ]}'

→ 200 OK
{ "reaction": {"type": "dahai", "pai": "W"},
  "candidates": [{"action": "dahai:W", "prob": 0.83}] }
Compatible clients

One inference service. Any client.

MJOT speaks a generic interface. Use it from the browser, from your own code, or from compatible desktop clients.

In your browser

Web Dojo

Review your games move by move and play live tables against the models, right on this site. The free demo model runs entirely in your browser; your API key unlocks the cloud models.

Enter the dojo →
Your code

Custom integrations

Research tools, replay analyzers, training aids, bots for AI competitions — anything that can speak mjai over HTTPS.

Read the API docs →
Desktop

Akagi

An open-source mahjong client by the same developer. Akagi supports local inference and custom endpoints; MJOT can be used as an optional hosted inference backend.

Learn about the integration →
Pricing

Pay for compute. Nothing else.

Every plan is the same API and the same models — you're buying inference quota. Keys are yours: renewing extends the key you hold, it never rotates.

Pro · 30 days
$10
one-time
  • 6,000 requests / day
  • Full model access
  • Top-3 candidates
Pro · 90 days
$27
one-time · save 10%
  • 6,000 requests / day
  • Full model access
  • Top-3 candidates
Pro · Monthly
$10/mo
subscription · cancel anytime
  • 6,000 requests / day
  • Full model access
  • Key auto-renews
Pro · Yearly
$100/yr
subscription · 2 months free
  • 6,000 requests / day
  • Full model access
  • Key auto-renews