Contest entry form: one list for the whole draw

Updated 2026-10-30

Entries land in comments, direct messages and your inbox. On draw day I am copying names out of every one of them. A single link fixes that. Everyone enters the same way, and you read all entries as one list.

Use this when

You run a giveaway, a caption or photo contest, or a prize draw for your show, channel or event. Entrants can paste a link to their entry.

Skip it when

You need file uploads, ticket sales or a prize payout. This form does none of those. Contest rules also differ from place to place. This is a form, not legal advice. Ask a lawyer to check your official rules.

What it asks and why

  • Name, email, country: you contact the winner and check who may enter.
  • Age box and rules box: entrants confirm both before they send.
  • Entry and link: the entry in words, plus a public link if it lives elsewhere.
  • Social handle: for your winner post.
  • Where they heard of it: shows which channel brought entrants.

What an entrant's AI would ask

"Which country do you live in?" Then "What is your entry?" Then "Do you accept the official rules?" It shows every answer and sends only after a yes. See agent-fillable forms.

One tip

Set close_at to the end of your contest, then draw from the CSV. More ideas: forms for creators and podcasters and forms for events. A giveaway entry form suits a simple prize draw. A sponsorship request form helps when a brand backs the prize.

Questions

Does the form stop one person entering twice?

No. It does not block repeat entries on its own. Download the CSV, sort by the email column and remove duplicates before the draw, if your rules allow one entry each.

How do I pick a winner from the entries?

Download the responses as CSV. Every entry is one row, so you can number the rows and pick with any method your rules allow.

Can I close the contest on a set date?

Yes. Set close_at to the closing time in the form settings. After that the link takes no new entries. You can also set max_responses to cap the total.

Try the form

Live demo ยท nothing is saved

Enter the contest

Send your entry before the closing date. If you win, we contact you by email.

We use this to reach the winner.

Some contests are open to certain countries only.

I am old enough to enter under the official rules (required)

Answer the contest question or describe your entry in your own words.

Share a public link. File uploads are not supported.

Where did you hear about this contest?
I have read and accept the official rules (required)
You may announce my first name and country if I win

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Enter the contest",
  "description": "Send your entry before the closing date. If you win, we contact you by email.",
  "fields": [
    {
      "id": "entrant_name",
      "label": "Your full name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "entrant_email",
      "label": "Email address",
      "type": "email",
      "required": true,
      "help": "We use this to reach the winner."
    },
    {
      "id": "country_of_residence",
      "label": "Country where you live",
      "type": "short_text",
      "required": true,
      "help": "Some contests are open to certain countries only.",
      "max_length": 100
    },
    {
      "id": "old_enough_to_enter",
      "label": "I am old enough to enter under the official rules",
      "type": "checkbox",
      "required": true
    },
    {
      "id": "entry_text",
      "label": "Your entry",
      "type": "long_text",
      "required": true,
      "help": "Answer the contest question or describe your entry in your own words.",
      "max_length": 1500
    },
    {
      "id": "entry_link",
      "label": "Link to your entry, if it lives online",
      "type": "url",
      "help": "Share a public link. File uploads are not supported."
    },
    {
      "id": "social_handle",
      "label": "Social handle for the winner announcement",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "heard_from",
      "label": "Where did you hear about this contest?",
      "type": "multi_choice",
      "options": [
        "Instagram",
        "TikTok",
        "YouTube",
        "Newsletter",
        "Podcast",
        "A friend",
        "Search",
        "Somewhere else"
      ]
    },
    {
      "id": "rules_accepted",
      "label": "I have read and accept the official rules",
      "type": "checkbox",
      "required": true
    },
    {
      "id": "name_may_be_shown",
      "label": "You may announce my first name and country if I win",
      "type": "checkbox"
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Enter the contest","description":"Send your entry before the closing date. If you win, we contact you by email.","fields":[{"id":"entrant_name","label":"Your full name","type":"short_text","required":true,"max_length":150},{"id":"entrant_email","label":"Email address","type":"email","required":true,"help":"We use this to reach the winner."},{"id":"country_of_residence","label":"Country where you live","type":"short_text","required":true,"help":"Some contests are open to certain countries only.","max_length":100},{"id":"old_enough_to_enter","label":"I am old enough to enter under the official rules","type":"checkbox","required":true},{"id":"entry_text","label":"Your entry","type":"long_text","required":true,"help":"Answer the contest question or describe your entry in your own words.","max_length":1500},{"id":"entry_link","label":"Link to your entry, if it lives online","type":"url","help":"Share a public link. File uploads are not supported."},{"id":"social_handle","label":"Social handle for the winner announcement","type":"short_text","max_length":100},{"id":"heard_from","label":"Where did you hear about this contest?","type":"multi_choice","options":["Instagram","TikTok","YouTube","Newsletter","Podcast","A friend","Search","Somewhere else"]},{"id":"rules_accepted","label":"I have read and accept the official rules","type":"checkbox","required":true},{"id":"name_may_be_shown","label":"You may announce my first name and country if I win","type":"checkbox"}]}'

JSON definition

json
{
  "title": "Enter the contest",
  "description": "Send your entry before the closing date. If you win, we contact you by email.",
  "fields": [
    {
      "id": "entrant_name",
      "label": "Your full name",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "entrant_email",
      "label": "Email address",
      "type": "email",
      "required": true,
      "help": "We use this to reach the winner."
    },
    {
      "id": "country_of_residence",
      "label": "Country where you live",
      "type": "short_text",
      "required": true,
      "help": "Some contests are open to certain countries only.",
      "max_length": 100
    },
    {
      "id": "old_enough_to_enter",
      "label": "I am old enough to enter under the official rules",
      "type": "checkbox",
      "required": true
    },
    {
      "id": "entry_text",
      "label": "Your entry",
      "type": "long_text",
      "required": true,
      "help": "Answer the contest question or describe your entry in your own words.",
      "max_length": 1500
    },
    {
      "id": "entry_link",
      "label": "Link to your entry, if it lives online",
      "type": "url",
      "help": "Share a public link. File uploads are not supported."
    },
    {
      "id": "social_handle",
      "label": "Social handle for the winner announcement",
      "type": "short_text",
      "max_length": 100
    },
    {
      "id": "heard_from",
      "label": "Where did you hear about this contest?",
      "type": "multi_choice",
      "options": [
        "Instagram",
        "TikTok",
        "YouTube",
        "Newsletter",
        "Podcast",
        "A friend",
        "Search",
        "Somewhere else"
      ]
    },
    {
      "id": "rules_accepted",
      "label": "I have read and accept the official rules",
      "type": "checkbox",
      "required": true
    },
    {
      "id": "name_may_be_shown",
      "label": "You may announce my first name and country if I win",
      "type": "checkbox"
    }
  ]
}