Booking request form: collect dates, confirm by reply

Updated 2026-10-30

It collects a name, contact details, what to book, a first and a backup date, a time and a group size. It takes requests, not bookings. You stay in charge of your calendar.

Make it with my AI

Paste this into your AI. It needs the creator MCP.

text
Create a form with AI Form API called "Request a booking".
Description: Tell us what you would like and when. This is a request, not a confirmed booking. We will reply to confirm.
Required: full_name (short_text), email (email), service_requested (short_text),
preferred_date (date), preferred_time (single_choice: Morning, Afternoon, Evening, Flexible).
Optional: phone (phone), alternative_date (date), party_size (number 1 to 50), notes (long_text).
Turn agent_fill on, then give me the public link.

Tips

Questions

Does this form check my calendar?

No. It collects requests. You reply to confirm.

Why ask for a backup date?

Many first choices are taken. A backup lets you say yes to one of two dates.

Can I use it for tables, rooms or appointments?

Yes. Change service_requested to a single_choice field with your own options.

Try the form

Live demo ยท nothing is saved

Request a booking

Tell us what you would like and when. This is a request, not a confirmed booking. We will reply to confirm.

Preferred time of day (required)

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": "Request a booking",
  "description": "Tell us what you would like and when. This is a request, not a confirmed booking. We will reply to confirm.",
  "fields": [
    {
      "id": "full_name",
      "label": "Your full name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "email",
      "label": "Email",
      "type": "email",
      "required": true
    },
    {
      "id": "phone",
      "label": "Phone",
      "type": "phone"
    },
    {
      "id": "service_requested",
      "label": "What would you like to book?",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "preferred_date",
      "label": "Preferred date",
      "type": "date",
      "required": true
    },
    {
      "id": "alternative_date",
      "label": "Backup date",
      "type": "date"
    },
    {
      "id": "preferred_time",
      "label": "Preferred time of day",
      "type": "single_choice",
      "required": true,
      "options": [
        "Morning",
        "Afternoon",
        "Evening",
        "Flexible"
      ]
    },
    {
      "id": "party_size",
      "label": "Number of people",
      "type": "number",
      "min": 1,
      "max": 50
    },
    {
      "id": "notes",
      "label": "Anything else we should know",
      "type": "long_text",
      "max_length": 1000
    }
  ]
}

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":"Request a booking","description":"Tell us what you would like and when. This is a request, not a confirmed booking. We will reply to confirm.","fields":[{"id":"full_name","label":"Your full name","type":"short_text","required":true,"max_length":120},{"id":"email","label":"Email","type":"email","required":true},{"id":"phone","label":"Phone","type":"phone"},{"id":"service_requested","label":"What would you like to book?","type":"short_text","required":true,"max_length":150},{"id":"preferred_date","label":"Preferred date","type":"date","required":true},{"id":"alternative_date","label":"Backup date","type":"date"},{"id":"preferred_time","label":"Preferred time of day","type":"single_choice","required":true,"options":["Morning","Afternoon","Evening","Flexible"]},{"id":"party_size","label":"Number of people","type":"number","min":1,"max":50},{"id":"notes","label":"Anything else we should know","type":"long_text","max_length":1000}]}'

JSON definition

json
{
  "title": "Request a booking",
  "description": "Tell us what you would like and when. This is a request, not a confirmed booking. We will reply to confirm.",
  "fields": [
    {
      "id": "full_name",
      "label": "Your full name",
      "type": "short_text",
      "required": true,
      "max_length": 120
    },
    {
      "id": "email",
      "label": "Email",
      "type": "email",
      "required": true
    },
    {
      "id": "phone",
      "label": "Phone",
      "type": "phone"
    },
    {
      "id": "service_requested",
      "label": "What would you like to book?",
      "type": "short_text",
      "required": true,
      "max_length": 150
    },
    {
      "id": "preferred_date",
      "label": "Preferred date",
      "type": "date",
      "required": true
    },
    {
      "id": "alternative_date",
      "label": "Backup date",
      "type": "date"
    },
    {
      "id": "preferred_time",
      "label": "Preferred time of day",
      "type": "single_choice",
      "required": true,
      "options": [
        "Morning",
        "Afternoon",
        "Evening",
        "Flexible"
      ]
    },
    {
      "id": "party_size",
      "label": "Number of people",
      "type": "number",
      "min": 1,
      "max": 50
    },
    {
      "id": "notes",
      "label": "Anything else we should know",
      "type": "long_text",
      "max_length": 1000
    }
  ]
}