# 4.2 Delete batch

<mark style="color:red;">`DELETE`</mark> `/documentClassification/deleteBatch`

This endpoint permanently deletes a specific batch from a document classification process.

You must provide both the `classificationId` and the `batchId` in the request body. This action is irreversible and will remove the selected batch along with all results and files associated with it.

Use this endpoint when you need to clean up or remove a specific batch without affecting the overall classification. Separate endpoints are available for deleting entire classifications or individual files.

## Server URL

```
https://api.extracta.ai/api/v1
```

## Headers

| Name          | Value              |
| ------------- | ------------------ |
| Content-Type  | `application/json` |
| Authorization | `Bearer <token>`   |

## Body

<table><thead><tr><th width="183">Name</th><th width="135">Type</th><th width="164">Required</th><th>Description</th></tr></thead><tbody><tr><td><code>classificationId</code></td><td>string</td><td><code>true</code></td><td>The classification id.</td></tr><tr><td><code>batchId</code></td><td>string</td><td><code>true</code></td><td>The batch id.</td></tr></tbody></table>

## Body Example

```json
{
    "classificationId": "classificationId",
    "batchId": "batchId"
}
```

## Code Example

{% tabs %}
{% tab title="JavaScript" %}

```javascript
const axios = require('axios');

async function deleteBatch(token, classificationId, batchId) {
    const url = "https://api.extracta.ai/api/v1/documentClassification/deleteBatch";

    try {
        const response = await axios.delete(url, {
            headers: {
                'Content-Type': 'application/json',
                'Authorization': `Bearer ${token}`
            },
            data: {
                classificationId: classificationId,
                batchId: batchId
            }
        });

        return response.data;
    } catch (error) {
        throw error.response ? error.response.data : new Error('An unknown error occurred');
    }
}

async function main() {
    const token = 'apiKey';
    const classificationId = 'classificationId';
    const batchId = 'batchId';

    try {
        const response = await deleteBatch(token, classificationId, batchId);
        console.log("Batch Deleted:", response);
    } catch (error) {
        console.error("Failed to delete batch:", error);
    }
}

main();
```

{% endtab %}

{% tab title="Python" %}

```python
import requests

def delete_batch(token, classification_id, batch_id):
    url = "https://api.extracta.ai/api/v1/documentClassification/deleteBatch"
    headers = {
        "Content-Type": "application/json",
        "Authorization": f"Bearer {token}"
    }
    payload = {
        "classificationId": classification_id,
        "batchId": batch_id
    }

    try:
        response = requests.delete(url, json=payload, headers=headers)
        response.raise_for_status()
        return response.json()
    except requests.RequestException as e:
        print(f"Failed to delete classification: {e}")
        return None

# Example usage
if __name__ == "__main__":
    token = "apiKey"
    classification_id = "classificationId"
    batch_id = "batchId"

    response = delete_batch(token, classification_id, batch_id)
    if response:
        print("Batch Deleted:", response)
    else:
        print("Failed to delete batch.")
```

{% endtab %}

{% tab title="PHP" %}

```php
<?php

function deleteBatch($token, $classificationId, $batchId) {
    $url = 'https://api.extracta.ai/api/v1/documentClassification/deleteBatch';

    // Initialize cURL session
    $ch = curl_init($url);

    // Prepare the payload
    $payload = json_encode([
        'classificationId' => $classificationId,
        'batchId' => $batchId
    ]);

    // Set cURL options
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'DELETE');
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Content-Type: application/json',
        'Authorization: Bearer ' . $token,
    ]);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

    try {
        $response = curl_exec($ch);

        if (curl_errno($ch)) {
            throw new Exception('Curl error: ' . curl_error($ch));
        }

        return $response;
    } catch (Exception $e) {
        return 'Error: ' . $e->getMessage();
    } finally {
        curl_close($ch);
    }
}

// Example usage
$token = 'apiKey';
$classificationId = 'classificationId';
$batchId = 'batchId';

try {
    $response = deleteBatch($token, $classificationId, $batchId);
    echo "Batch Deleted: " . $response;
} catch (Exception $e) {
    echo "Failed to delete batch: " . $e->getMessage();
}

?>
```

{% endtab %}
{% endtabs %}

## Responses

{% tabs %}
{% tab title="200" %}

```json
{
    "status": "success",
    "message": "Batch deleted"
}
```

{% endtab %}

{% tab title="400" %}

```json
{
    "status": "success",
    "message": "Batch deleted"
}
```

{% endtab %}

{% tab title="500" %}

```json
{
    "status": "error",
    "message": "Internal server error"
}
```

{% endtab %}
{% endtabs %}
