One API call. No backend code. Five minutes.
Updated March 2026
Why are you writing a database schema for a contact form? Seriously. You need name, email, message. That is three fields. The usual Next.js approach has you setting up Prisma, writing an API route, handling validation, building some kind of dashboard to see the messages. That is a lot of plumbing for three fields. Sutrena skips all of it. Get a trial key, create a form, POST submissions from your app. Sutrena stores the data and gives you a dashboard automatically.
1. Get a trial API key
No signup. Hit the trial endpoint, get a key back. 10 projects, 500 submissions per form. Claim within 24 hours to keep your account.
curl -X POST https://sutrena.com/api/trial
# Response:
# {
# "apiKey": "st_trial_abc123...",
# "expiresAt": "2026-03-09T00:00:00.000Z",
# "plan": "free"
# }2. Create a contact form via API
Use the contact template. You get name, email, and message fields already wired up. Pass createDashboard: true and you also get a live analytics view.
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_abc123" \
-H "Content-Type: application/json" \
-d '{
"templateId": "contact",
"createDashboard": true
}'
# Response includes:
# {
# "id": "frm_xyz789",
# "hostedUrl": "https://sutrena.com/f/frm_xyz789",
# "dashboardUrl": "https://sutrena.com/d/dsh_abc456",
# "fields": [...]
# }3. Add the form to your Next.js page
A client component that collects form data and POSTs to Sutrena. No server action. No API route on your end. You build the HTML, Sutrena handles the rest.
"use client";
import { useState } from "react";
export default function ContactForm() {
const [status, setStatus] = useState<"idle" | "sending" | "sent">("idle");
async function handleSubmit(e: React.FormEvent<HTMLFormElement>) {
e.preventDefault();
setStatus("sending");
const data = Object.fromEntries(new FormData(e.currentTarget));
const res = await fetch(
"https://sutrena.com/api/forms/frm_xyz789/submit",
{
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(data),
}
);
setStatus(res.ok ? "sent" : "idle");
}
if (status === "sent") return <p>Thanks! We will be in touch.</p>;
return (
<form onSubmit={handleSubmit}>
<input name="name" placeholder="Name" required />
<input name="email" type="email" placeholder="Email" required />
<textarea name="message" placeholder="Message" required />
<button type="submit" disabled={status === "sending"}>
{status === "sending" ? "Sending..." : "Send"}
</button>
</form>
);
}4. Verify submissions in the dashboard
Open the dashboard URL from the form creation response. Auto-refreshes every 30 seconds. Total messages, timeline chart, recent submissions. Nothing to configure.
# Open in browser:
# https://sutrena.com/d/dsh_abc456
# Or fetch submissions via API:
curl https://sutrena.com/api/forms/frm_xyz789/submissions \
-H "Authorization: Bearer st_trial_abc123"No. Sutrena stores submissions. View them in the dashboard, fetch via API, or export as CSV on a paid plan.
Yes. The example uses a client component with "use client". Works in both routers. You could also call Sutrena from a Server Action if you prefer.
Yes. POST /api/trial. No auth, no email. Claim within 24 hours by creating an account to keep your data. Want more capacity? Upgrade to a paid plan.
You own the HTML. Tailwind, CSS modules, whatever you want. Sutrena only handles the backend.
Unclaimed accounts auto-delete after 24 hours. Create an account and upgrade to keep things running.
Sutrena is the web runtime for AI agents. Three primitives — pages, forms, and dashboards — accessible through one API. Your agent creates web artifacts, humans interact with them, and your agent gets the data back. Framework-agnostic. Works from any MCP client or HTTP client.
1. Get a trial key (no auth, no signup)
curl -X POST https://sutrena.com/api/trial2. Create a form + dashboard from a template
curl -X POST https://sutrena.com/api/forms \
-H "Authorization: Bearer st_trial_xxx" \
-H "Content-Type: application/json" \
-d '{"templateId": "waitlist", "createDashboard": true}'Get a trial API key instantly with no signup, or create an account for the full experience.