Skip to main content
This page is generated from the API’s own reference at /llms-full.txt by scripts/developers-sync.mjs. Edit the spec, not this page.

The deck document

A deck is a JSON array of steps, at most 200. Steps count from 0, and a person reading the editor’s filmstrip counts from 1, so their “slide 6” is step 5. There is no mandatory opener: a deck made before 1 Oct 2026 may carry a join step, and the editor turns one into an ordinary slide with the join WIDGET on it the moment the deck is opened or presented. A slide step is a page (or a blank) with things floating on it: up to 4 polls, 8 text boxes, 8 shapes and 4 images. A poll step is one poll filling the screen. Positions are fractions of the slide, 0 to 1. A bare array is document version 1.

Step: join

Step: slide

Step: poll

Overlay (a poll floating on a slide)

Any widget can float on a slide. Put the card over a screenshot, a picture or empty space, never over the slide’s own text; when the corner you had in mind holds text, take the one with the picture, and when the whole slide is text, use a full-screen poll step instead. A card lower than 45% of the slide has no room for its answers, and some looks need more (a map 35% wide and 55% high, a bullet or an NPS score 55% high, a sunburst 45% wide, a swarm 50% wide); the warning names the look’s own minimum. The card must stay on the slide, x + w and y + h at most 1, and the API refuses one that does not. Leave rect and style out for the house card in the bottom-right quarter. The card’s variant is read by multiple choice; the other widgets draw their own look. Check a placement three ways. get_screenshot shows the card on the real page; with annotate it draws every element’s box and name on the picture, the clashing ones in red, and it names the PDF page’s own words a card or text box hides (coversPageText). get_step and get_screenshot return every element’s rect and the pairs that overlap. And every read and write answers with warnings: a card under its look’s minimum size (30% of the slide’s width and 45% of its height for most, more for a few), or a card or text box over another card or text box. Warnings do not stop a room; fix them anyway. The picture has the last word on size, because how small a card can go depends on its look: get_screenshot also returns measured and warns when a card’s or text box’s content is cut off by its box, or a card’s biggest answer text is drawn under 13 pixels high on the 1600-pixel slide.

Overlay card style

Text box

The box clips what does not fit its rect, on the slide and in a screenshot alike: size the box for the text at that size (a fraction of the slide’s width per line of text), or shorten the text. font is a key from the library: sans (Inter), display (Archivo), mono (JetBrains Mono), Poppins, Montserrat, DM Sans, Work Sans, Playfair Display, Lora, Merriweather, Bebas Neue, Oswald, Anton, JetBrains Mono, IBM Plex Mono, Caveat, Pacifico; or the family name of a font the deck uploaded. A card’s textFont takes the same keys.

Shape

Image

Rect

Widgets

Every poll has a type, a prompt and, where it takes answers, options. The tables list only the properties that type reads; anything else is dropped on save. A look is chosen per widget; the first is the default. To present lists what the readiness check asks for before a room can start; a deck can be saved without it. The API runs the check for you: reading a deck answers with ready and problems, and so does every write, each problem naming the step, the card and the property.

Multiple choice (multiple-choice)

One question, up to ten answers; one pick each, or several with multiSelect. A quiz is this with a correctIndex. Looks (mcStyle): bars (default), slim, columns, donut, pie, stacked, dots, lollipops, bubbles, spokes, butterfly, heat, arc, chord, tiles. arc needs multiSelect true. chord needs multiSelect true. Can: takes up to 10 options; its full-screen result has its own colour model (accent, colorMode, optionColors); options are coloured by identity, so a palette and a colour per option mean something; its full-screen result can print percentages (showPercent) and counts (showCount); as an overlay, the card can print percentages and counts (the card style’s showPercent, showCount). To present: Ask a question; At least two options.

Image choice (image-choice)

Retired 28 Sept 2026: a choice poll with pictures on its options and the tiles look. Still read, no longer offered. Looks (imgStyle): tiles (default). Can: takes up to 10 options; its full-screen result has its own colour model (accent, colorMode, optionColors); its full-screen result can print percentages (showPercent) and counts (showCount); as an overlay, the card can print percentages and counts (the card style’s showPercent, showCount). To present: Ask a question; At least two options.

