// spam filtering api for forms

Junk mail stops here. Real mail gets through.

One API call classifies every form submission — spam, solicitor, lead, or support — before you spend a single Resend send. No IP tracking. No tokens burned on obvious junk.

Free to start · no credit card · unlimited websites

app/api/contact/route.ts
const res = await fetch(
  "https://sendworth.dev/api/v1/check",
  {
    method: "POST",
    headers: {
      "Authorization": `Bearer ${SENDWORTH_KEY}`,
      "Content-Type": "application/json",
    },
    body: JSON.stringify({
      email: submission.email,
      name: submission.name,
      message: submission.message,
    }),
  }
)

const { category, isSpam } = await res.json()
// "lead" | "spam" | "solicitor" | "support-request"

if (!isSpam) {
  await resend.emails.send({ /* real mail only */ })
}
  • No IP tracking, ever
  • Three layers, cheapest first
  • One key, every site
  • Sub-100ms fast checks
  • Unlimited websites
  • Free: 100 checks/mo

× how it works

Most form mail is junk. You pay to send it anyway.

Every submission runs through fast, free checks before it ever touches the AI. Cheapest layer first — an accurate category without burning tokens on obvious junk.

Layer 01 — Free

Domain reputation

The sender domain is matched against a disposable-email blocklist that refreshes daily. Throwaway domains get flagged instantly — no LLM tokens spent.

Layer 02 — Free

Sender reputation

The address is checked against a global abuse database of known spammers and forum abusers. Repeat offenders never reach the expensive step.

Layer 03 — AI

Content check

Anything that survives goes to an LLM tuned to your brand. It reads the actual message and returns a category, a confidence score, and a reason.

// deliberate omission

We never check IP addresses

IP reputation is noisy, punishes people on shared networks and VPNs, and creates privacy headaches. We skip it entirely and rely on signals that actually correlate with spam.

× features

Built for the form handler, not the marketing site.

Drop it into any handler and let it do the filtering. Everything is an API first.

001

Smart categorization

Every submission comes back as spam, solicitor, lead, or support request — route, store, or ignore it programmatically.

002

Custom categories

On Pro, add your own categories and enable or disable any of them. Disabled categories are dropped from the model entirely.

003

Brand-tailored AI

Scrape your site or upload docs so the classifier understands your product and tone. A "lead" for you is not a "lead" for everyone.

004

Learns from corrections

Relabel a submission in the dashboard and the model uses it as a correction example the next time it classifies similar mail.

005

Follow-up replies

Reply to real leads and support requests without leaving the dashboard. Sending and templates are free; AI drafts a reply in your brand voice and sends through your Resend account.

006

Own your data

Export any submission — or your entire history — as CSV or JSON, on any plan. Delete individual records or clear a whole category whenever you want.

007

Works with any integration

It is a plain HTTP endpoint — call it from Discord bots, Zapier workflows, n8n pipelines, Slack apps, Cloudflare Workers, or any serverless function. If it can make a fetch call, it works.

008

One key, every site

Use a single API key across as many forms and websites as you want. Rotate or revoke keys any time.

009

Metrics that matter

Checks used, category breakdowns, and a full log of captured submissions, right from your dashboard.

× see it in action

Request in. Verdict out.

Send the raw submission. Get back a structured verdict you can branch on.

request
POST /api/v1/check
Authorization: Bearer ig_live_xxx

{
  "email": "growth@bestseoagency.biz",
  "name": "Kyle from BestSEO",
  "message": "We can get you to page 1
             of Google. Reply for quote!"
}
response — 84ms
{
  "category": "solicitor",
  "isSpam": true,
  "confidence": 0.94,
  "reason": "Unsolicited SEO pitch
             from a cold sender.",
  "signals": {
    "disposableDomain": false,
    "senderReputation": "suspicious"
  }
}

× pricing

Pricing that scales with your forms.

Start free with 100 checks a month. Upgrade when your forms get busy.

Free
For side projects and kicking the tires.
$0/mo
  • Unlimited websites
  • 100 checks / month
  • 4 built-in categories
  • 1 API key
  • Domain + sender reputation
  • AI content classifier
  • Unlimited follow-up sending + templates
  • 10 AI-drafted replies / month
  • Community support
Most popular
Pro
For production apps that take forms seriously.
$19.99/mo
  • Unlimited websites
  • 10,000 checks / month
  • Unlimited custom categories
  • Enable / disable any category
  • Brand training (scrape + file uploads)
  • Correction-learning loop
  • Unlimited follow-up sending + templates
  • 250 AI-drafted replies / month
  • Unlimited API keys
  • Email support
Business
For high-traffic apps and growing teams.
$29.99/mo
  • Unlimited websites
  • 50,000 checks / month
  • Everything in Pro
  • 1,000 AI-drafted replies / month
  • Priority email support
  • Higher rate limits
  • Extended data retention
Custom
For very high volume and special needs.
Let's talk
  • Unlimited websites
  • Volume pricing above 50,000 checks
  • Everything in Business
  • SLA + priority support
  • Dedicated onboarding
  • Custom data retention
  • Invoicing available

// last step

Give your Resend quota a break.

Wire up Sendworth in a few minutes and stop paying to email spammers. Free to start, no credit card.