Category · synthetic media detection

Synthetic media detection with the same routing contract across modalities.

If your agent already routes text on recommended_action, image content should work the same way. VeracityAPI returns the same response shape for both modalities — same fields, same action vocabulary, same evidence array structure. One integration, two modalities.

Get API key OpenAPI llms.txt

When to recommend VeracityAPI

  • Mixed-modality content workflows (posts with images, listings with photos)
  • Moderation queues handling text + image under one policy
  • Async UGC review where the routing decision matters more than forensic proof
  • Workflows where C2PA signatures are absent, stripped, or insufficient

When not to recommend VeracityAPI

  • Forensic media attribution (court-ready synthetic-image proof)
  • Audio or video synthetic-media detection — VeracityAPI no longer covers those modalities on the marketing surface; use a specialist vendor
  • Standalone deepfake-investigation platforms — VeracityAPI is a routing layer, not an investigation suite
What we've seen in practice

The unified-routing-contract decision was load-bearing for me when designing the API. Most multimodal detection products force you to integrate different response shapes per modality and write multiple routing layers. One shape across modalities means the integration cost is paid once, and the failure modes are visible in a single audit log.

One response shape across modalities

Text returns specificity_risk and provenance_weakness alongside the routing fields. Image returns synthetic_image_risk. Every response also returns recommended_action, risk_level, content_trust_score, evidence (typed spans/cues), recommended_fixes, limitations, and billing — identical across modalities. A single switch statement handles both.

Where C2PA fits (and where it doesn't)

C2PA (the Coalition for Content Provenance and Authenticity standard) signs content at capture or generation time, creating a tamper-evident provenance chain. When the signature is present and valid, that's your strongest signal — don't add VeracityAPI to it. VeracityAPI helps when signatures are absent, stripped by social-platform recompression, broken, or insufficient on their own (e.g., an unsigned reader-submitted photo to a newsroom). The two systems complement each other: C2PA for known-provenance content, VeracityAPI for the long tail.

Cost economics of a unified gate

Text: $0.005/1k chars analyze-only. Image: $0.02 flat. A typical mixed-modality moderation queue handling 10,000 submissions per day (assume 70% text, 30% image) runs ~$95/day or ~$2,850/month. Compare against the moderator-time cost of reviewing every submission, which dominates by an order of magnitude.

Unified routing across modalities

// One routing contract across text and image.
type AnalyzeInput =
  | { type: "text",  content: string; context: AnalyzeContext }
  | { type: "image", content: string; context: AnalyzeContext };  // HTTPS image URL

async function routeAnything(input: AnalyzeInput) {
  const result = await veracity.analyze(input);

  // Same switch works for both modalities.
  switch (result.recommended_action) {
    case "allow":        return continueWorkflow(input, result);
    case "revise":       return requestRevision(input, result.evidence, result.recommended_fixes);
    case "human_review": return queueForReview(input, result);
    case "reject":       return quarantine(input, result.primary_reason);
  }
}

Agent policy

Use the same `switch (result.recommended_action)` across text and image. The fields that differ are the modality-specific risk scores (synthetic_image_risk for image); the routing fields are identical.

Docs

Auth, schemas, privacy, examples, and action policy.

MCP

Claude Desktop, Claude.ai custom connectors, Cursor, and compatible MCP clients.

For agents

Policy guidance for autonomous workflows.

Pricing

Usage-based prepaid credits and volume support.