Updated March 2026
A form API is a write endpoint. Any time a user sends structured data -- a vote, an answer, a reaction, an application, a complaint -- that's a form submission. Stop thinking of forms as contact pages. Start thinking of them as general-purpose data collection.
Voting boards. Create a form with feature title, description, and a hidden voter_id field. Each submission is a vote. Dashboard with a bar chart grouped by title shows what's most requested. Use uniqueBy to prevent double voting.
Quizzes with leaderboards. Form fields for each question (text for open-ended, select for multiple choice). Frontend or serverless function scores the answers against a key. Scores go to a separate leaderboard form. Public dashboard shows top scores.
Anonymous confession walls. One textarea field, no email or name required. Public dashboard with a data_table showing recent posts. Zero backend code.
RSVPs. Name, email, guest count, meal preference. uniqueBy on email prevents duplicates. Dashboard shows total guests, pie chart of meal choices, attendee table.
Homework submissions. Student name, assignment ID, file upload field. Teachers access via API or private dashboard. File uploads support PDFs, images, documents up to 50MB.
Changelog reactions. Hidden post_id field plus a select for emoji reactions. Dashboard grouped by emoji shows distribution per post.
Community polls. Select field for the vote, optional comment textarea. Public dashboard for live results.
The pattern is always the same: define fields, collect submissions, visualize with dashboards, notify with webhooks. The blueprints at /blueprints/ demonstrate each of these with complete code.
{
"name": "Feature Vote",
"fields": [
{
"name": "feature_id",
"label": "Feature ID",
"type": "hidden"
},
{
"name": "feature_title",
"label": "Feature",
"type": "text",
"required": true
},
{
"name": "priority",
"label": "Priority",
"type": "select",
"options": ["Nice to have", "Important", "Critical"],
"required": true
},
{
"name": "voter_email",
"label": "Your Email",
"type": "email",
"required": true
},
{
"name": "comment",
"label": "Why do you need this?",
"type": "textarea"
}
],
"uniqueBy": "voter_email"
}