SnapForm
Documentation

SnapForm Documentation

Collect form submissions from any website with one line of HTML. No backend required.

Quick Start

1. Create an Account

Sign up with your email and password. It's free.

2. Create a Form

Click "Create New Form" in your Dashboard and give it a name.

3. Copy the Endpoint

Get your unique form endpoint URL and HTML code snippet.

4. Start Collecting

Add the code to your website. Submissions appear in your Dashboard.

Integration

HTML Form

Add your SnapForm endpoint as the action attribute of any HTML form:

html<form action="https://www.snapform.cc/api/f/YOUR_FORM_ID" method="POST">
  <input type="text" name="name" placeholder="Your name" required />
  <input type="email" name="email" placeholder="Your email" required />
  <textarea name="message" placeholder="Your message" required></textarea>

  <!-- Honeypot anti-spam field (keep hidden) -->
  <input type="text" name="_gotcha" style="display:none"
    tabindex="-1" autocomplete="off" />

  <button type="submit">Send</button>
</form>

You can use any field names you like. SnapForm automatically collects all form fields.

AJAX / JavaScript

For single-page apps or custom integrations, use fetch:

javascriptconst response = await fetch(
  'https://www.snapform.cc/api/f/YOUR_FORM_ID',
  {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({
      name: 'John',
      email: 'john@example.com',
      message: 'Hello!'
    })
  }
);

const result = await response.json();
// { success: true, submissionId: "..." }

SnapForm supports CORS, so you can call it from any domain.

File Uploads

To accept file uploads, add enctype="multipart/form-data" to your form and use <input type="file">:

html<form action="https://www.snapform.cc/api/f/YOUR_FORM_ID"
      method="POST" enctype="multipart/form-data">
  <input type="text" name="name" placeholder="Your name" required />
  <input type="email" name="email" placeholder="Your email" required />
  <input type="file" name="resume" />

  <input type="text" name="_gotcha" style="display:none"
    tabindex="-1" autocomplete="off" />

  <button type="submit">Send</button>
</form>

For multiple files, add multiple file inputs with different names:

html<input type="file" name="resume" />
<input type="file" name="cover_letter" />

Supported file types: JPEG, PNG, GIF, WebP, SVG, PDF, TXT, CSV, DOC/DOCX, XLS/XLSX, ZIP

Upload with JavaScript:

javascriptconst form = document.querySelector('form');
const formData = new FormData(form);

const response = await fetch(
  'https://www.snapform.cc/api/f/YOUR_FORM_ID',
  { method: 'POST', body: formData }
);

Note: When uploading files via JavaScript, do not set the Content-Type header manually. The browser will set it automatically with the correct multipart/form-data boundary.

File Upload Limits

FreeProBusiness
Max file size2 MB10 MB10 MB
Files per submission1510

Uploaded files are stored securely and can be downloaded from the Dashboard or via the download URL included in CSV exports and webhook payloads.

Supported Content Types

  • application/x-www-form-urlencoded — default HTML form format
  • multipart/form-data — forms with file uploads
  • application/json — AJAX / API calls

Features

FeatureDescription
Email NotificationsGet notified by email for every new submission. Includes the form name and all submitted data.
WebhooksReceive submission data via POST to integrate with Slack, Zapier, or your own backend.
File UploadsAccept file attachments (images, PDFs, documents) with every submission. Files are stored securely and downloadable from the Dashboard.
Spam ProtectionBuilt-in honeypot mechanism filters spam bots. Supported field names: _gotcha, _honeypot, _hp.
CSV ExportDownload all submissions as a CSV file. Compatible with Excel and Google Sheets. File fields include download URLs.
Custom RedirectsRedirect users to a thank-you page after submission. Without a redirect URL, SnapForm returns a JSON response.

Webhook Payload

json{
  "formId": "form-id",
  "formName": "Contact Form",
  "submissionId": "submission-id",
  "data": {
    "name": "John Doe",
    "email": "john@example.com",
    "message": "Hello!",
    "resume": {
      "__snapform_file": true,
      "key": "uploads/formId/submissionId/1709012345-resume.pdf",
      "name": "resume.pdf",
      "size": 245760,
      "type": "application/pdf",
      "downloadUrl": "https://www.snapform.cc/api/files/uploads/..."
    }
  },
  "createdAt": "2026-02-27T10:30:00.000Z"
}

API Reference

Submit a Form

POST /api/f/{formId}

Submit data to a form endpoint.

StatusDescription
201Submission successful
303Submission successful, redirecting to configured URL
404Form ID not found
429Monthly submission limit reached
500Internal server error

Query API (Pro & Business)

Access your forms and submissions programmatically with API keys. Available on Pro and Business plans.

Authentication

  1. Go to Dashboard → API Keys to create an API key
  2. Use the key as a Bearer token in the Authorization header
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Important: Your API key is only shown once when created. Store it securely.

List Forms

GET /api/v1/forms

Returns all forms belonging to the authenticated user.

bashcurl -H "Authorization: Bearer sk_live_xxx" \
  https://www.snapform.cc/api/v1/forms

Response:

json{
  "forms": [
    {
      "id": "clxyz...",
      "name": "Contact Form",
      "submissionCount": 42,
      "createdAt": "2025-06-01T12:00:00.000Z",
      "updatedAt": "2025-06-15T08:30:00.000Z"
    }
  ]
}

List Submissions

GET /api/v1/forms/{formId}/submissions

Returns paginated submissions for a specific form.

ParameterDefaultDescription
page1Page number
limit20Items per page (max 100)
bashcurl -H "Authorization: Bearer sk_live_xxx" \
  "https://www.snapform.cc/api/v1/forms/YOUR_FORM_ID/submissions?page=1&limit=10"

Response:

json{
  "submissions": [
    {
      "id": "clxyz...",
      "data": {
        "name": "Jane Doe",
        "email": "jane@example.com",
        "resume": {
          "type": "file",
          "name": "resume.pdf",
          "size": 204800,
          "mimeType": "application/pdf",
          "url": "https://www.snapform.cc/api/files/uploads/..."
        }
      },
      "createdAt": "2025-06-15T08:30:00.000Z"
    }
  ],
  "pagination": {
    "page": 1,
    "limit": 10,
    "total": 42,
    "totalPages": 5
  }
}

File fields are automatically converted to objects with type, name, size, mimeType, and url.

Error Codes

StatusDescription
401Missing or invalid API key
403Plan does not include API access, or form belongs to another user
404Form not found
500Internal server error

Plans & Limits

FreePro — $9/moBusiness — $29/mo
Forms110Unlimited
Submissions/mo502,00010,000
File uploads1 file, 2 MB5 files, 10 MB10 files, 10 MB
Email NotificationsYesYesYes
Spam ProtectionYesYesYes
CSV ExportYesYesYes
Custom RedirectsYesYesYes
Webhooks-YesYes
API Access-YesYes
Priority Support--Yes

When limits are exceeded: creating a new form beyond your limit will prompt an upgrade, and submissions beyond your monthly quota will return a 429 error.

FAQ

Can I use SnapForm with React / Vue / other frameworks?

Yes. SnapForm provides a standard HTTP API. Any framework that can send HTTP POST requests can use it. See the AJAX example above.

Are there any restrictions on field names?

No. You can use any field name. Just avoid the reserved honeypot names: _gotcha, _honeypot, _hp.

Where is my data stored?

Your submission data is stored securely in our database. You can view it anytime through the Dashboard or export it as CSV. See our Privacy Policy for details.

How do I cancel or get a refund?

You can cancel your subscription at any time. Refunds are available within 7 days of purchase. See our Refund Policy for details.