API Category

Document Upload

Document Upload APIs ingest files into NeuDocIQ storage and metadata tracking, preparing them for parse and extraction workflows.

Business Use Case

Use upload APIs when ingesting documents directly from client apps, partner integrations, or internal operations pipelines.

When To Use

  • You need API-based file ingestion with client/document typing.
  • You need bulk uploads with upload batch status tracking.
  • You want consistent source-of-truth document IDs for downstream APIs.

Endpoint Directory

Endpoint Details

POST

Upload a single document

Upload a single document with client_id and document_type. The document will be stored in blob storage with path structure: {client_id}/{document_type}/{YYYY-MM-DD}/{filename} If a document with the same blob_url already exists, it will be updated instead of creating a duplicate.

document-upload

Endpoint URL

https://api.neudociq.com/api/v1/documents/upload

Overview

Upload a single document with client_id and document_type. The document will be stored in blob storage with path structure: {client_id}/{document_type}/{YYYY-MM-DD}/{filename} If a document with the same blob_url already exists, it will be updated instead of creating a duplicate.

Purpose

Upload a single document

Use Case

Use multipart uploads from browsers or server-side form-data clients when sending files.

Authentication

  • APIKeyHeader: API key in header (X-API-Key).

Header Example

http
X-API-Key: ndq_test_api_key

Headers

No parameters.

Query Parameters

No parameters.

Path Parameters

No parameters.

Request Fields

FieldTypeRequiredDescriptionExample
client_idstringRequiredClient identifierclient_id_value
document_typestringRequiredDocument type (e.g., invoice, receipt, contract)document_type_value
filestringRequiredDocument file to uploadfile_value

Request Default

Copy-ready examples with real endpoint paths and authentication placeholders.

javascript
const url = "https://api.neudociq.com/api/v1/documents/upload";
const formData = new FormData();
formData.append('client_id', "client_id_value");
formData.append('document_type', "document_type_value");
formData.append('file', "file_value");
formData.append('metadata', "string_value");

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'X-API-Key': 'ndq_test_api_key',
  },
  body: formData,
});

const data = await response.json();
console.log(data);

Best Practices

  • Validate required fields client-side before sending requests.
  • Log request identifiers and HTTP status codes for supportability.
  • Retry only when the operation is safe or your workflow is idempotent.
  • Check file size and content type before upload to avoid unnecessary transfer failures.
GET

Get upload batch status

Get the status and progress of a bulk upload batch. Returns: - Upload progress percentage - Number of uploaded and failed files - List of uploaded documents - List of failed uploads with error details

document-upload

Endpoint URL

https://api.neudociq.com/api/v1/documents/upload/batch/{upload_batch_id}

Overview

Get the status and progress of a bulk upload batch. Returns: - Upload progress percentage - Number of uploaded and failed files - List of uploaded documents - List of failed uploads with error details

Purpose

Get upload batch status

Use Case

This endpoint is read-only and should be safe to call repeatedly for the same resource identifier.

Authentication

  • APIKeyHeader: API key in header (X-API-Key).

Header Example

http
X-API-Key: ndq_test_api_key

Headers

No parameters.

Query Parameters

No parameters.

Path Parameters

NameTypeRequiredDescriptionExample
upload_batch_idstringRequired--

Request Fields

No request body fields are defined for this endpoint.

Request Default

Copy-ready examples with real endpoint paths and authentication placeholders.

javascript
const url = "https://api.neudociq.com/api/v1/documents/upload/batch/{upload_batch_id}";
const response = await fetch(url, {
  method: 'GET',
  headers: {
    'X-API-Key': 'ndq_test_api_key',
  },
});

const data = await response.json();
console.log(data);

Best Practices

  • Validate required fields client-side before sending requests.
  • Log request identifiers and HTTP status codes for supportability.
  • Retry only when the operation is safe or your workflow is idempotent.
  • Check file size and content type before upload to avoid unnecessary transfer failures.
  • Poll status endpoints with backoff and stop polling once the batch reaches a terminal state.
POST

Upload multiple documents

Upload multiple documents in bulk with background processing. Features: - Unlimited file uploads with background processing - Configurable concurrency control - Progress tracking via batch status endpoint - Optional webhook notification on completion Documents will be stored in blob storage with path structure: {client_id}/{document_type}/{YYYY-MM-DD}/{filename} Use the returned upload_batch_id to check upload progress.

document-upload

Endpoint URL

https://api.neudociq.com/api/v1/documents/upload/bulk

Overview

Upload multiple documents in bulk with background processing. Features: - Unlimited file uploads with background processing - Configurable concurrency control - Progress tracking via batch status endpoint - Optional webhook notification on completion Documents will be stored in blob storage with path structure: {client_id}/{document_type}/{YYYY-MM-DD}/{filename} Use the returned upload_batch_id to check upload progress.

Purpose

Upload multiple documents

Use Case

Use multipart uploads from browsers or server-side form-data clients when sending files.

Authentication

  • APIKeyHeader: API key in header (X-API-Key).

Header Example

http
X-API-Key: ndq_test_api_key

Headers

No parameters.

Query Parameters

No parameters.

Path Parameters

No parameters.

Request Fields

FieldTypeRequiredDescriptionExample
client_idstringRequiredClient identifierclient_id_value
document_typestringRequiredDocument type (e.g., invoice, receipt, contract)document_type_value
filesstring[]RequiredList of document files to upload["string_value"]
filesstring[]RequiredList of document files to upload["string_value"]

Request Default

Copy-ready examples with real endpoint paths and authentication placeholders.

javascript
const url = "https://api.neudociq.com/api/v1/documents/upload/bulk";
const formData = new FormData();
formData.append('client_id', "client_id_value");
formData.append('document_type', "document_type_value");
formData.append('files', "[\"string_value\"]");
formData.append('files', "[\"string_value\"]");
formData.append('batch_name', "string_value");
formData.append('webhook_url', "string_value");
formData.append('metadata', "string_value");

const response = await fetch(url, {
  method: 'POST',
  headers: {
    'X-API-Key': 'ndq_test_api_key',
  },
  body: formData,
});

const data = await response.json();
console.log(data);

Best Practices

  • Validate required fields client-side before sending requests.
  • Log request identifiers and HTTP status codes for supportability.
  • Retry only when the operation is safe or your workflow is idempotent.
  • Check file size and content type before upload to avoid unnecessary transfer failures.