# Upload Multiple Documents In A Zip Folder And Get Batch Id

Endpoint Name: `uploadbatch`

Request type : `POST`

Authorization: Bearer token as header

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.

### Request Type

<table data-header-hidden><thead><tr><th width="140.54547119140625"></th><th></th></tr></thead><tbody><tr><td>Method</td><td>URL</td></tr><tr><td>POST</td><td><code>URL/access/klearstack/uploadbatch</code></td></tr></tbody></table>

### Request Body

<table data-header-hidden><thead><tr><th width="173"></th><th width="103"></th><th width="94.2728271484375"></th><th></th></tr></thead><tbody><tr><td>Params</td><td>Values</td><td>Required</td><td>Description</td></tr><tr><td>company_name</td><td>string</td><td>Yes</td><td>Name of the company.</td></tr><tr><td>username</td><td>string</td><td>Yes</td><td>Username for a particular user of a company.</td></tr><tr><td>password</td><td>string</td><td>Yes</td><td>Password for a particular user of a company.</td></tr><tr><td>file</td><td>Binary</td><td>Yes</td><td>Zip folder containing images/pdf.</td></tr><tr><td>processing_pref</td><td>string</td><td>Yes</td><td>Either “Speed” or “Accuracy” ” (It’s not case sensitive).</td></tr><tr><td>document_type</td><td>string</td><td>Yes</td><td><p>Type of document to be processed - </p><p>“Invoices”, “Receipts”,  “PurchaseOrders”,“NACH”,“LoanAgreement” or “Insurances”.</p></td></tr><tr><td>invoice_type</td><td>string</td><td>Yes</td><td><p>“B2B” for invoices commissioned by a business to another business directly;</p><p>“B2C” for invoices commissioned by a business to a consumer. </p><p>“B2C” for Insurances.</p></td></tr><tr><td>source_name</td><td>String</td><td>No</td><td>API</td></tr><tr><td>priority_flag</td><td>String</td><td>No</td><td>true or false </td></tr><tr><td>account_id</td><td>String</td><td>No</td><td>Account_id number</td></tr><tr><td>set_reference_number</td><td>String</td><td>No</td><td>For adding document in Existing Set</td></tr><tr><td>set_name</td><td>String</td><td>No</td><td>For assigning Name to document set, it cannot be updated after set is created.</td></tr><tr><td>create_new_set</td><td>String</td><td>No</td><td>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.</td></tr></tbody></table>

### Shell

* Request Body

```sh
curl --location "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 (Requests)

* Request Body

```python
import requests

url = "URL/access/klearstack/uploadbatch"

payload = {'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',('C:\Users\user\Downloads\batch.zip',open('C:\\Users\\user\\Downloads\\batch.zip','rb'),'application/zip'))
]
headers = {
  'Authorization': 'Bearer your_token_here'
}

response = requests.request("POST", url, headers=headers, data=payload, files=files)

print(response.text)

```

### Java (OkHttp)

* Request Body

```java
OkHttpClient client = new OkHttpClient();

RequestBody body = 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/octet-stream"),
            new File("C:\\Users\\user\\Downloads\\batch.zip")
        )
    )
    .build();

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

Response response = client.newCall(request).execute();
```

### Node.js (Axios)

* Request Body

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

let 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'));

let config = {
  method: 'post',
  maxBodyLength: Infinity,
  url: 'URL/access/klearstack/uploadbatch',
  headers: {
    'Authorization': 'Bearer your_token_here',
    ...formData.getHeaders()
  },
  data: formData
};

axios.request(config)
  .then((response) => {
    console.log(JSON.stringify(response.data));
  })
  .catch((error) => {
    console.log(error);
  });

```

### JavaScript (XHR)

* Request Body

```javascript
// WARNING: For POST requests, body is set to null by browsers.

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");
formData.append("file", fileInput.files[0], "batch.zip");

var xhr = new XMLHttpRequest();
xhr.withCredentials = true;

xhr.addEventListener("readystatechange", function() {
  if(this.readyState === 4) {
    console.log(this.responseText);
  }
});

xhr.open("POST", "URL/access/klearstack/uploadbatch");
xhr.setRequestHeader("Authorization", "Bearer your_token_here");

xhr.send(formData);

```

### API Response

<table data-header-hidden><thead><tr><th width="103"></th><th></th></tr></thead><tbody><tr><td>Status</td><td>Example Response</td></tr><tr><td>200</td><td><p><code>{</code></p><p><code>"Function successfully executed!": "169a4df0-52c4-4835-8bb4-10296c8e5e3a",</code></p><p><code>"release_version": "7.8.9",</code></p><p><code>"set_reference_number":"12345"</code></p><p><code>}</code></p></td></tr><tr><td>400</td><td><code>{"error": "Please provide username."}</code></td></tr><tr><td>400</td><td><code>{"error": "Please provide password."}</code></td></tr><tr><td>401</td><td><code>{"error": "Incorrect username or password."}</code></td></tr><tr><td>500</td><td><code>{"error": "Something went wrong. Please try again later."}</code></td></tr></tbody></table>


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://klearstack.gitbook.io/klearstack-api-documentation/upload-documents/upload-multiple-documents-in-a-zip-folder-and-get-batch-id.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
