Content detection
Detect content
Checks whether the speech in an audio file, or in a video file's audio track, was generated by Inworld TTS. Send the file as multipart/form-data with a config part first and a file part second. The server reads the upload as a stream and answers once the whole file has arrived. Inworld does not store or log the file or its name.
/detection/v1/detectSend an audio or video file to check whether its speech was generated by Inworld TTS. The API is free to call with any API key. It covers the TTS-2 and TTS-2 Flash models. Other AI-generated speech can also score high, so read a high score as "AI-generated, likely by Inworld".
Inworld does not store or log the uploaded file or its name.
Send the upload
Send multipart/form-data with exactly two parts, in this order:
config: a JSON object such as{"audio": {"fileName": "clip.mp3"}}.file: the file to check.
The server reads the upload as a stream, so a file part sent before config is rejected with 400. Any other part is rejected too.
Read the score
probability is a detection score from 0 to 1. A higher score means the audio is more likely to have been generated by Inworld TTS. The field is absent when the server cannot score the file, usually because it holds less than 1 second of audio. Check whether probability is present rather than inferring it from the clip's length.
A score is evidence, not proof. Accuracy drops in these cases:
- Short clips.
- Phone-quality or heavily compressed audio. Narrowband audio, such as 8 kHz phone calls.
- Noise and editing. Background noise, music, or mixing with other recordings lowers the score.
Limits
| Limit | Value |
|---|---|
| File size | 25 MiB |
| Audio length | 5 minutes |
| Time to finish the upload | 2 minutes |
| Pause in the upload | 10 seconds |
| Uploads in progress per account | 4 |
An upload that pauses for 10 seconds or does not finish within 2 minutes is ended with 408. Retry it on a faster connection, or with a smaller file.
The server detects the format from the file's bytes, not its extension. It accepts WAV, MP3, OGG, FLAC, M4A, WebM and video containers (MP4, MOV, MXF), whose audio track it checks. Raw headerless PCM is not accepted.
What the content is. Send it as the first part, as JSON. Exactly one modality must be set; audio is the only one today.
Show child attributes
The content is an audio file, or a video file whose audio track is checked.
The file to check, sent after config. The server reads the format from the file's bytes, so the file needs a recognizable header: WAV, MP3, OGG, FLAC, M4A, WebM, or a video container (MP4, MOV, MXF), whose audio track is checked. Raw headerless PCM is not accepted. At most 25 MiB and 5 minutes of audio.