items, in display order, and type says which drawing to use. Ignore a type you don’t know: new types are added within v1. Widgets carry no images yet; they arrive in a later version.
Every widget
By type
Poll
question and one choice per entry in options, each with a label. The fan picks one, and your app sends its id to POST /polls/{poll_id}/votes as option_id. Results: each option’s votes and percent.
Picker
A run of head-to-head rounds between the people inoptions (label, plus first_name and last_name where given), each round lasting timer_seconds, which your app enforces. The fan’s last pick is their vote. Results: each option’s votes and percent.
Rating
question, then every player in options with a score from 1 to max_rating. A fan needn’t rate every player. Results, per player: average_vote, rating_count, and distribution, the fans who gave each score.
Predictor
subtitle, the two teams (team1.name, team2.name) and a score for each, from 0 to max_score. Votes stop at locks_at, usually kick-off, when it turns locked. Results: predictions, every predicted score line with its votes, most popular first. Once it’s settled, each team carries its final score.
Line-up
question, the formations a fan may use (one means it’s fixed), and the players in teams[].players, each with a label and position_group, and a shirt_number where given. The fan picks a formation and a player for each position. Results: positions, the top three players for each, with votes and percent, and formation_votes when fans choose the formation.
Fan Zone
type is messaging. Show prompt, an input with placeholder, and the kinds of message in kinds: text, and voice notes and image photos for signed-in fans only, within limits. After a message is sent, show confirmation_message. Fans never see each other’s messages, and there are no results: your team reviews messages, and only approved ones reach air, with the fan’s consent.
Sponsor
Show each ofslides in turn, for display_duration_ms each. A slide’s url is where it links to. No votes, no results.
States
Lists return live widgets unless you ask for other statuses, such as
?status=live,scheduled.
Results
Your servers’ reads always include results. To keep them current, see Live updates.

