API Documentation

The nepper.io API returns an Authenticity Report for one or more images: a 0-100 fake score, a verdict, and weighted labels with a transparent per-detector breakdown.

Authentication

Every request to the API needs your secret key in the Authorization header. Create and rotate your key in the dashboard. Keys are shown once - store them securely and never expose them in client-side code.

curl -X POST https://nepper.io/api/v1/analyze \
  -H "Authorization: Bearer nk_live_xxxxxxxxxxxx" \
  -H "content-type: application/json" \
  -d '{ "images": ["https://example.com/a.jpg"] }'

Endpoint

POST/api/v1/analyze

Accepts up to 10 images, 10MB each. Send application/json or multipart/form-data.

Request

JSON (URLs or base64)

curl -X POST https://nepper.io/api/v1/analyze \
  -H "Authorization: Bearer nk_live_xxxxxxxxxxxx" \
  -H "content-type: application/json" \
  -d '{
    "images": [
      "https://example.com/a.jpg",
      "data:image/png;base64,iVBOR..."
    ]
  }'

Multipart upload

Use the files field (repeatable). You can mix in images URL fields too.

curl -X POST https://nepper.io/api/v1/analyze \
  -H "Authorization: Bearer nk_live_xxxxxxxxxxxx" \
  -F "files=@./photo1.jpg" \
  -F "files=@./photo2.png" \
  -F "images=https://example.com/a.jpg"

Response

{
  "reports": [
    {
      "source": "https://example.com/a.jpg",
      "fakeScore": 72,
      "verdict": "likely_fake",
      "labels": [
        { "label": "ai_generated", "confidence": 0.9, "method": "metadata" }
      ],
      "signals": [
        { "detector": "metadata", "score": 0.9, "reason": "...", "labels": [] }
      ],
      "image": {
        "width": 1024, "height": 1024, "format": "png", "bytes": 12345,
        "hasExif": false, "hasXmp": false, "hasIcc": false, "hasC2pa": false
      }
    }
  ],
  "summary": { "count": 1, "flagged": 1, "errored": 0 }
}

Verdicts

VerdictFake score
likely_real0 - 39
suspicious40 - 64
likely_fake65 - 100

Labels

LabelMeaning
ai_generatedAI generated - Synthetic image likely produced by a generative model.
deepfakeDeepfake - Face appears manipulated or swapped.
influencerInfluencer - Reused image of a public figure / celebrity.
stock_photoStock photo - Stock or catalog photography rather than a personal photo.
reused_imageReused image - Image appears elsewhere online (reverse image search hit).
scam_profileScam profile - Matches a known scam-image database.
authenticAuthentic - No strong fake signals detected.

Rate limits

The API is rate limited per key. If you exceed it you'll receive a 429 with a Retry-After header.

PlanRequests / minImages / request
Free601
Pro (batch)6050
Public demo83

Free processes one image per request; Pro batches up to 50. Need higher limits? See pricing.