v1
A quiz shows its answer in the second colour, and a choice poll can draw Slim bars.
- A choice poll takes
mcStyle: "slim", called Slim bars in the editor: each option’s name and share on one line, with a slim bar under it as long as the share, so a long name never has to fit inside its bar. - Once a quiz’s answer is revealed, the
barsandslimlooks draw the right answer in the card’scounterand every other bar in theaccent. The other choice looks draw the right answer in thecounterand keep fading the rest. A card without acountershows the right answer in the accent, as before.
- The card style takes
counter, a hex for the deck’s second colour besideaccent. An NPS card draws its promoters in it and its passives in the accent. The standings at the end of a quiz put their winner in the quiz card’scounter. Left out, both places take the accent as before. - The standings a presenter puts over a slide are now a card on that slide, in the colours, face and corners of the deck’s quiz card, instead of a screen of their own in our blue.
- An NPS card fades its passives and detractors towards the card’s own colour instead of towards white, so a light accent on a dark card still shows three groups.
create_deckon a team without Pro that already has three decks answers403, withA free team keeps three decks.and the fixDelete one, or move the team to Pro.The editor and the deck manager refuse the same deck with the same sentence.- Every live deck in the team counts, whoever made it and through whichever door. A deck in the bin does not, so
delete_deckmakes room at once. - A team already past three keeps every deck it has and reads, changes and presents them as before. Only a new one is refused.
v1
Image choice became a look of the choice poll, the Fill-up look is retired, a card lands plain, and Spokes is now called Pinwheel.
-
A choice poll takes
optionImagesand a newmcStyle: "tiles": a tile per option with its picture, its share and its name. That is what theimage-choicetype drew, so it is no longer offered as a type of its own.image-choiceis still read, and a deck opened in the editor is saved back as a choice poll withmcStyle: "tiles". -
A look that has been retired no longer refuses a write. Send
hpStyle: "marimekko"orimgStyle: "fill"and the poll is accepted with no look, which draws the family’s own; a value that was never a look is still refused. -
imgStyleno longer takesfill. A picture filling from the bottom read as a loading bar and said less than the tiles, which carry the same share on the picture itself. A poll sent withfillis refused, and a room that ran with it shows the tiles. -
A card’s default style is a white background with no shadow.
shadowandbackgroundare unchanged as settings; only what a card starts with moved. -
The
spokeslook of a choice poll is called Pinwheel in the editor, because it draws wedges whose length carries the share. The value in a deck is stillspokes. -
Every look has a measured minimum size, and the editor will not drag a card under it.
warningsnames the look’s own minimum; most looks need 30% of the slide’s width and 45% of its height, a few need more.
v1
The Marimekko look is retired, and a ranking now reports its spread.
hpStyleno longer takesmarimekko. It stacked a column per group, which the sunburst and the icicle already draw from the samegroups. A poll sent withmarimekkois refused, and a room that ran with it shows the bars.- A ranking’s results carry
rankSpread, aq1and aq3per option: the places a quarter and three quarters of the room put it at. The avg-rank look draws that as a bar behind each dot, so a room that disagreed reads as a long bar.
v1
The Rounds widget is retired.
roundsis no longer a poll type. It compared the tallies of earlier polls in the same deck, which the results of those polls already show, and theroundsModeandrefsfields go with it.- A deck that still holds a rounds slide keeps it in storage, but it is no longer offered in the editor and the API no longer accepts
roundson a create or an update.
v1
Columns, donut and pie on the big screen.
mcStyletakescolumns,donutandpieas well. Until now these three were only drawn on a card, through the card’svariant; a full-screen poll step fell back to bars. Now a poll draws them the same way on a card, on the big screen, in the preview and on the phone.- A card set to
variantcolumns,donutorpiefrom the editor also setsmcStyleto match, so the two never disagree. - An image choice poll takes
correctIndexlike a multiple choice, which makes it a quiz question: the room scores it and the reveal marks the right picture. mcStylealso takesstacked, one bar across the screen with a segment per option, anddots, one dot per answer. On the big screen the dot grid also shows the people who have not answered yet as pale dots.
v1
A radar on any scale from 5 to 10, and a bullet that says what its mark is.
radarMaxtakes a whole number from5to10, the top of the scale a radar is rated on, as in7for a Likert scale. Left out, it is5. The phone shows that many buttons per axis, the chart draws on that scale, androom_resultsmarkdown reads each axis as4.3 of 5or5.2 of 7.radarLowandradarHighput a word at each end of that scale, as inStrongly disagreeandStrongly agree, up to 30 characters each. The phone shows them under every axis and the chart shows them as its key. Both are optional.targetLabelon a 100 points poll names what the bullet look’s mark stands for, as inLast year's budget, up to 40 characters. It is drawn as the key under the chart. Left out, no key is drawn.
v1
Fewer result looks.
wcStyletakescloudorbubbles.wordleis retired, because it drew the same cloud ascloud. A poll sent withwordleis refused, and a room that ran with it shows the cloud.imgStyletakestilesorfill.mosaicandheroare retired. A poll sent with either is refused, and a room that ran with one shows the tiles.mapStyletakespinsorheat.barsis retired, because a ranked list of countries is what a multiple-choice poll already draws. A poll sent withbarsis refused, and a room that ran with it shows the flag pins.ofStyle(open feed) andqaStyle(Q&A) are gone. Each widget has one look now: Q&A is the question list, and an open feed shows its answers as the same list without counts. A poll that still sends either property is accepted and the property is dropped.
v1
Every session of a deck, with the names behind the answers.
deck_resultsreads every session a deck has run in one call, each with its results and markdown. Withanswers, every answer comes as a row with the name the person joined under, the answer, whether a quiz answer was right and how many seconds it took.start_roomtakesaskName: people type their own name to join instead of getting a nickname, and a name already in the room is refused.- A deck’s
sourceKindcan beslides, for a deck imported from a Google Slides link.
v1
A wheel holds a whole floor.
wheelNamestakes up to 1000 names, where it took 20. A wheel is a picture, not a list, so the limit that remains is what the dial can draw: up to 48 names, a full class, get a slice each, and a bigger crowd spins the same wheel of 48 slices without names, with the winner written on the slice it lands on and in the card beside it.room_actionwithspinanswers with thatwinneras before.
v1
Sessions, counted and named.
list_decksreturns each deck’ssessionCount, the sessions presented from it.list_roomswith thatdeckIdlists them.list_roomsreports a room the app no longer holds asended, whatever its row last said. Rooms only live in the app’s memory.- A room’s saved status no longer flips to
endedwhile it runs. Before, another process loading the app could close the row of every open room. - The markdown results name the session beside the deck, as in
# Weekly lesson · Class 3B, Tuesday, and count one poll and one minute in the singular.
v1
Finding your way in a deck, and changing one thing at a time.
get_outlinereads every step in a line, andget_stepreads one step whole.- Cards change and go with
update_overlayandremove_overlay. Text boxes, shapes and pictures come, change and go withadd_element,update_elementandremove_element. What an update leaves out stays. duplicate_stepcopies a step with fresh ids, andmove_stepmoves one and keeps its ids.list_fontsnames the font keys a text box and a card take, including the fonts a deck uploaded.get_screenshottakesscale,elementandannotate, and answers with every element’s rect, the pairs that overlap,warningsandcoversPageText.- Deck writes and
get_deckanswer withwarningsnext toreadyandproblems.get_outline,get_stepandget_screenshotname the warnings per step. titleFonton a card is retired and no longer offered. Old documents that carry it still open.start_roomstarts decks with PDF slides too. The server draws the pages first.- Hiding a card’s join link is a Pro setting. Without Pro the API answers
403, and a room shows the join code on every card. - Without Pro, a card whose join link is already stored off gets a warning on every deck read and write, since the room and the screenshot show the link anyway.
- A multiple-choice quiz with
quizViewset tostandingsis the standings board, the quiz’s scoreboard, and takes no votes of its own. It works on every plan. - A room nobody touches for a day closes itself, the same way
stopdoes. Its results stay readable. - One deck runs many sessions.
start_roomtakes alabelto name one, andlist_roomstakes adeckIdfor the sessions a deck has run and returns each session’sdeckId,labelandendedAt. - A session keeps its results. They are saved when a poll closes and when the room ends, and
room_resultsanswers from them once the app no longer holds the room, a restart included. update_overlaychanges only the style fields you send.room_actionspins the wheel withspinand answers with thewinner, shows or hides the join code in the corner of the audience screen withchip, and switches live reactions withreactions.- A multiple-choice poll with a
correctIndexruns as a quiz. Closing it reveals the answer on the big screen and on every phone and gives a point to each person whose one pick was the answer;room_resultsnames the answer incorrectOptionIdand the standings inleaderboard. - The markdown results mark a quiz’s answer and list its standings. An open feed reads as its answers, a word cloud or a live map as its counts.
/openapi.jsonshows a request and a response example beside every verb, taken from real calls.
v1
The API, the MCP server and these docs.
- The verbs under
/api/v1: decks, steps, cards, screenshots, the PDF behind a deck, rooms, actions and results. - The same verbs as MCP tools at
/api/mcp, stateless Streamable HTTP with a bearer key.get_screenshotreturns an image block the agent can see. - Deck writes and
get_deckanswer withrevision,readyandproblems. Writes acceptrevisionand answer409when the deck moved. - A card gets the house look and the bottom-right quarter when
styleandrectare left out. A card that runs off the slide is refused. - Rate-limit headers on every REST reply past the key and scope check,
Retry-Afteron 429, andIdempotency-Keyon POST and PUT. - Plain
fixsentences that name the field, instead of validator wording. - The free plan may create and change decks. Starting rooms over the API is Pro.
/openapi.json,/llms.txtand/llms-full.txt, generated from the same table as the API.