Skip to content

Online Tic-Tac-Toe

The /tic-tac-toe endpoint allows playing and storing an online Tic-Tac-Toe game. Games are stored for 1 hour and support both public and private modes.

Parameters

ParameterRequiredDescription
usernameYesThe username making the move
moveYesThe move played in row-column format (e.g., 1-1, 2-2, 3-3)
sessionYesThe user's session identifier
gameYesThe game identifier for connection. If the game does not exist, it will be created

Move Format

The board is a 3x3 grid with positions numbered as follows:

1-1 | 1-2 | 1-3
----|-----|----
2-1 | 2-2 | 2-3
----|-----|----
3-1 | 3-2 | 3-3

Code Examples

curl -X POST \
  -H "Content-Type: application/json" \
  -d '{
    "username": "User1",
    "move": "2-2",
    "session": "abc123",
    "game": "VWXYZ"
  }' \
  "https://api.sylvain.sh/v4/tic-tac-toe"

Response Fields

FieldTypeDescription
messagestringStatus message about the move
winnerstring|nullUsername of the winner (if game is over)
loserstring|nullUsername of the loser (if game is over)
tiebooleanWhether the game ended in a tie

Error Responses

ErrorDescription
Global rate limit exceeded.Global API rate limit reached
You have exceeded the limit of X requests per hour.Hourly IP/token limit reached
Rate limit exceeded. Try again in X seconds.Per-user short-window limit
Invalid move. Please provide a valid move (e.g., 1-1, 2-2, 3-3).Invalid move format
Game is full, you can only watch.Game already has two players
Please wait for the other player to make a move.Not your turn
Move already made. Please choose a different move.Cell already occupied
Session ID mismatchSession doesn't match the player

Try It

Error Handling

If parameters are missing or invalid, the API will return an error:

Error MessageDescription
Please provide a username (?username={username})The username parameter is missing
Please provide a valid move (&move={move})The move parameter is missing or invalid
Please provide a valid session ID (&session={ID})The session parameter is missing or invalid
Please provide a valid game ID (&game={ID})The game parameter is missing or invalid

When a game is over, the request will return the winner and loser names, as well as whether there is a tie.