Know who’s talking. Control who’s listening.

Detect API: find out if a voice recording is AI‑generated.Protect API: stop AI from transcribing a recording, while people can still understand it.

1,000 free credits to start. No card needed.

200 OKapplication/json · 412 ms

Two endpoints.
That’s the whole API.

Send a file, get an answer. Audio is processed in memory and never stored.

POST/v1/detect

Is this voice a person, or AI?

The model behind Voice Check, as an API. Send a call, a voice note or a clip and get a verdict with a confidence, plus a second-by-second timeline.

  • Catches cloned and synthetic voices from today’s generators
  • Tells speech from music, noise and silence
  • Timeline shows where in the recording the voice changes
  • Recordings up to 30 minutes long

POST/v1/protect

Keep recordings off the record.

The engine behind Off the Record, for files. You get back a recording people can still understand, while AI transcription gets little or nothing usable from it.

  • Speech stays clear to listeners
  • Returns WAV at the original sample rate
  • Three strengths: balanced, strong, max
  • Up to 5 minutes per request

Built for people who handle voices.

detect

Trust & safety

Flag cloned voices in uploads, voice notes and livestream clips before they spread.

detect

Fraud & support lines

Check recorded calls for synthetic callers posing as customers or executives.

detect

Newsrooms

Check a viral clip before you run it, and see which seconds sound generated.

protect

Interviews & podcasts

Share recordings people can listen to that AI notetakers can’t turn into text.

Pay for what you check. Start free.

Credits work for both endpoints and never expire. 1 credit is 1 second of audio checked; protecting costs 3 credits a second.

Free

To try it out

$0

1,000 credits, once
For new accounts

  • ≈ 17 minutes checked, or 6 protected
  • Both endpoints, every format
  • No card needed
Get a free key

Starter

For side projects

$10once

50,000 credits
$0.012 a minute checked

  • ≈ 14 hours checked, or 5 protected
  • Credits never expire
  • Invoices with your company details
Buy Starter

Scale

For high volume

$200once

1,500,000 credits
$0.008 a minute checked

  • ≈ 417 hours checked, or 139 protected
  • Credits never expire
  • Invoices with your company details
Buy Scale

Enterprise

Volume pricing, higher rate limits, streaming and private deployments, and support from the team that builds it.

Contact us

Detect: 1 credit / second · Protect: 3 credits / second · Billed per started second · Prices in USD; tax may apply at checkout

API reference.

Quickstart

  1. Sign in to the console with your email and create an API key.
  2. Send a recording to /v1/detect or /v1/protect.
export WM_API_KEY="wm_live_…"

curl https://api.weirdmachines.ai/v1/detect \
  -H "Authorization: Bearer $WM_API_KEY" \
  -F file=@voice-note.m4a

The base URL is https://api.weirdmachines.ai/v1. Every response is JSON, except a successful /v1/protect, which is the audio itself.

Authentication

Pass your key as a bearer token on every request. Keys start with wm_live_. Create, name and revoke them in the console; a key is shown once, when you create it.

Authorization: Bearer wm_live_…

Keep keys on your server. Anyone with a key can spend its account’s credits.

POST/v1/detect

Tells whether the voice in a recording is a person or AI. The recording is scored in overlapping 3-second windows; the verdict weighs every window that has a voice in it.

Request

Send the file as multipart/form-data in a field named file, or as the raw request body with any Content-Type.

curl https://api.weirdmachines.ai/v1/detect \
  -H "Authorization: Bearer $WM_API_KEY" \
  --data-binary @call.wav

Response

FieldDescription
verdict"ai", "human", or "no_voice" when no speech was found (music, noise, silence).
confidence0–1: how strongly the recording leans toward the verdict. null for no_voice.
scores.ai, scores.humanThe AI and human shares of the voiced windows, adding up to 1.
audioduration and voice_seconds in seconds, plus the input’s sample_rate and channels.
timeline[]One entry per window, a second apart: start, end, voice (0–1, how likely there’s a voice) and ai (0–1, null when the window is silent).
creditsCredits used by this request and remaining on the account.

Detection can make mistakes. Use it as one signal among others, and don’t base decisions that matter on it alone.

POST/v1/protect

Returns the recording protected from AI transcription. Sound quality drops somewhat, but people can still understand what’s said; transcription services get little or nothing usable from it.

Request

ParameterDescription
fileThe recording, as with /v1/detect.
strengthOptional, as a query or form field: balanced (default), strong or max. Stronger levels cost more sound quality.
curl "https://api.weirdmachines.ai/v1/protect?strength=strong" \
  -H "Authorization: Bearer $WM_API_KEY" \
  -F file=@interview.mp3 \
  -o interview-protected.wav

Response

A 16-bit mono WAV (audio/wav) at the input’s sample rate (up to 48 kHz), the same length as the input. Details come in headers:

HeaderDescription
X-Request-IdThe request’s id, for support.
X-Audio-DurationLength in seconds.
X-Audio-Sample-RateThe WAV’s sample rate.
X-Credits-Used, X-Credits-RemainingCredits for this request, and what’s left.

Protection makes recordings much harder to transcribe; it isn’t a guarantee against every system. Heavy re-encoding, like low-bitrate phone codecs, weakens it.

GET/v1/account

Your balance and rates.

{
  "object": "account",
  "credits": { "total": 50820, "free": 820, "paid": 50000, "paid_purchased": 50000, "free_granted": 1000 },
  "rates": { "detect_per_second": 1, "protect_per_second": 3 }
}

New accounts start with 1,000 free credits, once. Credits never expire, and free ones are used before bought ones.

Errors

Errors are JSON with a stable type and a message you can show to people.

{ "error": { "type": "insufficient_credits", "message": "This needs 94 credits and you have 12. Buy more in the console", "credits_needed": 94, "credits_remaining": 12 } }
StatusTypeMeaning
400invalid_requestMissing file or a bad parameter.
401unauthorizedMissing, wrong or revoked key.
402insufficient_creditsNot enough credits; nothing was charged.
413file_too_large, audio_too_longOver 25 MB, or longer than the endpoint takes.
415unsupported_audioThe file couldn’t be read as audio.
422no_audioThe file has no audio in it.
429rate_limitedOver 60 requests a minute for this key.
5xxinternal_errorOur side. Retry with backoff; you weren’t charged.

Limits & formats

  • Formats: WAV, MP3, M4A/AAC, FLAC, OGG Vorbis, and the audio track of MP4 and MOV files. Stereo is mixed down to mono.
  • Size: up to 25 MB per request.
  • Length: up to 30 minutes for /v1/detect, 5 minutes for /v1/protect.
  • Rate: 60 requests a minute per key. Need more? Ask us.
  • Billing: per started second of audio, at least 1 second. Failed requests are free.

Privacy

Audio is decoded and processed in memory, then discarded. We never store it, listen to it, or train on it. For each request we keep only its kind, length, cost and, for detection, the verdict, so you can see your usage; that’s deleted after 90 days.

Your first 1,000 credits are on us.

Sign in with your email, create a key, and make your first call in a minute.