---
title: "Create a batch deepfake detection job"
method: POST
path: "/detect/batch"
tags: ["deepfakeDetection"]
---

# Create a batch deepfake detection job

`POST /detect/batch`

Submit up to 50 files in a single request and process them as a single logical
group. Returns HTTP 202 with a batch UUID; each file is analyzed in the
background and individual results are available via `GET /detect/{uuid}` for
each entry in `detect_uuids`.

Two intake methods:

- **Multiple media files** — repeated `files[]` form fields.
- **Single zip archive** — a single `file` form field whose value is a `.zip`
  containing the media files. Non-media entries are skipped.

Provide one of `files[]` or `file=<...>.zip` per request. Synchronous mode
(`Prefer: wait`) is not supported and returns 400 if sent.

Constraints:

- Maximum 50 files per batch.
- Maximum 500 MB total upload size across all files.
- Allowed file types match `POST /detect`'s direct-upload allowlist.
- All-or-nothing billing: if the team's wallet cannot cover the projected cost
  for every file, the request is rejected with 402 and no detects are created.

## Headers

- `Authorization` string, required

## Response `202`

Batch accepted

- DeepfakeDetectionCreateDetectBatchResponse202
  - `success` boolean
  - `item` DetectBatch — Aggregate state for a batch detection job. Returned by `POST /detect/batch` and `GET /detect/batch/{uuid}`.
    - `uuid` string — Batch UUID.
    - `status` 'processing' | 'completed' | 'partially_failed' | 'failed' — Aggregate status across all child detects. - `processing` — at least one child detect is still running. - `completed` — every child detect completed successfully. - `partially_failed` — at least one succeeded and at least one failed. - `failed` — every child detect failed.
    - `total_files` integer — Number of files in the batch (1–50).
    - `completed_count` integer — Number of child detects that have completed successfully.
    - `failed_count` integer — Number of child detects that have failed.
    - `created_at` string, date-time
    - `detect_uuids` string[] — UUIDs of the child detects. Use `GET /detect/{uuid}` to retrieve per-file results.

## Other responses

- `400` — Invalid batch request (missing files, both file and files[] supplied, file count or size exceeded, unsupported file type, or `Prefer: wait` header sent)
- `402` — Insufficient balance for the projected batch cost. Response `details` includes per-file estimates.
- `403` — Intelligence detect limit reached (Default plan).

## Changes

- **2026-08-22** `e93597a6b425` — 2 warning
  - the `frame_length` request property's max was set to `4.00`
  - the `frame_length` request property's min was set to `1.00`
- **2026-07-26** `5e92bebbaf1f` — 2 info
  - added the new optional request property `face_only`
  - added the new optional request property `infer_from_intelligence`

[Change history](https://skmtc.dev/resemble/apis/api-reference/changes/detect/batch/post.md)

---

[API](https://skmtc.dev/resemble/apis/api-reference.md) · [All operations](https://skmtc.dev/resemble/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/resemble/api-reference/revisions/e93597a6b425/schema)
