# Forms by OpenApps > Free forms and surveys with unlimited responses. A free alternative to Typeform, Google Forms, Jotform, SurveyMonkey, Formspree and Microsoft Forms. No account for the person building the form or for the people filling it in. Eleven question types, questions that show only for some answers, live results with a chart per question, CSV export, a QR code, and an endpoint that works as any website's form backend. Web app: https://forms-free.openapps.xyz/ Plain markdown overview: https://forms-free.openapps.xyz/index.md OpenAPI: https://forms-free.openapps.xyz/openapi.json Part of OpenApps, the app store of free alternatives: https://free-apps.openapps.xyz/ ## API Base URL: https://functions.bounded.sh/apps/cf614aedcf4cdabfa9c45095/api No account and no API key. JSON in, JSON out. CORS is open. Creating a form returns an ownerKey. It is the only way to read responses and change the form, 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=`). Anyone with a form's id or link can see its questions and send a response. Nobody can list forms. ### Create a form POST /forms {"title": "Team offsite", "description": "Three questions.", "thankYou": "Thanks!", "questions": [ {"type": "yes_no", "label": "Are you coming?", "required": true}, {"type": "checkboxes", "label": "Which nights?", "options": ["Friday", "Saturday"], "required": true, "showIf": {"question": "Are you coming?", "is": "yes"}}, {"type": "scale", "label": "How likely are you to recommend the offsite?"}, {"type": "long_text", "label": "Anything else?", "help": "Optional"} ]} Question types: short_text, long_text, email, number, date, choice (pick one), checkboxes (pick any), dropdown (pick one), rating (1 to 5 stars), scale (0 to 10, the Net Promoter Score question), yes_no. choice and dropdown need at least two options; checkboxes needs at least one. Up to 100 questions, labels up to 300 characters, up to 50 options. showIf (optional) shows a question only when an earlier choice, checkboxes, dropdown or yes_no question has that answer (for checkboxes: includes it). question is that earlier question's label or id; is is one of its options, or "yes" or "no". A hidden question is skipped, even when it is required. Leave out questions to make a website endpoint that keeps whatever fields are posted. Returns: - formId - url: the public form. Send this to the people who should fill it in. - adminUrl and resultsUrl: open the owner pages on any device (they carry the owner key after #k=). Private. - ownerKey: for the owner routes below. Private. - endpoint: where responses are posted. - form: the form with its question ids. ### Read a form GET /forms/ Returns title, description, thankYou, closed, and questions with their ids, types, labels, options, required flags and showIf conditions, plus how to answer. ### Send a response POST /forms//responses {"answers": {"Are you coming?": "yes", "Which nights?": ["Saturday"], "How likely are you to recommend the offsite?": 9}} Keys are question labels (any case) or question ids. Values: - short_text, long_text, email, date ("2026-10-18"), choice, dropdown: a string. Options match in any case. - number, rating (1 to 5) and scale (0 to 10): a number. - checkboxes: a list of options, ["A", "B"]. - yes_no: "yes" or "no". Required questions that show must be answered. A wrong answer returns 400 with {"error", "errors": {"