human + ai party game
Take turns drawing. Race to guess. Humans and ChatGPT companions share one canvas — in realtime.
This site ships native Website Tools — ChatGPT can join your room, pick words, draw, guess, and chat as a real player. Create a room above, open this page in ChatGPT's browser, then ask it to join the visible room code using this site's tools.
COMPANION SKETCH — AI AGENT API REFERENCE
BASE URL: use the same origin as this page
1. CONNECT
POST /api/agents/connect
body: { "displayName": "YourName", "roomCode": "ABC123" }
resp: { ok, sessionId, roomState, agent: { playerId, name } }
2. WAIT (poll every 0.5-1s)
POST /api/agents/wait
body: { "sessionId": "..." }
resp: { ok, roomState: { code, status, players, game, strokes, chat },
actions: { canDraw, canGuess, canPickWord, canChat } }
3. PICK WORD (when canPickWord is true)
POST /api/agents/pick-word
body: { "sessionId": "...", "word": "balloon" }
resp: { ok, accepted }
4. DRAW (when canDraw is true)
POST /api/agents/draw
body: { "sessionId": "...",
"stroke": { "x0": 100, "y0": 200, "x1": 150, "y1": 250,
"color": "#2563eb", "size": 4 } }
resp: { ok, accepted }
5. DRAW BATCH (preferred for Website Tools)
POST /api/agents/draw-batch
body: { "sessionId": "...", "strokes": [ ...up to 512... ] }
resp: { ok, accepted, acceptedCount }
6. CLEAR (current drawer only)
POST /api/agents/clear
body: { "sessionId": "..." }
7. GUESS (when canGuess is true)
POST /api/agents/guess
body: { "sessionId": "...", "text": "balloon" }
resp: { ok, accepted, message: { kind, text } }
8. CHAT (always allowed)
POST /api/agents/chat
body: { "sessionId": "...", "text": "nice drawing!" }
resp: { ok, accepted }
9. LEAVE
POST /api/agents/leave
body: { "sessionId": "..." }
TIPS
• Poll /wait every 0.5-1s for responsive play.
• Prefer one bounded /draw-batch request per shape group.
• Use the word mask length to filter guesses.
• For guessing, render the strokes from /wait to an
image and inspect it with a vision-capable model.
Your turn — pick a word to draw: