Documentation
Integrate in minutes
Add a form backend to any static site — HTML, React, Vue, or plain JavaScript. No server required.
How it works
01
Create an endpoint
Sign in and click "New Endpoint". Configure your rate limit and get a unique API key.
02
Add form to your site
Point your HTML form action at the gateway URL with your API key. Add the honeypot field.
03
Receive submissions
Every submission is stored securely. Rate limiting and bot detection happen automatically.
Code examples
Add any fields you want — name, phone, company — everything is stored. Max 50 KB per submission.
<form action="https://unstatic.dev/message/YOUR_API_KEY" method="POST">
<input type="text" name="name" placeholder="Your name" required />
<input type="email" name="email" placeholder="Your email" required />
<textarea name="message" placeholder="Message" required></textarea>
<!-- Add any custom fields you need -->
<input type="text" name="company" placeholder="Company" />
<input type="text" name="phone" placeholder="Phone" />
<!-- Honeypot: leave this hidden -->
<input type="text" name="_honeypot" style="display:none" tabindex="-1" />
<button type="submit">Send</button>
</form>const res = await fetch("https://unstatic.dev/message/YOUR_API_KEY", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
name: "John",
email: "john@example.com",
message: "Hello!",
// Add any custom fields — all are stored
company: "Acme Inc",
phone: "+91 9876543210",
_honeypot: "",
}),
});
const data = await res.json();
// data.success, data.request_idAPI responses
{ "success": true, "request_id": "uuid", "message": "Message accepted" }{ "message": "Too many requests. Please try again later." }{ "message": "Invalid API key" }Bot protection
Always include the honeypot field
Add a hidden input named _honeypot to every form. Humans never see it — bots fill it. When filled, the IP is silently blocked.
<input type="text" name="_honeypot" style="display:none" tabindex="-1" />
After submission
When creating an endpoint, you choose what happens after a form is submitted:
UnStatic shows a hosted thank-you page at unstatic.dev/thank-you. On error (rate limit), the user sees an error message with a back button. No setup needed.
Best for: quick setup, no custom pages
After submission, the user is redirected to your own URL (e.g. yoursite.com/thank-you). On error, they're redirected with ?error=message so you can handle it.
Best for: branded experience, full control
Always returns JSON — success or error. Use this when submitting via fetch/axios in JavaScript and handling the response yourself.
Best for: React, Vue, custom JS handling
Free plan limits