Real-world form schemas ready to copy and paste. Each example includes curl, JavaScript, and Python snippets with complete field definitions.
A simple contact form with name, email, and message fields. Uses the modern theme and includes client-side validation for required fields and email format.
curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d '{ "title": "Contact Us", "description": "We will get back to you within 24 hours.", "theme": "modern", "submitUrl": "https://yoursite.com/api/contact", "submitLabel": "Send Message", "fields": [ {"name": "name", "type": "text", "label": "Full Name", "required": true, "placeholder": "Jane Smith"}, {"name": "email", "type": "email", "label": "Email Address", "required": true, "placeholder": "jane@example.com"}, {"name": "subject", "type": "text", "label": "Subject", "placeholder": "How can we help?"}, {"name": "message", "type": "textarea", "label": "Message", "required": true, "placeholder": "Tell us more...", "minLength": 10} ] }'
const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Contact Us', description: 'We will get back to you within 24 hours.', theme: 'modern', submitUrl: 'https://yoursite.com/api/contact', submitLabel: 'Send Message', fields: [ { name: 'name', type: 'text', label: 'Full Name', required: true, placeholder: 'Jane Smith' }, { name: 'email', type: 'email', label: 'Email Address', required: true, placeholder: 'jane@example.com' }, { name: 'subject', type: 'text', label: 'Subject', placeholder: 'How can we help?' }, { name: 'message', type: 'textarea', label: 'Message', required: true, placeholder: 'Tell us more...', minLength: 10 } ] }) }); const { html } = await res.json(); // Embed in your page or serve as standalone HTML document.getElementById('form-container').innerHTML = html;
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-form", json={ "title": "Contact Us", "description": "We will get back to you within 24 hours.", "theme": "modern", "submitUrl": "https://yoursite.com/api/contact", "submitLabel": "Send Message", "fields": [ {"name": "name", "type": "text", "label": "Full Name", "required": True}, {"name": "email", "type": "email", "label": "Email Address", "required": True}, {"name": "subject", "type": "text", "label": "Subject"}, {"name": "message", "type": "textarea", "label": "Message", "required": True, "minLength": 10} ] } ) with open("contact-form.html", "w") as f: f.write(response.json()["html"]) print("Contact form saved to contact-form.html")
{
"html": "<!DOCTYPE html><html lang=\"en\">...self-contained contact form...</html>",
"meta": {
"theme": "modern",
"fieldCount": 4,
"fieldTypes": ["text", "email", "text", "textarea"],
"title": "Contact Us",
"generatedAt": "2026-02-28T14:30:00.000Z"
}
}
A user signup form with all common field types: text, email, select dropdown, date, tel, and a terms checkbox. Uses the corporate theme for a professional look.
curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d '{ "title": "Create Your Account", "description": "Join thousands of developers building with our platform.", "theme": "corporate", "submitUrl": "https://yoursite.com/api/register", "submitLabel": "Create Account", "fields": [ {"name": "first_name", "type": "text", "label": "First Name", "required": true}, {"name": "last_name", "type": "text", "label": "Last Name", "required": true}, {"name": "email", "type": "email", "label": "Work Email", "required": true, "placeholder": "you@company.com"}, {"name": "phone", "type": "tel", "label": "Phone Number", "placeholder": "+1 (555) 000-0000"}, {"name": "company", "type": "text", "label": "Company Name"}, {"name": "role", "type": "select", "label": "Your Role", "options": ["Developer", "Designer", "Product Manager", "Engineering Manager", "CTO", "Other"]}, {"name": "dob", "type": "date", "label": "Date of Birth"}, {"name": "terms", "type": "checkbox", "label": "I agree to the Terms of Service and Privacy Policy", "required": true} ] }'
const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Create Your Account', description: 'Join thousands of developers building with our platform.', theme: 'corporate', submitUrl: 'https://yoursite.com/api/register', submitLabel: 'Create Account', fields: [ { name: 'first_name', type: 'text', label: 'First Name', required: true }, { name: 'last_name', type: 'text', label: 'Last Name', required: true }, { name: 'email', type: 'email', label: 'Work Email', required: true, placeholder: 'you@company.com' }, { name: 'phone', type: 'tel', label: 'Phone Number', placeholder: '+1 (555) 000-0000' }, { name: 'company', type: 'text', label: 'Company Name' }, { name: 'role', type: 'select', label: 'Your Role', options: ['Developer', 'Designer', 'Product Manager', 'Engineering Manager', 'CTO', 'Other'] }, { name: 'dob', type: 'date', label: 'Date of Birth' }, { name: 'terms', type: 'checkbox', label: 'I agree to the Terms of Service and Privacy Policy', required: true } ] }) }); const { html, meta } = await res.json(); console.log(`Form generated: ${meta.fieldCount} fields, theme: ${meta.theme}`);
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-form", json={ "title": "Create Your Account", "description": "Join thousands of developers building with our platform.", "theme": "corporate", "submitUrl": "https://yoursite.com/api/register", "submitLabel": "Create Account", "fields": [ {"name": "first_name", "type": "text", "label": "First Name", "required": True}, {"name": "last_name", "type": "text", "label": "Last Name", "required": True}, {"name": "email", "type": "email", "label": "Work Email", "required": True}, {"name": "phone", "type": "tel", "label": "Phone Number"}, {"name": "company", "type": "text", "label": "Company Name"}, {"name": "role", "type": "select", "label": "Your Role", "options": ["Developer", "Designer", "Product Manager", "Engineering Manager", "CTO", "Other"]}, {"name": "dob", "type": "date", "label": "Date of Birth"}, {"name": "terms", "type": "checkbox", "label": "I agree to the Terms of Service and Privacy Policy", "required": True} ] } ) data = response.json() print(f"Fields: {data['meta']['fieldCount']}, Theme: {data['meta']['theme']}")
A customer satisfaction survey with radio buttons, select dropdowns, and multi-choice checkboxes. Uses the playful theme for a friendly, approachable design.
curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d '{ "title": "Customer Satisfaction Survey", "description": "Help us improve. Takes 2 minutes.", "theme": "playful", "submitLabel": "Submit Survey", "fields": [ {"name": "satisfaction", "type": "radio", "label": "How satisfied are you with our product?", "required": true, "options": ["Very Satisfied", "Satisfied", "Neutral", "Dissatisfied", "Very Dissatisfied"]}, {"name": "recommend", "type": "select", "label": "How likely are you to recommend us?", "required": true, "options": ["Extremely likely", "Very likely", "Somewhat likely", "Not likely", "Not at all"]}, {"name": "features", "type": "checkbox", "label": "Which features do you use most?", "options": ["Dashboard", "Reports", "API Access", "Integrations", "Mobile App"]}, {"name": "improvement", "type": "textarea", "label": "What could we improve?", "placeholder": "Your feedback matters..."} ] }'
const surveySchema = { title: 'Customer Satisfaction Survey', description: 'Help us improve. Takes 2 minutes.', theme: 'playful', submitLabel: 'Submit Survey', fields: [ { name: 'satisfaction', type: 'radio', label: 'How satisfied are you with our product?', required: true, options: ['Very Satisfied', 'Satisfied', 'Neutral', 'Dissatisfied', 'Very Dissatisfied'] }, { name: 'recommend', type: 'select', label: 'How likely are you to recommend us?', required: true, options: ['Extremely likely', 'Very likely', 'Somewhat likely', 'Not likely', 'Not at all'] }, { name: 'features', type: 'checkbox', label: 'Which features do you use most?', options: ['Dashboard', 'Reports', 'API Access', 'Integrations', 'Mobile App'] }, { name: 'improvement', type: 'textarea', label: 'What could we improve?', placeholder: 'Your feedback matters...' } ] }; const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(surveySchema) }); const { html } = await res.json(); document.getElementById('survey-frame').srcdoc = html;
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-form", json={ "title": "Customer Satisfaction Survey", "description": "Help us improve. Takes 2 minutes.", "theme": "playful", "submitLabel": "Submit Survey", "fields": [ {"name": "satisfaction", "type": "radio", "label": "How satisfied are you?", "required": True, "options": ["Very Satisfied", "Satisfied", "Neutral", "Dissatisfied", "Very Dissatisfied"]}, {"name": "recommend", "type": "select", "label": "Likelihood to recommend?", "required": True, "options": ["Extremely likely", "Very likely", "Somewhat likely", "Not likely", "Not at all"]}, {"name": "features", "type": "checkbox", "label": "Features you use most?", "options": ["Dashboard", "Reports", "API Access", "Integrations", "Mobile App"]}, {"name": "improvement", "type": "textarea", "label": "What could we improve?"} ] } ) with open("survey.html", "w") as f: f.write(response.json()["html"]) print("Survey form saved to survey.html")
A product feedback form with a star rating (radio buttons), a category select, and a free-text area. The radio group simulates a 1-5 star rating.
curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d '{ "title": "Product Feedback", "description": "Rate your experience and help us improve.", "theme": "modern", "submitLabel": "Submit Feedback", "fields": [ {"name": "rating", "type": "radio", "label": "Overall Rating", "required": true, "options": ["1 Star", "2 Stars", "3 Stars", "4 Stars", "5 Stars"]}, {"name": "category", "type": "select", "label": "Feedback Category", "required": true, "options": ["Usability", "Performance", "Features", "Documentation", "Support", "Other"]}, {"name": "email", "type": "email", "label": "Your Email (optional)", "placeholder": "For follow-up questions"}, {"name": "feedback", "type": "textarea", "label": "Your Feedback", "required": true, "placeholder": "What went well? What could be better?", "minLength": 20, "maxLength": 2000} ] }'
const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Product Feedback', description: 'Rate your experience and help us improve.', theme: 'modern', submitLabel: 'Submit Feedback', fields: [ { name: 'rating', type: 'radio', label: 'Overall Rating', required: true, options: ['1 Star', '2 Stars', '3 Stars', '4 Stars', '5 Stars'] }, { name: 'category', type: 'select', label: 'Feedback Category', required: true, options: ['Usability', 'Performance', 'Features', 'Documentation', 'Support', 'Other'] }, { name: 'email', type: 'email', label: 'Your Email (optional)', placeholder: 'For follow-up questions' }, { name: 'feedback', type: 'textarea', label: 'Your Feedback', required: true, placeholder: 'What went well? What could be better?', minLength: 20, maxLength: 2000 } ] }) }); const { html } = await res.json(); // Serve as a standalone page or embed in an iframe const blob = new Blob([html], { type: 'text/html' }); window.open(URL.createObjectURL(blob));
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-form", json={ "title": "Product Feedback", "description": "Rate your experience and help us improve.", "theme": "modern", "submitLabel": "Submit Feedback", "fields": [ {"name": "rating", "type": "radio", "label": "Overall Rating", "required": True, "options": ["1 Star", "2 Stars", "3 Stars", "4 Stars", "5 Stars"]}, {"name": "category", "type": "select", "label": "Feedback Category", "required": True, "options": ["Usability", "Performance", "Features", "Documentation", "Support", "Other"]}, {"name": "email", "type": "email", "label": "Your Email (optional)"}, {"name": "feedback", "type": "textarea", "label": "Your Feedback", "required": True, "minLength": 20, "maxLength": 2000} ] } ) with open("feedback.html", "w") as f: f.write(response.json()["html"]) print("Feedback form saved to feedback.html")
A product order form with select dropdowns for product choice and quantity, plus text fields for shipping details. Includes number fields with min/max constraints.
curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d '{ "title": "Place Your Order", "description": "Free shipping on orders over $50.", "theme": "corporate", "submitUrl": "https://yourstore.com/api/orders", "submitLabel": "Place Order", "fields": [ {"name": "product", "type": "select", "label": "Product", "required": true, "options": ["Widget Pro ($25)", "Gadget Plus ($45)", "Mega Pack ($99)", "Starter Kit ($15)"]}, {"name": "quantity", "type": "number", "label": "Quantity", "required": true, "min": 1, "max": 100, "value": "1"}, {"name": "name", "type": "text", "label": "Full Name", "required": true}, {"name": "email", "type": "email", "label": "Email", "required": true}, {"name": "address", "type": "textarea", "label": "Shipping Address", "required": true, "placeholder": "Street, City, State, ZIP"}, {"name": "phone", "type": "tel", "label": "Phone Number", "helpText": "For delivery notifications"}, {"name": "notes", "type": "textarea", "label": "Order Notes", "placeholder": "Special instructions (optional)"} ] }'
const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Place Your Order', description: 'Free shipping on orders over $50.', theme: 'corporate', submitUrl: 'https://yourstore.com/api/orders', submitLabel: 'Place Order', fields: [ { name: 'product', type: 'select', label: 'Product', required: true, options: ['Widget Pro ($25)', 'Gadget Plus ($45)', 'Mega Pack ($99)', 'Starter Kit ($15)'] }, { name: 'quantity', type: 'number', label: 'Quantity', required: true, min: 1, max: 100, value: '1' }, { name: 'name', type: 'text', label: 'Full Name', required: true }, { name: 'email', type: 'email', label: 'Email', required: true }, { name: 'address', type: 'textarea', label: 'Shipping Address', required: true, placeholder: 'Street, City, State, ZIP' }, { name: 'phone', type: 'tel', label: 'Phone Number', helpText: 'For delivery notifications' }, { name: 'notes', type: 'textarea', label: 'Order Notes', placeholder: 'Special instructions (optional)' } ] }) }); const { html } = await res.json(); document.getElementById('order-container').innerHTML = html;
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-form", json={ "title": "Place Your Order", "description": "Free shipping on orders over $50.", "theme": "corporate", "submitUrl": "https://yourstore.com/api/orders", "submitLabel": "Place Order", "fields": [ {"name": "product", "type": "select", "label": "Product", "required": True, "options": ["Widget Pro ($25)", "Gadget Plus ($45)", "Mega Pack ($99)", "Starter Kit ($15)"]}, {"name": "quantity", "type": "number", "label": "Quantity", "required": True, "min": 1, "max": 100, "value": "1"}, {"name": "name", "type": "text", "label": "Full Name", "required": True}, {"name": "email", "type": "email", "label": "Email", "required": True}, {"name": "address", "type": "textarea", "label": "Shipping Address", "required": True}, {"name": "phone", "type": "tel", "label": "Phone Number"}, {"name": "notes", "type": "textarea", "label": "Order Notes"} ] } ) with open("order-form.html", "w") as f: f.write(response.json()["html"]) print("Order form saved to order-form.html")
Build forms on-the-fly from a client-side configuration. This JavaScript example lets users define fields in a UI, then calls the FormForge API to render the form dynamically.
// Dynamic form builder — call from any frontend framework async function generateForm(config) { // config is built from user input in your admin UI const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify(config) }); return (await res.json()).html; } // Example: Build config from admin panel selections const formConfig = { title: document.getElementById('form-title').value, theme: document.getElementById('theme-select').value, fields: [] }; // Add fields dynamically based on user selections document.querySelectorAll('.field-row').forEach(row => { formConfig.fields.push({ name: row.querySelector('.field-name').value, type: row.querySelector('.field-type').value, label: row.querySelector('.field-label').value, required: row.querySelector('.field-required').checked }); }); // Generate and display the form const html = await generateForm(formConfig); document.getElementById('preview-iframe').srcdoc = html; // Or download as HTML file const blob = new Blob([html], { type: 'text/html' }); const a = document.createElement('a'); a.href = URL.createObjectURL(blob); a.download = 'form.html'; a.click();
# Flask route that generates forms from query parameters from flask import Flask, request, Response import requests as http_client app = Flask(__name__) @app.route("/form-builder", methods=["POST"]) def build_form(): """Accept a form config from your admin UI and return rendered HTML.""" config = request.get_json() # Forward to FormForge API api_res = http_client.post( "https://formforge-api.vercel.app/api/json-to-form", json=config ) if api_res.status_code != 200: return {"error": api_res.json()}, api_res.status_code html = api_res.json()["html"] return Response(html, mimetype="text/html") # Usage: POST /form-builder with the same JSON schema # The response is the rendered HTML form, ready to serve
# Build a form dynamically from shell variables TITLE="Event Registration" THEME="playful" curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d "{ \"title\": \"$TITLE\", \"theme\": \"$THEME\", \"submitLabel\": \"Register Now\", \"fields\": [ {\"name\": \"name\", \"type\": \"text\", \"label\": \"Your Name\", \"required\": true}, {\"name\": \"email\", \"type\": \"email\", \"label\": \"Email\", \"required\": true}, {\"name\": \"session\", \"type\": \"select\", \"label\": \"Preferred Session\", \"options\": [\"Morning (9am)\", \"Afternoon (2pm)\", \"Evening (6pm)\"]}, {\"name\": \"dietary\", \"type\": \"checkbox\", \"label\": \"Dietary requirements\", \"options\": [\"Vegetarian\", \"Vegan\", \"Gluten-free\", \"No restrictions\"]} ] }" | jq -r '.html' > event-form.html echo "Dynamic form saved to event-form.html"
{
"html": "<!DOCTYPE html><html lang=\"en\">...fully styled form with validation...</html>",
"meta": {
"theme": "playful",
"fieldCount": 4,
"fieldTypes": ["text", "email", "select", "checkbox"],
"title": "Event Registration",
"generatedAt": "2026-02-28T14:30:00.000Z"
}
}
Break long forms into manageable steps with a progress indicator. Each step gets its own validation — users can't proceed until the current step is valid. Works with any theme.
curl -X POST https://formforge-api.vercel.app/api/json-to-form \ -H "Content-Type: application/json" \ -d '{ "title": "Job Application", "theme": "corporate", "steps": [ { "title": "Personal Info", "fields": [ {"name": "name", "type": "text", "label": "Full Name", "required": true}, {"name": "email", "type": "email", "label": "Email", "required": true}, {"name": "phone", "type": "tel", "label": "Phone Number"} ] }, { "title": "Experience", "fields": [ {"name": "role", "type": "select", "label": "Desired Role", "options": ["Frontend", "Backend", "Full Stack", "DevOps"]}, {"name": "years", "type": "number", "label": "Years of Experience", "required": true}, {"name": "skills", "type": "textarea", "label": "Key Skills"} ] }, { "title": "Final Details", "fields": [ {"name": "start_date", "type": "date", "label": "Earliest Start Date"}, {"name": "portfolio", "type": "url", "label": "Portfolio URL"}, {"name": "terms", "type": "checkbox", "label": "I agree to the terms", "required": true} ] } ] }'
const res = await fetch('https://formforge-api.vercel.app/api/json-to-form', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Job Application', theme: 'corporate', steps: [ { title: 'Personal Info', fields: [ { name: 'name', type: 'text', label: 'Full Name', required: true }, { name: 'email', type: 'email', label: 'Email', required: true }, { name: 'phone', type: 'tel', label: 'Phone Number' } ] }, { title: 'Experience', fields: [ { name: 'role', type: 'select', label: 'Desired Role', options: ['Frontend', 'Backend', 'Full Stack', 'DevOps'] }, { name: 'years', type: 'number', label: 'Years of Experience', required: true }, { name: 'skills', type: 'textarea', label: 'Key Skills' } ] }, { title: 'Final Details', fields: [ { name: 'start_date', type: 'date', label: 'Earliest Start Date' }, { name: 'portfolio', type: 'url', label: 'Portfolio URL' }, { name: 'terms', type: 'checkbox', label: 'I agree to the terms', required: true } ] } ] }) }); const { html, meta } = await res.json(); console.log(`Generated ${meta.stepCount}-step wizard with ${meta.fieldCount} fields`); // Embed in your page document.getElementById('form-container').innerHTML = html;
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-form", json={ "title": "Job Application", "theme": "corporate", "steps": [ { "title": "Personal Info", "fields": [ {"name": "name", "type": "text", "label": "Full Name", "required": True}, {"name": "email", "type": "email", "label": "Email", "required": True}, {"name": "phone", "type": "tel", "label": "Phone Number"} ] }, { "title": "Experience", "fields": [ {"name": "role", "type": "select", "label": "Desired Role", "options": ["Frontend", "Backend", "Full Stack", "DevOps"]}, {"name": "years", "type": "number", "label": "Years of Experience", "required": True}, {"name": "skills", "type": "textarea", "label": "Key Skills"} ] }, { "title": "Final Details", "fields": [ {"name": "start_date", "type": "date", "label": "Earliest Start Date"}, {"name": "portfolio", "type": "url", "label": "Portfolio URL"}, {"name": "terms", "type": "checkbox", "label": "I agree to the terms", "required": True} ] } ] } ) data = response.json() print(f"Generated {data['meta']['stepCount']}-step wizard") # Save the wizard form with open("application.html", "w") as f: f.write(data["html"])
{
"html": "<!DOCTYPE html><html lang=\"en\">...wizard form with step progress indicator...</html>",
"meta": {
"theme": "corporate",
"fieldCount": 9,
"fieldTypes": ["text", "email", "tel", "select", "number", "textarea", "date", "url", "checkbox"],
"title": "Job Application",
"stepCount": 3,
"generatedAt": "2026-03-01T08:00:00.000Z"
}
}
Use /api/json-to-embed to generate a self-contained HTML form with built-in client-side validation, honeypot spam protection, and an iframe embed snippet. Paste the embed snippet into any HTML page.
curl -X POST https://formforge-api.vercel.app/api/json-to-embed \ -H "Content-Type: application/json" \ -d '{ "title": "Newsletter Signup", "description": "Get weekly product updates delivered to your inbox.", "theme": "playful", "fields": [ {"name": "name", "type": "text", "label": "Your Name", "required": true}, {"name": "email", "type": "email", "label": "Email Address", "required": true}, {"name": "interests", "type": "select", "label": "Interest", "options": ["Engineering", "Design", "Product", "Marketing"]} ], "options": { "submitText": "Subscribe", "successMessage": "Welcome aboard! Check your inbox.", "honeypot": true } }'
const res = await fetch('https://formforge-api.vercel.app/api/json-to-embed', { method: 'POST', headers: { 'Content-Type': 'application/json' }, body: JSON.stringify({ title: 'Newsletter Signup', description: 'Get weekly product updates delivered to your inbox.', theme: 'playful', fields: [ { name: 'name', type: 'text', label: 'Your Name', required: true }, { name: 'email', type: 'email', label: 'Email Address', required: true }, { name: 'interests', type: 'select', label: 'Interest', options: ['Engineering', 'Design', 'Product', 'Marketing'] } ], options: { submitText: 'Subscribe', successMessage: 'Welcome aboard! Check your inbox.', honeypot: true } }) }); const { html, embedSnippet, meta } = await res.json(); console.log(`Embed form: ${meta.fieldCount} fields, ${meta.validationRules} validation rules`); // Paste embedSnippet into any HTML page console.log(embedSnippet);
import requests response = requests.post( "https://formforge-api.vercel.app/api/json-to-embed", json={ "title": "Newsletter Signup", "description": "Get weekly product updates delivered to your inbox.", "theme": "playful", "fields": [ {"name": "name", "type": "text", "label": "Your Name", "required": True}, {"name": "email", "type": "email", "label": "Email Address", "required": True}, {"name": "interests", "type": "select", "label": "Interest", "options": ["Engineering", "Design", "Product", "Marketing"]} ], "options": { "submitText": "Subscribe", "successMessage": "Welcome aboard! Check your inbox.", "honeypot": True } } ) data = response.json() print(f"Embed ready: {data['meta']['fieldCount']} fields, height {data['meta']['estimatedHeight']}px") # Save the embed snippet for use in other pages with open("embed-snippet.html", "w") as f: f.write(data["embedSnippet"])
{
"html": "<!DOCTYPE html><html lang=\"en\">...self-contained form with validation JS...</html>",
"embedSnippet": "<iframe src=\"data:text/html;base64,...\" width=\"100%\" height=\"420\" ...></iframe>",
"meta": {
"fieldCount": 3,
"requiredFields": ["name", "email"],
"estimatedHeight": 420,
"validationRules": 4,
"generatedAt": "2026-03-01T08:00:00.000Z"
}
}