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
| Part | Value |
|---|---|
| Method and URL | POST https://api.spotaclone.xyz/api/v1/check |
| Body | multipart/form-data with one field file |
| Formats | .ogg, .opus, .m4a, .mp3, .wav, .webm, .aac, .amr |
| Max size | 15 MB |
| Auth header | X-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."
}
| Field | Type | Meaning |
|---|---|---|
verdict | "LIKELY_AI" | "LIKELY_REAL" | "UNSURE" | The decision. Treat UNSURE as “verify another way”, not as safe. |
headline, message | string | Plain-language summary you can show to end users. |
advice | string[] | Suggested next steps. |
signals | string[] | Human-readable notes on what influenced the result. |
confidence_band | "high" | "medium" | "low" | How strong the evidence was. |
language | string | null | Detected language code, when available. |
duration_s, processing_ms | number | Audio length and analysis time. |
plan | "free" | "personal" | "family" | "developer" | Plan that served the request. personal is the Plus plan; both developer plans report developer. |
remaining | number | null | Checks (or audio-minutes for developer) left in the period. |
audio_retained | false | Always false: audio is deleted after analysis. |
disclaimer | string | Show this alongside the result. |
Errors
| Status | Body | What 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 network | none | Retry 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.