Extracta.ai
DashboardJoin Discord
  • extracta.ai
    • Introduction
    • Overview
  • API Reference
    • 🔓Authentication
    • 📁Supported File Types
  • Data Extraction - API
    • đŸ’ģAPI Endpoints - Data Extraction
      • 1. Create extraction
      • 2. View extraction
      • 3. Update extraction
      • 4. Delete extraction
      • 5. Upload Files
      • 6. Get results
    • Extraction Details
      • 🌎Supported Languages
      • âš™ī¸Options
      • 📋Fields
    • Receiving Batch Results
      • Polling vs Webhook
      • How to use the Webhook
    • đŸ•šī¸Postman Integration
  • Document Classification - API
    • đŸ’ģAPI Endpoints - Document Classification
      • 1. Create classification
      • 2. View classification
      • 3. Update classification
      • 4. Delete data
        • 4.1 Delete classification
        • 4.2 Delete batch
        • 4.3 Delete files
      • 5. Upload Files
      • 6. Get results
    • Classification Details
      • 📄Document Types
  • Documents
    • Custom Document
    • Resume / CV
    • Contract
    • Business Card
    • Email
    • Invoice
    • Receipt
    • Bank Statement
  • Support
    • 💁Tutorials
    • đŸŸĸAPI Status
  • Contact
    • 📧Contact Us
    • ❓FAQ
Powered by GitBook
On this page
  • Server URL
  • Headers
  • Body
  • Code Example
  • Responses

Was this helpful?

  1. Document Classification - API
  2. API Endpoints - Document Classification

5. Upload Files

POST /documentClassification/deleteFiles

This endpoint enables users to upload files to a specific document classification process.

If a batchId is provided in the request, the uploaded files will be added to that existing batch. If batchId is omitted, a new batch will be automatically created for the files under the specified classificationId.

Files must be uploaded using the multipart/form-data content type, which is required for binary file uploads such as PDFs, images, or scanned documents. Ensure the classificationId is valid, and that any provided batchId already exists within the classification context.

Server URL

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

Headers

Name
Value

Content-Type

multipart/form-data

Authorization

Bearer <token>

Body

Name
Type
Required
Description

classificationId

string

true

Unique identifier for the extraction.

batchId

string

false

The ID of the batch to add files to.

files

multipart

true

For a seamless classification process, please ensure your documents are in one of our supported formats. Check our Supported File Types page for a list of all formats we currently accept and additional details to prepare your files accordingly.

Code Example

Note for PHP Users: Currently, the /uploadFiles endpoint supports uploading only one file per request. Please ensure you submit individual requests for each file you need to upload.

const fs = require('fs');
const axios = require('axios');
const FormData = require('form-data');

async function uploadFilesToClassification(token, classificationId, files, batchId = null) {
    const url = "https://api.extracta.ai/api/v1/documentClassification/uploadFiles";
    let formData = new FormData();

    formData.append('classificationId', classificationId);
    if (batchId) {
        formData.append('batchId', batchId);
    }

    files.forEach(file => {
        formData.append('files', fs.createReadStream(file));
    });

    try {
        const response = await axios.post(url, formData, {
            headers: {
                ...formData.getHeaders(),
                'Authorization': `Bearer ${token}`
            }
        });

        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 files = ['test_1.pdf', 'test_2.jpg'];
    const batchId = null; // or specify an existing batchId if needed

    try {
        const response = await uploadFilesToClassification(token, classificationId, files, batchId);
        console.log("Upload Response:", response);
    } catch (error) {
        console.error("Failed to upload files:", error);
    }
}

main();
import requests
import mimetypes

def upload_files_to_classification(token, classification_id, files, batch_id=None):
    url = "https://api.extracta.ai/api/v1/documentClassification/uploadFiles"
    headers = {"Authorization": f"Bearer {token}"}

    # Prepare the files for uploading
    file_streams = [
        (
            "files",
            (
                file,
                open(file, "rb"),
                mimetypes.guess_type(file)[0] or "application/octet-stream",
            ),
        )
        for file in files
    ]
    
    payload = {"classificationId": classification_id}
    if batch_id is not None:
        payload["batchId"] = batch_id

    try:
        response = requests.post(url, files=file_streams, data=payload, headers=headers)
        response.raise_for_status()
        return response.json()
    except requests.HTTPError as e:
        if response.status_code >= 400:
            try:
                print("Server returned an error:", response.json())
            except Exception:
                print("Server returned an error:", response.text)
        else:
            print(f"HTTP error occurred: {e}")
    except requests.RequestException as e:
        print(f"Failed to upload files: {e}")
    except Exception as e:
        print(f"An unexpected error occurred: {e}")
    return None

# Example usage
if __name__ == "__main__":
    token = 'apiKey'
    classification_id = 'classificationId'
    files = ['test_1.pdf', 'test_2.jpg']
    batch_id = None  # or specify an existing batch ID if needed

    response = upload_files_to_classification(token, classification_id, files, batch_id)
    if response:
        print("Upload response:", response)
    else:
        print("Upload failed.")
<?php

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

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

    // Prepare the payload
    $payload = [
        'classificationId' => $classificationId,
        'files' => new CURLFile($filePath, mime_content_type($filePath), basename($filePath))
    ];

    if ($batchId !== null) {
        $payload['batchId'] = $batchId;
    }

    // Set cURL options
    curl_setopt($ch, CURLOPT_POST, 1);
    curl_setopt($ch, CURLOPT_POSTFIELDS, $payload);
    curl_setopt($ch, CURLOPT_HTTPHEADER, [
        'Authorization: Bearer ' . $token,
        'Content-Type: multipart/form-data'
    ]);
    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 = 'yourClassificationIdHere';
$filePath = './test_1.pdf';
$batchId = null; // or specify an existing batch ID

try {
    $response = uploadFileToClassification($token, $classificationId, $filePath, $batchId);
    echo $response;
} catch (Exception $e) {
    echo "Failed to upload file: " . $e->getMessage();
}

?>

Responses

{
    "status": "uploaded",
    "classificationId": "classificationId",
    "batchId": "batchId",
    "files": [
        {
            "fileId": "fileId",
            "fileName": "file.pdf",
            "numberOfPages": 1,
            "url": "fileUrl"
        }
    ]
}
{
    "status": "error",
    "message": "Classification not found"
}
{
    "status": "error",
    "message": "Internal server error"
}
Previous4.3 Delete filesNext6. Get results

Last updated 16 hours ago

Was this helpful?

đŸ’ģ