Skip to main content
Submit a list of document URLs to Atlas for asynchronous bulk OCR extraction. Atlas queues each document, processes it, and stores the results against the returned batch_id. You then use that batch_id with GET /bulk/extracts to retrieve the extracted data once processing is complete.
The Bulk Service does not support callbacks. You must poll GET /bulk/extracts to retrieve results.

Endpoint

POST /v1/bulk/multiupload

Authentication

This endpoint requires a JWT token obtained from POST /v1/bulk/authtoken. Pass it in the Token request header.

Request headers

Token
string
required
JWT access token issued by POST /v1/bulk/authtoken.

Request body

product_type
string
required
Product type identifier for this batch. Example: "POC_CDL".
file_urls
array
required
List of document file objects to process. Each element must include both file_url and document_id.

Response

A 201 Created response contains an array — one entry per uploaded document — each sharing the same batch_id.
batch_id
string
The batch identifier assigned to all documents in this upload (e.g., "BATCH-30732-SIYKJ-20251121113228"). Use this value when polling GET /bulk/extracts.
document_id
string
Echo of the document_id you provided for this file.
file_uuid
string
Internal UUID Atlas assigned to the individual file. Useful for support queries.

Error responses

StatusMeaning
400Bad Request — one or more required parameters are missing or malformed.

Examples

curl --request POST \
  --url https://api.helloatlas.in/v1/bulk/multiupload \
  --header 'Content-Type: application/json' \
  --header 'Token: <YOUR_JWT_TOKEN>' \
  --data '{
    "product_type": "POC_CDL",
    "file_urls": [
      {
        "file_url": "https://files.s3.ap-south-1.amazonaws.com/uploads/files/sample1.jpg",
        "document_id": "1"
      },
      {
        "file_url": "https://files.s3.ap-south-1.amazonaws.com/uploads/files/sample2.jpg",
        "document_id": "2"
      },
      {
        "file_url": "https://files.s3.ap-south-1.amazonaws.com/uploads/files/sample3.jpg",
        "document_id": "3"
      }
    ]
  }'
201 Response
[
  {
    "batch_id": "BATCH-30732-SIYKJ-20251121113228",
    "document_id": "1",
    "file_uuid": "03f03421-c933-46fc-a30c-ffb3ea8afd1d"
  },
  {
    "batch_id": "BATCH-30732-SIYKJ-20251121113228",
    "document_id": "2",
    "file_uuid": "03f03422-c933-46fc-a30c-ffb3ea8afd1d"
  },
  {
    "batch_id": "BATCH-30732-SIYKJ-20251121113228",
    "document_id": "3",
    "file_uuid": "03f03423-c933-46fc-a30c-ffb3ea8afd1d"
  }
]
Save the batch_id immediately — all documents in the same upload share it, and you need it to fetch results.