Voice security analysis

    Detect synthetic voices, assess behavioral risk, and verify liveness.

    How It Works

    1. Submit audio via POST /v1/voice-security — returns a job_id (typically already completed)
    2. Retrieve results via GET /v1/voice-security/{job_id}/result — returns security signals

    Request Body (multipart/form-data)

    ParameterTypeRequiredDescription
    filebinaryYesAudio file (WAV, MP3, OGG, FLAC, WebM)
    modelvalsea-voice-securityYes
    response_formatjson | verbose_jsonNoDefault: json

    Code Examples

    curl -X POST https://api.valsea.ai/v1/voice-security \
      -H "Authorization: Bearer YOUR_API_KEY" \
      -F "model=valsea-voice-security" \
      -F "file=@audio.wav"
    

    Response

    Submit Response (202)

    FieldTypeDescription
    job_idstringUnique job identifier
    statusstringcompleted (results ready)

    Minimal (json)

    FieldTypeDescription
    job_idstring
    statusstringcompleted
    synthetic_probabilitynumberProbability the voice is synthetic (0-1)
    behavioral_risknumberBehavioral risk score (0-1)
    liveness_statusverified | failed | scanningVoice liveness verification

    Verbose (verbose_json)

    Includes all fields from the minimal response, plus:

    FieldTypeDescription
    accentstringDetected accent (e.g. "singlish_en")
    emotions_detectedarrayDetected emotional signals
    transcriptstringTranscribed text from the audio
    raw_responseobjectRaw Modulate API response data

    Security Signals

    SignalRangeInterpretation
    synthetic_probability0-1< 0.5 = likely human, 0.5-0.7 = uncertain, > 0.7 = likely synthetic
    behavioral_risk0-1< 0.3 = low risk, 0.3-0.6 = moderate, > 0.6 = high risk
    liveness_statusenumverified = human, scanning = uncertain, failed = synthetic suspect

    Errors

    StatusDescription
    401Missing or invalid API key
    402Insufficient credits
    404Job not found or expired
    503Service not configured

    Was this page helpful?