Supabase

Content Moderation with Supabase

Drop moderation into your Supabase stack.

Edge Functions, Database Webhooks, and Realtime patterns.

What it detects

  • • Insert payloads via webhooks
  • • Edge Function inputs
  • • Realtime broadcast events
  • • Storage uploads
  • • Auth signup metadata
  • • Custom rules

Why developers choose Vettly

  • • Edge Functions run the SDK natively
  • • Database Webhooks trigger checks on insert
  • • Persist decisions in Postgres for audit
  • • Pairs with RLS for tenant-aware moderation
Example request
bash
// supabase/functions/moderate-comment/index.ts
import { Vettly } from 'npm:@vettly/sdk';

const vettly = new Vettly({ apiKey: Deno.env.get('VETTLY_API_KEY')! });

Deno.serve(async (req) => {
  const { content, user_id } = await req.json();
  const result = await vettly.check({ content, contentType: 'text', policyId: 'comments' });
  if (result.action === 'block') {
    return new Response(JSON.stringify({ blocked: true }), { status: 400 });
  }
  return new Response(JSON.stringify({ ok: true }));
});
Example response
json
{
  "flagged": true,
  "action": "block",
  "categories": {
    "harassment": 0.93,
    "hate": 0.02
  },
  "policy": "default",
  "latency_ms": 142
}

Compared to building moderation in Postgres triggers

Edge Functions give you a clean place to call Vettly without putting HTTP calls inside SQL triggers.

Get an API key

Start with 15,000 free decisions per month. No credit card required.

Get an API key