# Diarization · who spoke when — neuraldeep.tech API

> One section of the machine-readable reference. All sections: https://neuraldeep.tech/llms.txt · everything in one file: https://neuraldeep.tech/llms-full.txt

Base URL: `https://api.neuraldeep.tech/v1`
Auth: `Authorization: Bearer $YOUR_KEY`

With the same key — speaker labelling under `/v1/audio/diarize`: audio → "who spoke when" segments. The **Nemotron-3-Diarization** model on our GPUs, up to **8 speakers**, any audio format (WAV, MP3, OGG, M4A and more), files up to 500 MB and 4 hours. It does not transcribe: for a speaker-labelled transcript, join the result with `/v1/audio/transcriptions` by time. A separate bucket — the limit is counted in **minutes of audio**, rounded up.

```bash
curl -s https://api.neuraldeep.tech/v1/audio/diarize \
  -H "Authorization: Bearer $NEURALDEEP_API_KEY" \
  -F file=@meeting.mp3
```

Response:

```json
{"duration": 61.0, "num_speakers": 2, "minutes_charged": 2,
 "segments": [{"speaker": "SPEAKER_0", "start": 1.1, "end": 5.75},
              {"speaker": "SPEAKER_1", "start": 17.28, "end": 21.26}]}
```

Speakers are numbered in order of first appearance. Form fields: `response_format=rttm` returns standard RTTM, `min_duration=0.3` drops fragments shorter than 0.3 s. Remaining minutes: `GET /v1/audio/diarize/quota`; the `day` and `month` blocks have `used`, `limit`, `remaining` and `reset_at`, like search, OCR and images.

**Input limits and errors.** Empty file `400`, file over 500 MB `413`, recording longer than 4 hours `413`, undecodable audio `400`, a `response_format` other than `json` or `rttm` gives `400`. The response has to fit into 300 seconds. Minutes used up: `429` with `X-Quota-Pool`, `X-Quota-Scope`, `X-Quota-Reset` and `Retry-After`. An empty wallet on a key in Wallet mode: `402`. A failure on our side: `502`.

The model was not trained on Russian; on Russian speech our speaker and turn labelling matched the reference, but the first seconds of a turn are sometimes left without a speaker.
