---
title: "Run velma-2 batch analysis on an uploaded audio file."
method: POST
path: "/api/velma-2-batch"
---

# Run velma-2 batch analysis on an uploaded audio file.

`POST /api/velma-2-batch`

## Response `200`

Batch processing completed.

- BatchResponse
  - `duration_ms` integer, required
  - `clips` Clip[], required
    - `clip_uuid` string, uuid, required
    - `text` string, required
    - `start_ms` integer, required
    - `duration_ms` integer, required
    - `speaker_label` string, required
    - `language` string, required
    - `emotion` string, nullable — Predicted emotion label for the clip, or null when the emotion signal is not enabled for the request.
    - `accent` string, nullable — Predicted accent label for the clip, or null when the accent signal is not enabled for the request.
    - `deepfake_score` number, double, nullable
  - `conversation_type_pick` ConversationTypePick
    - `conversation_type_uuid` string, uuid, required
    - `name` string, required
    - `confidence` number, double, required
    - `selection_source` 'inferred' | 'auto_selected_single_option' | 'default', required
    - `detail` string, required
    - `reasoning` string, nullable
  - `participant_role_picks` ParticipantRolePick[]
    - `speaker_label` string, required
    - `participant_role_uuid` string, uuid, required
    - `name` string, required
    - `confidence` number, double, required
    - `selection_source` 'inferred' | 'auto_selected_single_option' | 'default', required
    - `detail` string, required
    - `reasoning` string, nullable
  - `behaviors` BehaviorDetection[], required
    - `behavior_uuid` string, uuid, required
    - `behavior_name` string, required
    - `speaker_label` string, nullable, required
    - `detected` boolean, required
    - `confidence` number, double, nullable
    - `evidence_clip_uuids` string[]
    - `definitive_clip_uuid` string, uuid, nullable
    - `reasoning` string, nullable
  - `topics` string[]
  - `topic_sentiments` TopicSentiment[]
    - `topic` string, required
    - `speaker_label` string, required
    - `sentiment_score` number, double, required
    - `sentiment_label` string, required
  - `summary` string, nullable

## Other responses

- `400` — Bad request - The submitted audio was rejected: an unsupported file extension, an empty file, or a request that could not be processed.
- `403` — Forbidden - the request is not permitted
- `422` — Unprocessable Entity. Either the `config` value was malformed (invalid JSON, an invalid preset reference, or a definition missing a required field), returning an ErrorResponse body; or a required request field was missing or the wrong type (for example, the `X-API-Key` header or the `upload_file` part), returning the framework HTTPValidationError body.
- `429` — Too many requests - the request could not be completed due to insufficient credits
- `500` — Internal server error
- `502` — Bad gateway - the request could not be validated or completed

---

[API](https://skmtc.dev/modulate/apis/velma-2-accent-batch-api.md) · [All operations](https://skmtc.dev/modulate/apis/velma-2-accent-batch-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/modulate/velma-2-accent-batch-api/revisions/b4c9ce648efa/schema)
