Upload Multiple Documents In A Zip Folder And Get Batch Id

Endpoint Name: uploadbatch

Endpoint Details: This API is used to get a single batch id for all the invoices uploaded by the user in the form of a zip folder.

Authorization: Bearer token as header

Request Type

Method

URL

POST

URL/access/klearstack/uploadbatch

Request Body

Type

Params

Values

Description

POST

company_name

string

Name of the company

POST

username

string

Username for a particular user of a company

POST

password

string

Password for a particular user of a company

POST

file

Binary

Zip folder containing images/pdf

POST

POST

POST

processing_pref

document_type

invoice_type

string

string

string

Either “Speed” or “Accuracy” ” (It’s not case sensitive)

Type of document to be processed -

“Invoices”, “Receipts”, “PurchaseOrders”,“NACH”,“LoanAgreement” or “Insurances”.

“B2B” for invoices commissioned by a business to another business directly;

“B2C” for invoices commissioned by a business to a consumer.

“B2C” for Insurances.

POST

source_name

String

API

POST

priority_flag

String

true or false

POST

account_id

String

Account_id number

POST

set_reference_number

(Optional)

String

For adding document in Existing Set

POST

set_name

(Optional)

String

For assigning Name to document set, it cannot be updated after set is created

POST

create_new_set (Optional)

String

Flag needs to be True for creating new set, the param if set to True will create a new set with the given set_name and assign new set_reference_number to the document.

Shell

  • Request Body

curl -X POST "URL/access/klearstack/uploadbatch" \
  -H "Authorization: Bearer your_token_here" \
  -F "company_name=Replace_Company_Name_Here" \
  -F "username=Replace_User_Name_Here" \
  -F "password=Replace_Password_Here" \
  -F "processing_pref=Speed" \
  -F "document_type=Invoices" \
  -F "invoice_type=B2B" \
  -F "source_name=API" \
  -F "priority_flag=true" \
  -F "account_id=123456" \
  -F "set_reference_number=Ref123" \
  -F "set_name=MySet" \
  -F "create_new_set=true" \
  -F "file=@C:\Users\user\Downloads\batch.zip"

Python

  • Request Body

import requests

# API URL
url = "URL/access/klearstack/uploadbatch"

# Request payload
data = {
    'company_name': 'Replace_Company_Name_Here',
    'username': 'Replace_User_Name_Here',
    'password': 'Replace_Password_Here',
    'processing_pref': 'Speed',
    'document_type': 'Invoices',
    'invoice_type': 'B2B',
    'source_name': 'API',
    'priority_flag': 'true',
    'account_id': '123456',
    'set_reference_number': 'Ref123',
    'set_name': 'MySet',
    'create_new_set': 'true'
}

files = [
    ('file', ('batch.zip', open('C:\\Users\\user\\Downloads\\batch.zip', 'rb'), 'application/zip'))
]

headers = {
    'Authorization': 'Bearer your_token_here'
}

# Make the POST request
response = requests.post(url, headers=headers, data=data, files=files)

# Print the response
if response.status_code == 200:
    print(response.json())
else:
    print("Error:", response.text)

Java

  • Request Body

import okhttp3.*;
import java.io.File;
import java.io.IOException;

public class UploadBatchAPI {
    public static void main(String[] args) {
        OkHttpClient client = new OkHttpClient();

        // File to upload
        File file = new File("C:\\Users\\user\\Downloads\\batch.zip");

        // Create multipart request body
        MultipartBody requestBody = new MultipartBody.Builder()
                .setType(MultipartBody.FORM)
                .addFormDataPart("company_name", "Replace_Company_Name_Here")
                .addFormDataPart("username", "Replace_User_Name_Here")
                .addFormDataPart("password", "Replace_Password_Here")
                .addFormDataPart("processing_pref", "Speed")
                .addFormDataPart("document_type", "Invoices")
                .addFormDataPart("invoice_type", "B2B")
                .addFormDataPart("source_name", "API")
                .addFormDataPart("priority_flag", "true")
                .addFormDataPart("account_id", "123456")
                .addFormDataPart("set_reference_number", "Ref123")
                .addFormDataPart("set_name", "MySet")
                .addFormDataPart("create_new_set", "true")
                .addFormDataPart("file", "batch.zip",
                        RequestBody.create(MediaType.parse("application/zip"), file))
                .build();

        Request request = new Request.Builder()
                .url("URL/access/klearstack/uploadbatch")
                .post(requestBody)
                .addHeader("Authorization", "Bearer your_token_here")
                .build();

        try (Response response = client.newCall(request).execute()) {
            if (response.isSuccessful()) {
                System.out.println("Response: " + response.body().string());
            } else {
                System.out.println("Error: " + response.body().string());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

Node.js

  • Request Body

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

const url = 'URL/access/klearstack/uploadbatch';

const formData = new FormData();
formData.append('company_name', 'Replace_Company_Name_Here');
formData.append('username', 'Replace_User_Name_Here');
formData.append('password', 'Replace_Password_Here');
formData.append('processing_pref', 'Speed');
formData.append('document_type', 'Invoices');
formData.append('invoice_type', 'B2B');
formData.append('source_name', 'API');
formData.append('priority_flag', 'true');
formData.append('account_id', '123456');
formData.append('set_reference_number', 'Ref123');
formData.append('set_name', 'MySet');
formData.append('create_new_set', 'true');
formData.append('file', fs.createReadStream('C:\\Users\\user\\Downloads\\batch.zip'));

axios.post(url, formData, {
    headers: {
        ...formData.getHeaders(),
        'Authorization': 'Bearer your_token_here'
    }
})
.then(response => console.log(response.data))
.catch(error => console.error('Error:', error.response ? error.response.data : error.message));

JavaScript (XMLHttpRequest)

  • Request Body

var formData = new FormData();
formData.append('company_name', 'Replace_Company_Name_Here');
formData.append('username', 'Replace_User_Name_Here');
formData.append('password', 'Replace_Password_Here');
formData.append('processing_pref', 'Speed');
formData.append('document_type', 'Invoices');
formData.append('invoice_type', 'B2B');
formData.append('source_name', 'API');
formData.append('priority_flag', 'true');
formData.append('account_id', '123456');
formData.append('set_reference_number', 'Ref123');
formData.append('set_name', 'MySet');
formData.append('create_new_set', 'true');

// File input (Replace 'fileInput' with the actual file input element in your HTML)
var fileInput = document.querySelector('input[type="file"]'); 
if (fileInput.files.length > 0) {
    formData.append('file', fileInput.files[0]);
}

var xhr = new XMLHttpRequest();
xhr.open("POST", "URL/access/klearstack/uploadbatch", true);
xhr.setRequestHeader("Authorization", "Bearer your_token_here");

// Handle response
xhr.onreadystatechange = function () {
    if (xhr.readyState === XMLHttpRequest.DONE) {
        if (xhr.status === 200) {
            console.log("Response:", xhr.responseText);
        } else {
            console.error("Error:", xhr.responseText);
        }
    }
};

// Send request
xhr.send(formData);

API Response

Status

Example Response

200

{

"Function successfully executed!": "169a4df0-52c4-4835-8bb4-10296c8e5e3a",

"release_version": "7.8.9",

"set_reference_number":"12345"

}

400

{"error": "Please provide username."}

400

{"error": "Please provide password."}

401

{"error": "Incorrect username or password."}

500

{"error": "Something went wrong. Please try again later."}

Last updated