Fastify Profanity Filter

Register a Fastify preHandler hook to screen payloads before your handlers run.

Quick start in Fastify

fastify.post("/comments", {
  preHandler: async (req, reply) => {
    const r = await fetch("https://api.theprofanityapi.com/v1/check", {
      method: "POST",
      headers: {
        Authorization: `Bearer ${process.env.PROFANITY_API_KEY}`,
        "Content-Type": "application/json",
      },
      body: JSON.stringify({ text: req.body.text, context: "comment", mode: "balanced" }),
    });
    if ((await r.json()).flagged) reply.code(422).send({ error: "flagged" });
  },
}, async (req) => { /* save */ });

Why context-aware matters

A plain word list flags "this game is sick" or medical text full of anatomical terms. The Profanity API runs a five-layer pipeline that scores intent, so "die" in a gaming taunt and "die" in a real threat are handled differently. Pick a context and the engine adjusts strictness automatically.


Other integrations

Ready to ship moderation?

Get an API key and 300 free requests a month. No credit card required.

Get started free →