This or that (this-or-that)

Two sides, one tap. A quiz is this with a correctIndex of 0 or 1. Looks (totStyle): split (default), tug, camps. Can: takes up to 2 options; its full-screen result has its own colour model (accent, colorMode, optionColors); options are coloured by identity, so a palette and a colour per option mean something; its full-screen result can print percentages (showPercent) and counts (showCount). To present: Ask a question; At least two options.

Ranking (ranking)

People put the options in order; the result is the room’s order. A quiz is this with orderIsAnswer, where the options as listed are the right order. Looks (rankStyle): list (default), podium, avg. Can: takes up to 10 options; its full-screen result has its own colour model (accent, colorMode, optionColors); options are coloured by identity, so a palette and a colour per option mean something; its full-screen result can print percentages (showPercent) and counts (showCount). To present: Ask a question; At least two options.

100 points (hundred-points)

Everyone spends 100 points across the options. Looks (hpStyle): bars (default), treemap, waffle, columns, sunburst, icicle, bullet. sunburst, icicle use groups, one entry per option. bullet use targets, one entry per option. Can: takes up to 10 options; its full-screen result has its own colour model (accent, colorMode, optionColors); options are coloured by identity, so a palette and a colour per option mean something; its full-screen result can print percentages (showPercent) and counts (showCount). To present: Ask a question; At least two options.

Star rating (rating)

One to five stars. Looks (scaleStyle): stars (default), faces, breakdown, gauge, curve, bloom. Can: its full-screen result has its own colour model (accent, colorMode, optionColors); its full-screen result can print counts (showCount); as an overlay, the card can print counts (the card style’s showPercent, showCount). To present: Ask a question.

NPS 0–10 (nps)

How likely to recommend, 0 to 10, scored the NPS way. Looks (npsStyle): score (default), needle, diverging, swarm. Can: its full-screen result has its own colour model (accent, colorMode, optionColors). To present: Ask a question.

Estimate (estimate)

Everyone guesses a number inside a range; the real answer is revealed when the poll closes. Looks (estStyle): hist (default), curve, dots, range. Can: its full-screen result has its own colour model (accent, colorMode, optionColors). To present: Ask a question; Set the guess range.

Radar (radar)

Three to eight axes rated on one scale of 1 to 5 up to 1 to 10, with optional words at the ends, drawn as a radar. Can: its full-screen result has its own colour model (accent, colorMode, optionColors). To present: Ask a question; At least three axes.

Word cloud (word-cloud)

A word or a few per person, sized by how often they come up. Looks (wcStyle): cloud (default), bubbles. Can: its full-screen result has its own colour model (accent, colorMode, optionColors); its full-screen result can print counts (showCount); as an overlay, the card can print counts (the card style’s showPercent, showCount). To present: Ask a question.

Open feed (open-feed)

Free text from the room, shown as it arrives. Can: its full-screen result has its own colour model (accent, colorMode, optionColors). To present: Ask a question.

Q&A (qa-upvotes)

Questions from the room, upvoted to the top. To present: Ask a question.

Timer (timer)

A shared countdown on the big screen. Takes no answers. To present: Ask a question.

Spin the wheel (wheel)

Spins between everyone in the room, or a custom list, and picks one. Can: options are coloured by identity, so a palette and a colour per option mean something. To present: Ask a question; Add at least two names for the wheel.

Live map (map)

Where people are joining from, on a fixed list of countries. Looks (mapStyle): pins (default), heat. Can: its full-screen result has its own colour model (accent, colorMode, optionColors). To present: Ask a question.

Place map (place-map)

A real map of one place; everyone drops a pin on it. To present: Ask a question; Pick a place.

Join (join)

The room’s code, its QR and the link, so people can join from any slide. Takes no answers. Can: its full-screen result has its own colour model (accent, colorMode, optionColors). To present: Ask a question.

Limits

  • 200 steps per deck; one PDF behind them, up to 60 pages.
  • Per slide: 4 polls, 8 text boxes, 8 shapes, 4 images.
  • Images travel as data URLs: up to 12 MB for an image on a slide, 500 KB per option image.