SpotAClone
English
Check a voice noteCheck

AI voice detection API

One REST endpoint. Send an audio file, get back a verdict with plain-language advice, including an honest UNSURE when the evidence is weak.

Quick start

curl -X POST https://api.spotaclone.xyz/api/v1/check \
  -H "X-License-Key: $VOXSHIELD_API_KEY" \
  -F "file=@voice-note.opus"

Get an API key with the Developer plan. Without a key, requests use the free tier limits.

Request

PartValue
Method and URLPOST https://api.spotaclone.xyz/api/v1/check
Bodymultipart/form-data with one field file
Formats.ogg, .opus, .m4a, .mp3, .wav, .webm, .aac, .amr
Max size15 MB
Auth headerX-License-Key: <your key> (optional; omit for free tier)

Response (200)

{
  "verdict": "UNSURE",
  "headline": "We can't be sure about this voice",
  "message": "The clip is short and heavily compressed, so the signals are weak.",
  "advice": [
    "Call the person back on a number you already know."
  ],
  "signals": [
    "Very short clip (4.1 s)",
    "Strong codec compression"
  ],
  "confidence_band": "low",
  "language": "hi",
  "duration_s": 4.1,
  "processing_ms": 1830,
  "plan": "developer",
  "remaining": 1987,
  "audio_retained": false,
  "disclaimer": "Decision support only. A result is not proof of identity."
}
FieldTypeMeaning
verdict"LIKELY_AI" | "LIKELY_REAL" | "UNSURE"The decision. Treat UNSURE as “verify another way”, not as safe.
headline, messagestringPlain-language summary you can show to end users.
advicestring[]Suggested next steps.
signalsstring[]Human-readable notes on what influenced the result.
confidence_band"high" | "medium" | "low"How strong the evidence was.
languagestring | nullDetected language code, when available.
duration_s, processing_msnumberAudio length and analysis time.
plan"free" | "personal" | "family" | "developer"Plan that served the request. personal is the Plus plan; both developer plans report developer.
remainingnumber | nullChecks (or audio-minutes for developer) left in the period.
audio_retainedfalseAlways false: audio is deleted after analysis.
disclaimerstringShow this alongside the result.

Errors

StatusBodyWhat to do
402{"error":"quota_exceeded","message":"...","upgrade_url":"..."}Quota used up. Show the message and upgrade link, or wait for the next period.
413{"error":"...","message":"..."}File too large (over 15 MB).
415{"error":"...","message":"..."}Unsupported audio format.
422{"error":"...","message":"..."}Audio couldn't be analysed (for example silent, corrupt or too short).
5xx or networknoneRetry with exponential backoff. Never show a made-up result to users.

Limits

  • Free: 3 checks per day, no key.
  • Plus: 100 checks per month. Family: 400 checks per month across up to 5 devices.
  • Developer Starter: 2,000 audio-minutes per month. Developer Growth: 10,000 audio-minutes per month. Business: custom limits, contact us. If you receive HTTP 429, slow down and retry with backoff.

Languages and audio

The models are built for Indian languages and code-mixed speech over phone-quality and WhatsApp-compressed audio, and also handle English. The language field may be null when it can't be identified. Very short, noisy or heavily processed clips are more likely to return UNSURE. That is by design.

Activating a licence key

curl -X POST https://api.spotaclone.xyz/api/v1/license/activate \
  -H "Content-Type: application/json" \
  -d '{"license_key":"VX-XXXX-XXXX-XXXX"}'

Privacy

Audio is processed in memory and deleted immediately; audio_retained is always false. If you send end-user audio, tell your users and follow the law that applies to you (in India, the Digital Personal Data Protection Act, 2023). See our privacy policy and terms.

Questions? support@spotaclone.xyz

Frequently asked questions

Is there an SDK?

Not yet. The API is a single multipart POST, so any HTTP client works.

Can I use SpotAClone to automatically block callers?

We ask you not to use it as the sole basis to block or accuse a person. Use it as one signal alongside your own verification, and give people a way to appeal.

Do you store the audio we send?

No. Audio is analysed and deleted immediately, and the response always includes audio_retained: false.

Check a voice note