---
title: "Perceive Batch Cancel"
method: DELETE
path: "/v2/perceive/batch/{job_id}"
tags: ["v2", "v2-perceive"]
---

# Perceive Batch Cancel

`DELETE /v2/perceive/batch/{job_id}`

## Request

- Base URL: `https://api.enconvert.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.enconvert.com/v2/perceive/batch/{job_id}`
- Auth: none declared

Cancel a batch (idempotent). The worker stops between URLs; already
completed URLs keep their artifacts. Project-scoped 404.

## Path parameters

- `job_id` string, required

## Headers

- `X-API-Key` string, nullable
- `authorization` string, nullable

## Response `200`

Successful Response

- PerceiveBatchResponse: Shared by POST (inline 200 / queued 202) and the status GET. ``items`` carry one PerceiveResponse per URL: fully populated on the inline path and on status polls; empty on the initial 202 (poll the status endpoint with ``job_id``). ``zip`` appears once a ``output_mode="zip"`` batch has bundled its artifacts.
  - `job_id` string, required
  - `status` 'queued' | 'processing' | 'completed' | 'failed' | 'partial' | 'canceled', required
  - `output_mode` 'manifest' | 'zip'
  - `total` integer, required
  - `completed` integer
  - `failed` integer
  - `pending` integer
  - `zip` OutputArtifact: A rendered output stored in Spaces, addressed by signed URL only.
    - `url` string, nullable: Pre-signed download URL (15 min).
    - `object_key` string, required
    - `size_bytes` integer
    - `content_type` string
    - `expires_in` integer
  - `items` PerceiveResponse[]
    - `operation_id` string, required
    - `status` 'queued' | 'processing' | 'completed' | 'failed', required
    - `url` string, required
    - `url_final` string, nullable
    - `content_hash` string, nullable
    - `status_code` integer, nullable: HTTP status of the final main-document response (e.g. 200, 404). None when the engine could not observe it.
    - `render_quality` number, nullable: 0.0-1.0; populated by the F.7 scorer.
    - `deductions` object: Named render-quality deductions that fired for this render (e.g. {'http_error': 0.7}). Empty on a clean render.
    - `is_blocked` boolean: True when the scorer judged the render an anti-bot challenge or WAF block page. A block with no page content behind it returns 200 with this flag set and outputs={}.
    - `billed` boolean: Whether this operation consumed one op from the monthly quota. False for blocked reads and for renders whose deductions include http_error or login_wall; cache hits bill.
    - `options_echo` object, nullable: Echo of the request options the server honoured (secrets redacted to booleans), so a caller can verify what was actually applied.
    - `cache_hit` boolean
    - `outputs` object
    - `structured` object, nullable
    - `extraction_tier` 'heuristic' | 'css' | 'llm', nullable
    - `tokens` PerceiveTokens
      - `input` integer
      - `output` integer
    - `cost_cents` number
    - `duration_ms` integer, nullable
    - `error` string, nullable
    - `warnings` string[]
  - `warnings` string[]

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/enconvert/apis/conversion-api.md) · [All operations](https://skmtc.dev/enconvert/apis/conversion-api/llms.txt) · [OpenAPI document](https://skmtc.dev/enconvert/apis/conversion-api/revisions/b8c820393569?raw)
