VivaGuard · isAI API

Is this voice AI?

isAI detects whether a voice recording was AI-generated by ChatGPT, Claude, or Gemini. Send audio, get a verdict — AI detected, human review, or no AI detected — with a confidence level. On-device, zero egress, audio never stored.

Base URL

https://isai-501449824361.asia-south1.run.app

Content-Type: multipart/form-data

Authentication

Every /api/* call (except /api/health) requires your API key, sent as either header:

x-api-key: <your-key>
Authorization: Bearer <your-key>

Keys are per-customer and can be rotated or revoked. Keep them server-side — never ship a key in client code.

POST  /api/isai

Classify one audio recording.

Request — multipart/form-data

fieldrequirednotes
fileyesthe audio clip

Formats: mp3 · wav · m4a · mp4 · ogg · flac · aac · webm

Input limits

limitvaluebehaviour
Min length≥ 0.5 sshorter → 400. For a reliable verdict send ≥ 3–4 s of speech.
Max size50 MBlarger → 413. ≈ 20–50 min depending on bitrate.
Best rangeunder ~2 minthe whole clip is analysed, but the pass that detects AI spliced into part of a longer answer scans the first 120 s.

Audio is resampled to 16 kHz mono internally. A candidate's spoken answer (≈30 s–2 min) sits comfortably in the ideal range.

Response — 200 application/json

{
  "is_ai": false,
  "confidence": "high",
  "ai_score": 35,
  "advisory": "No AI-generated voice detected.",
  "explanation": "No AI-generated voice was detected in this recording.",
  "mixed": false,
  "filename": "answer.m4a"
}
fieldtypemeaning
is_aibooltrue = an AI-generated voice (ChatGPT / Claude / Gemini) was detected
confidencestringhigh/medium/low when is_ai; review for borderline; high/low on a clear result (confidence that no AI-generated voice was detected)
ai_scoreint0–100 AI-likelihood score≥70 AI detected · 50–69 human review · <50 clear. Use it to rank results or set your own cutoff (see note below).
advisorystringone-line customer-facing summary
explanationstringshort human-readable detail
mixedboolAI speech spliced into an otherwise human answer
filenamestringecho of the uploaded name

Verdict guide

what you seemeaningsuggested action
AI DETECTED is_ai:trueAI-generated voice (ChatGPT / Claude / Gemini)treat the answer as AI-assisted
HUMAN REVIEW confidence:"review"borderline, possible AI voiceroute to a human reviewer
NO AI DETECTED clearno AI-generated voice detectednone
A "no AI detected" result means no ChatGPT / Claude / Gemini-generated speech was detected — it is not positive proof the voice is human. AI from other tools, or a heavily disguised voice, may not be flagged. Use isAI as one corroborating signal, not the sole decision.

About ai_score

ai_score is a 0–100 indicator that always agrees with the verdict:

ai_scoreverdict
70–100AI DETECTED
50–69HUMAN REVIEW
0–49NO AI DETECTED

Use it to rank recordings or apply your own cutoff — e.g. escalate anything ≥ 60.

It is an ordinal indicator, not a calibrated probability. A score of 72 does not mean "72% likely AI", and small gaps (68 vs 72) are not meaningful — real-world recording conditions (microphone, room, phone codec) move the score more than that. Treat the bands as the signal and the exact number only for ranking.

Errors

statuswhen
400no file, unsupported audio, or too short (< 0.5 s)
401missing or invalid API key
403license invalid/expired
413file larger than 50 MB
429rate limit exceeded — slow down and retry
500internal error

Rate limit: requests per key per minute (default 120). Retry a 429 after a short backoff.

GET  /api/health

No auth. Returns service status, version, and license validity.

{ "status":"healthy", "service":"isai", "version":"1.4.2",
  "auth_required":true, "egress":"none", "license":{ "valid":true } }

Example

curl -X POST \
  -H "x-api-key: $ISAI_KEY" \
  -F "file=@candidate-answer.m4a" \
  https://isai-501449824361.asia-south1.run.app/api/isai
{ "is_ai": true, "confidence": "high",
  "advisory": "Confirmed AI voice.",
  "explanation": "Voice characteristics match AI-generated speech.",
  "mixed": false, "filename": "candidate-answer.m4a" }
Privacy: audio is processed in memory and never written to disk. No egress — the recording does not leave the service.