Developer workflow preview

AI detection API

API access for AI watermark, provenance, and text-risk signal reports in editorial and CMS workflows.

Signal reportWatermark, provenance, and text-risk signals stay separate.
Post-Check loadingDetector assets load only after a user starts analysis.
No proof claimsUnknown and unsupported states are first-class results.

Run a signal check

No detector model loads until you press Check.

0 chars

Current support

The MVP exposes text checks, bearer-key auth, saved reports, and local bulk job previews using one normalized signal format.

Partially supported

What this checks

  • The preview endpoint is `POST /api/v1/check` with `inputKind`, `text`, and optional claimed provider/model fields.
  • Bearer-key requests exercise the paid/API path and bypass anonymous preview quota.
  • Bulk workflow previews are available through `POST /api/bulk/jobs` and job history exports.
  • Client-side-only privacy claims do not apply to API submissions.

What this does not prove

  • API checks require server-side retention and abuse controls.
  • Some detector adapters may be unavailable for API until evaluated.
  • Usage must avoid unsupported accuracy claims.

FAQ

  • Can this prove whether content was written by AI?

    No. AI Detect reports signals such as provenance metadata, watermark support status, and statistical text risk. It does not claim legal or authorship proof.

  • Does text leave my browser during a local check?

    Browser-default checks run local text features and provenance checks after you press Check. Server enhanced checks are separate and will be labelled before use.

  • Why can a result be unknown?

    Many providers do not expose public watermark detectors, and metadata can be absent or stripped. Unknown is a valid result when no reliable public signal exists.

Provider registry

Current watermark support

Support JSON
ProviderText watermarkDetectionFile provenanceTamper riskUpdatedSources
Anthropic / Claudeanthropic, claude, claude-sonnet, claude-opusplannedSynthID-Text-style statistical watermarkplannedAnthropic has described Claude text watermarking and says a detection API is planned, but no public Claude verification adapter is connected yet.C2PAsupported_when_presentweak against rewriteClaude text watermarking is described as a statistical wording signal. Substantial rewriting can weaken it; C2PA file credentials are a separate metadata/provenance layer that can be stripped or lost.2026-08-17
Google / Geminigoogle, gemini, synthidresearchSynthID TextavailableSynthID Text is documented for compatible generation pipelines, but it is not a universal detector for arbitrary pasted text.n/aweak against rewriteSynthID-class text signals are statistical and should be treated as probabilistic. Media and file provenance can involve separate metadata or pixel-domain marks with different removal risks.2026-08-12

API preview

POST /api/v1/check

The MVP API accepts text checks, stores a saved report, and returns the same normalized signal record used by the web checker.

Single check request

curl -X POST https://your-domain.example/api/v1/check \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer aid_sk_..." \
  -d '{
    "inputKind": "text",
    "text": "Paste the content to review.",
    "claimedProvider": "openai",
    "claimedModel": "gpt"
  }'

Single check response

{
  "ok": true,
  "report": {
    "requestId": "v1_...",
    "overallSignal": "medium",
    "watermarkSignal": "unsupported",
    "provenanceSignal": "unsupported",
    "aiTextSignal": "medium",
    "limitations": []
  },
  "reportUrl": "/reports/v1_...",
  "apiReportUrl": "/api/reports/v1_...",
  "apiKey": {
    "id": "key_...",
    "label": "CMS integration",
    "keyPreview": "...abc123"
  }
}

Bulk job request

curl -X POST https://your-domain.example/api/bulk/jobs \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer aid_sk_..." \
  -d '{
    "items": [
      {
        "itemId": "cms-001",
        "text": "First article excerpt to review.",
        "claimedProvider": "openai",
        "claimedModel": "gpt"
      },
      {
        "itemId": "cms-002",
        "text": "Second article excerpt to review."
      }
    ]
  }'

Bulk job response

{
  "ok": true,
  "job": {
    "jobId": "bulkjob_...",
    "status": "completed",
    "accepted": 2,
    "processed": 2,
    "apiKey": {
      "id": "key_...",
      "label": "CMS integration",
      "keyPreview": "...abc123"
    },
    "rows": [
      {
        "itemId": "cms-001",
        "ok": true,
        "reportUrl": "/reports/bulk_...",
        "overallSignal": "medium"
      }
    ]
  },
  "jobUrl": "/api/bulk/jobs/bulkjob_..."
}
Input`inputKind: "text"` and `text` are required. `claimedProvider` and `claimedModel` are optional.
LimitsAnonymous preview checks share local quota; bearer-key checks exercise the API workflow.
PersistenceEach successful API check creates a saved report available through `reportUrl` and `apiReportUrl`.
KeysCreate local hashed preview keys at `/settings/api-keys`; the full secret is shown once.
Bulk Jobs`POST /api/bulk/jobs` creates a local job; `GET /api/bulk/jobs/:jobId` retrieves the full record.
Exports`GET /api/bulk/jobs` lists recent jobs. Add `?format=csv` for operator exports.
Reports`GET /api/reports/:requestId` returns saved detector results without the original submitted text.
Support`GET /api/watermark-support` returns current provider watermark status and source-backed limits.
SetupManage preview keys in API settings and inspect usage in the dashboard.

Workflow upgrade

Need repeatable reviews?

Move from one-off checks to saved reports, batch review, and API-ready signal records when the workflow needs it.

Related checks