Skip to main content

How This Helps

The local file upload workflow lets you create datasets directly from files on your machine without needing cloud storage. It’s a four-step process: create the dataset, open a transaction, upload your files, then trigger processing.
Use status_new for all status checks. The status field is being retired. See Retrieve Dataset Status.

Prerequisites

  • A Visual Layer Cloud account with API access.
  • A valid JWT token. See Authentication.
  • Images or video files available on your local machine.
For large datasets (hundreds of files or more), uploading from an S3 bucket is simpler and more reliable. See Create a Dataset from S3. Archives (.zip, .tar, .tar.gz) are not supported for initial dataset creation — use individual files or S3 instead.

Upload Workflow

Creating a dataset from local files follows a four-step ingestion process.
  1. Create the dataset to get a dataset_id.
  2. Open a transaction to get a transaction_id.
  3. Upload your files to the transaction — one or more requests, each with multiple files.
  4. Trigger processing to start indexing.

Step 1: Create the Dataset

Create a new empty dataset and receive a dataset_id.

Example

Response

Save the dataset_id — all subsequent steps require it.

Step 2: Open a Transaction

Open a file upload transaction to receive a transaction_id.

Example

Response


Step 3: Upload Files

Upload files to the open transaction. Each request uses the files form field. You can send multiple files per request and make multiple requests to the same transaction_id before triggering processing.

Single Request (few files)

A successful upload returns HTTP 202 Accepted.

Large Batches (hundreds of files)

Split uploads across multiple requests to the same transaction. Send batches of approximately 50 files per request to avoid hitting request size limits.
Do not call process_files until all batches are uploaded.

Step 4: Trigger Processing

Once all files are uploaded, trigger ingestion to start indexing.

Example

A successful request returns HTTP 202 Accepted. Processing runs asynchronously.

Monitor Dataset Status

Poll the dataset status endpoint to track progress. The dataset moves through INDEXING and reaches READY when complete.
See Retrieve Dataset Status for full status documentation.

Python Example (with batched upload)

The following example runs the complete four-step workflow with batched uploads for large file sets.

Response Codes

See Error Handling for the error response format and Python handling patterns.

Create a Dataset from S3

Recommended for large datasets — point to an S3 folder instead of uploading files directly.

Add Media to an Existing Dataset

Add new files — including archives — to an already-indexed dataset.