New Known-CSAM hash matching for images

The moderation backend for apps with user content

Send posts, comments and images to one API before you publish them. TrustShip scores them against your policy, collects reports, blocks and appeals, and helps you meet App Store Guideline 1.2.

Free plan, no card needed · Sign in with Google or GitHub · Swift and Python SDKs

API reference
  1. Your app or backend callsPOST /v1/moderate
  2. Images, when a scanner is configuredKnown-CSAM hash check
  3. Moderation providerScores your policy categories
  4. Your policy decidesallow · flag · block
POST/v1/moderate
{ "text": "I'm going to destroy you in the next match", "user_id": "user_42", "content_id": "post_1001" }
Example response 200 OKflag
{
  "moderation_id": "mod_3f9c1e7a52b04d8e9a61c2f0",
  "decision": "flag",
  "reason": "policy",
  "matched_categories": ["violence"],
  "scores": { "violence": 0.72, "harassment": 0.08, … },
  "unevaluated_categories": ["spam"],
  "provider": "openai",
  "csam_scan": null,
  "user_id": "user_42",
  "content_id": "post_1001",
  …
}

Never publish block. flag also lands in your review queue: publish or hold it, per your policy.

Guideline 1.2

What Apple asks of apps with user content, covered

Apps with user-generated content must filter objectionable material, let people report it and block abusive users, respond to reports promptly, and publish contact information. TrustShip gives you the tools for each; reviewing reports on time is up to you.

Filter before posting

POST /v1/moderate checks text, image URLs and uploads against a per-project policy and returns allow, flag or block.

Reports and a review queue

Users report content from your app. Reports, appeals and flagged posts wait in one queue where you approve, remove or ban.

Blocks and bans

Let users block each other with /v1/blocks, and ban abusive users from the whole project.

Published contact details

Set a support email or URL once. GET /v1/contact serves it to your app.

Known-CSAM hash matching

Every image is checked against known child sexual abuse material with Arachnid Shield before the moderation model sees it. Matches are blocked and recorded, never stored. Reporting them stays your legal duty.

Compliance page

A checklist ticks each requirement as your app calls the API or you configure it, and generates Community Guidelines, how-to-report text and App Review notes.

How it works

Up and running in minutes

  1. 1

    Create your account

    Sign up with Google, GitHub or your email. The Free plan needs no card.

    Continue with Google
  2. 2

    Create a project

    Create a project for your app in the dashboard and copy its API key. Its moderation policy starts with Apple-safe defaults.

    Authorization: Bearer YOUR_API_KEY
  3. 3

    Moderate before publishing

    Call the API from your backend or the Swift SDK, then wire up reports and blocks.

    POST /v1/moderate

Pricing

Start free, upgrade when your app grows

Both plans come with the full moderation and Guideline 1.2 toolkit. Pro removes the limits.

Free

For building and launching your first app.

€0/ month

No card needed

  • 1 project
  • 1,000 moderation checks a month
  • Reports, blocks, bans and appeals
  • Review queue and compliance checklist
  • Known-CSAM hash matching for images
Start for free

Pro

Unlimited

For apps with real traffic, or several apps.

€20/ month

or €199 a year, 2 months free

  • Unlimited projects
  • Unlimited moderation checks, under fair use
  • Pay by card, or with BTC, ETH, SOL or USDC
  • Everything in Free
Get started

Pay by card through Stripe: Pro renews automatically every month or year until you cancel it from the dashboard.

Or pay with crypto (BTC, ETH, SOL or USDC), on-chain: create an invoice in the dashboard, send the exact amount it shows, paste the transaction hash, and Pro activates once it confirms.

A moderation check is one POST /v1/moderate call: one text, image URL or uploaded image. Reports, blocks, appeals and bans don’t count.

A Free project that goes past 1,000 checks keeps being moderated up to 2,000 checks that month, then gets a 24 hour grace period where every response says how long is left — so your app never suddenly goes unmoderated. Past that, checks pause with a 402 that says when the quota resets, until the next month or an upgrade. Fair use on Pro means traffic from your own apps, not reselling the API.

Add moderation to your app today

Start free with €0: one project and 1,000 checks a month. Upgrade when your app grows. Images are never stored, only their hash.