splitforms.com
free api · rest + webhooks + mcp

A free contact form API for any frontend.

One POST endpoint for submissions. A REST API for reading them. Signed webhooks with retries. An MCP server for AI agents. Storage-backed file uploads, custom redirects, and dedicated SMTP through one clean API surface.

Get a free API key →Read the API docs →

Three lines from any HTTP client

curl
curl -X POST https://splitforms.com/api/submit \
  -F "access_key=YOUR_ACCESS_KEY" \
  -F "name=Alex" \
  -F "email=alex@example.com" \
  -F "message=Hello"
fetch (JavaScript)
await fetch("https://splitforms.com/api/submit", {
  method: "POST",
  body: new FormData(form),
});
Python requests
import requests

requests.post(
  "https://splitforms.com/api/submit",
  data={
    "access_key": "YOUR_ACCESS_KEY",
    "name": "Alex",
    "email": "alex@example.com",
    "message": "Hello",
  },
)

What ships in the API

Submit endpoint

POST /api/submit — accepts multipart/form-data and application/x-www-form-urlencoded. Returns JSON { success, message }.

Read API

GET /api/forms/:slug/submissions — cursor-paginated, filterable by date and spam status. Authenticated with a personal access token.

Signed webhooks

POST any URL on every submission. HMAC-SHA256 signed. Retries with exponential backoff for 24h. Dead-letter replay from the dashboard.

MCP server

Model Context Protocol server so Claude, Cursor, and any MCP-aware agent can manage forms and read submissions directly.

File uploads

Multipart/form-data with Storage-backed attachments up to 10 MB per file, 5 files per submission. Private storage with signed download URLs.

Custom redirects + CC/BCC

Set redirect URL per form or per submission. CC/BCC additional recipients. Hidden _replyto override for transactional flows.

Response shape

// 200 OK — submission accepted
{
  "success": true,
  "message": "Submission received",
  "submission_id": "sub_01HXY3..."
}

// 4xx — validation or auth error
{
  "success": false,
  "message": "Invalid access key",
  "code": "auth_invalid_key"
}

Contact form API FAQ

What's included in the splitforms contact form API?

One POST endpoint (/api/submit) for form submissions, a full REST API for reading submissions and managing forms, signed webhooks with retries, an MCP server for AI agents, Storage-backed file uploads up to 5 files at 10 MB each, custom redirects, CC/BCC delivery, and a public OpenAPI spec.

Do I need an API key?

Yes — each form has an access key (a short identifier) and your account has a personal access token (for the read API). The access key goes in the form action URL or in a hidden `access_key` field. The personal access token authenticates programmatic reads of submissions. Both are scoped — the access key can only receive submissions for its form; the token can only read the resources its scopes permit.

Is the API really free?

Yes — 1,000 submissions per month with full API access including signed webhooks, REST reads, and the MCP server. File retention requires the Storage integration to be connected. We meter submission volume; Pro is $5/mo for 5,000 submissions, and the $59 4-Year plan covers 15,000/mo for 48 months.

What about rate limits?

Submission endpoints are rate-limited per form access key — burst allowance with sliding window, designed to absorb traffic spikes without blocking legitimate submissions. Read API endpoints are rate-limited per personal access token. Limits are generous on every plan; if you're hitting them you're probably the target of abuse, and we surface that in the dashboard.

Can I read submissions from another service?

Yes — the read API returns JSON. Authenticate with your personal access token (Authorization: Bearer …), GET /api/forms/:slug/submissions, paginate via cursor. Use this to sync submissions to your database, Airtable, Notion, a CRM, etc. The same endpoint powers the splitforms dashboard.

Do you have webhooks?

Yes, on every plan. POST any URL with the full submission payload as JSON, signed with HMAC-SHA256. Failures retry with exponential backoff for 24 hours, with a dead-letter view in the dashboard so you can replay any submission that hit a bad endpoint. Multiple webhooks per form are supported.

What's the MCP server for?

MCP is the Model Context Protocol — the way AI agents like Claude, Cursor, and Windsurf talk to external tools. splitforms ships an MCP server so your AI agent can list forms, read submissions, manage settings, and trigger actions without a bespoke integration. Useful for building support bots, automated triage, or AI-driven form creation.

Free API. Real free tier.

1,000 submissions/month, signed webhooks, REST reads, MCP server — every API surface on every plan. Sign up in 30 seconds, no credit card.

Get a free API key →