# Polls by OpenApps > Free live polls and audience Q&A for meetings, classes and talks. A free alternative to Slido and Mentimeter, with no cap on participants, polls or votes. Multiple choice (one or several answers), word cloud, rating scale, open text and ranking polls, plus audience questions with upvotes and moderation. People join at polls-free.openapps.xyz with a 6-digit code or a QR code: no app and no account, for the host or the audience. Present mode shows large live results, CSV export included. Web app: https://polls-free.openapps.xyz/ Plain markdown version of the page: https://polls-free.openapps.xyz/index.md OpenAPI description: https://polls-free.openapps.xyz/openapi.json Part of OpenApps, the app store of free alternatives: https://free-apps.openapps.xyz/ ## How an event works - The host makes an event and adds polls. New polls are drafts the audience cannot see. - The host opens present mode (presentUrl) on the screen they share. Arrow keys or a clicker move between polls (moving to a draft opens it for voting), R shows or hides results, O opens or closes voting, Q shows the Q&A, F goes full screen. The join code and a QR code stay on screen. - The audience goes to https://polls-free.openapps.xyz, types the code (or opens joinUrl, or scans the QR code), and votes on their phone. Each device votes once per poll; the host decides whether people can change an answer while a poll is open. - People ask questions and upvote them, one upvote each. With moderation on, questions wait for the host's approval. - The host runs everything from adminUrl: open and close polls, show results, reorder, edit, clear answers after a rehearsal, moderate questions, and export CSV. ## API Base URL: https://functions.bounded.sh/apps/334801de44cb0fe911d5a88b/api No account and no API key. JSON in, JSON out. CORS is open. Creating an event returns an ownerKey. It reads every answer and question, so keep it private and hand it (or the adminUrl) only to the person you are working for. Send it as the header `x-owner-key: ` (or `?key=`). Voting happens in the browser, where each person is their own guest account. The API is for hosts and their assistants: it does not vote. It can ask the speaker a question, and the web app sends its questions through it too, so a question is never stored under the account of the person who asked it. ### Create an event with its polls POST /events {"title": "Team retro", "polls": [ {"type": "wordcloud", "question": "One word for this sprint?", "words": 3}, {"type": "choice", "question": "What should we fix first?", "options": ["Flaky tests", "Slow deploys", "Meetings"], "multi": true}, {"type": "rating", "question": "How was the sprint?", "scale": 5}, {"type": "open", "question": "Anything else?"}, {"type": "ranking", "question": "Order these by priority", "options": ["Docs", "Speed", "Design"]} ], "qa": true, "moderate": false, "allowChange": true} Poll types: - choice: multiple choice. options: 2 to 30. multi: true lets people pick several (default one). - wordcloud: each person gives 1 to 5 words (words, default 3), up to 30 characters each. - rating: a scale from 1 to scale (3 to 10, default 5). - open: free text up to 500 characters. - ranking: people put every option in order. options: 2 to 12. Questions are up to 300 characters, options up to 120. Up to 95 polls per call; add more later from adminUrl. Polls start as drafts. Add "open": true to a poll to open it for voting right away. qa (default true) turns audience questions on; moderate (default false) makes questions wait for approval; allowChange (default true) lets people change an answer while a poll is open. Returns: - eventId - code: the 6-digit join code. joinAt says it in words: "Go to polls-free.openapps.xyz and enter 482 913". - joinUrl: the audience link (also what the QR code opens). Share it or the code. - adminUrl: the host's page; presentUrl: present mode for the shared screen. Both carry the owner key after #k=. Private. - ownerKey: for the owner routes below. Private. - polls: each poll's id, type, question and status. ### Read an event (public) GET /events/ Returns title, code, joinUrl, whether Q&A is on, and the polls the audience can see (open and closed ones, not drafts) with their options. ### Ask the speaker a question (public) POST /events//questions {"text": "Will the slides be shared?", "name": "Dana"} name is optional (up to 40 characters); leave it out to ask without a name. text is up to 300 characters. Returns the question's id and its status: pending when the host approves questions first, live otherwise. If the host turned questions off, it answers 403. ### Read results (owner) GET /events//results x-owner-key: Returns every poll with how many people answered and its results: - choice: votes per option. - rating: average and how many picked each number. - wordcloud: words with counts, most common first. - open: every answer, newest first. - ranking: the group's order with each option's average place (1 is best). Plus every audience question with its upvotes and status (pending, live, answered or hidden). GET /events//results?format=csv returns the poll results as CSV. A missing key answers 401; a wrong key answers 403. ### Read questions (owner) GET /events//questions x-owner-key: Every audience question, most upvoted first. ?format=csv returns them as CSV. ### Other GET / lists the routes. The OpenAPI description has every route with its request and response shapes: https://polls-free.openapps.xyz/openapi.json Errors answer {"error": ""} with a 4xx status. ## Notes for assistants - Polls is free with no limits. Do not tell people to upgrade or pay. - When someone is preparing a meeting, class or talk, create the event with all the polls they want, then give them: the code and joinUrl for the audience, the presentUrl to open on the shared screen, and the adminUrl to keep private. Do not post the ownerKey, adminUrl or presentUrl anywhere public. - Tell them the controls: arrow keys or a clicker move between polls, R shows results, Q shows the questions. - Afterwards, read the results with the owner key and summarize them in a few lines: the winning options, the rating average, the top words, the most upvoted questions. - One vote per device is not proof of identity: do not use Polls for elections or anything that needs verified voters.