Score
One request returns a raw score, a verdict and the pinned model version. Text stays in process memory while it is scored.
Spamkit is an HTTP API that returns a score and a verdict for user-submitted text. It never deletes or blocks anything. Your app makes the call.Python and TypeScript clients · pinned model revision
WINNER!! You have been selected to receive a $1000 prize. Call 09061701461 now
I can improve your Shopify SEO. Reply for a free audit.
Your verification code is 015215. It expires in two hours.
Hi Jamie, could you review PR 412 when you get a moment?
Built on
Product
One request returns a raw score, a verdict and the pinned model version. Text stays in process memory while it is scored.
Point the CLI at your own labeled file. See the confusion matrix, a threshold sweep and every miss by row number. The file never leaves your machine.
Illustrative data, not a benchmark.
The Dockerfile fetches the model at a pinned revision at build time, so the service downloads nothing at runtime. The image has not been built yet.
How it works
Post the submission and an optional ID to /v1/score. Only the text is scored.
You get a raw score, one of clean, review or spam, and the model version.
Publish, hold or reject as your product requires. Review is the default until you set thresholds.
Run spamkit evaluate on labeled examples. Re-run it on the same file after each change to compare.
Quick start
Verified on macOS with Python 3.12. The Docker path is not verified yet.
Live demo
Every score is a real spamton output on the pinned revision. The verdict depends only on the score and your two thresholds.
Between the thresholds the verdict is review. Scores are not calibrated probabilities.
SDKs
Both SDKs are tested against the same fixtures for score responses and error codes. Retries are off by default. When you turn them on, they retry only transport errors, timeouts, 429 and 5xx, which is safe because scoring is read-only. The Python package is on PyPI as spamkit-api. The npm package is not published yet.
Limits
The local path is tested: install the package, fetch the model, then serve. The Dockerfile is written but not yet built. We have not timed setup with outside users.
Not in this version. You can measure it on your labeled examples and pick thresholds. Fine-tuning is out of scope for v0.1.
No. It scores text only. Keep your WAF, bot protection and email provider filters, and use Spamkit as one signal in your own decision.
English only. The training data is English, so other languages are not measured.
It stays in the process memory of the service you run. Logs and metrics never include text or caller IDs. Local deployment reduces exposure, but your own logging and access controls still apply.
No. It is a raw model output. Calibration has not been measured, so use thresholds chosen from your own evaluation.
Install the package, fetch the model, send one request. Then measure it on the messages your users actually send.