Skip to main content
Avala provides multiple ways to ingest data depending on your dataset size, infrastructure, and automation needs. This page covers each import method, when to use it, and how to build automated data pipelines.

Import methods overview

Managed uploads use the allowance of the owning personal account or organization. The configured default organization allowance is 100 GiB, but the quota API reports the actual limit for each owner. See Upload local files for usage, reservations, and file limits. A connected customer bucket is a separate storage path; it does not receive a managed-upload allowance.

Mission Control upload

Use the Add Dataset wizard to select an owner and data type, choose Local files, and upload files accepted for that type. Wait for every selected file to finish before submitting the dataset for indexing. For directory trees or scripted recovery, use the CLI or SDK. Keep original files available while a browser upload is pending and follow any recovery prompt shown by the wizard. See the upload guide.

Presigned URL upload

Presigned URLs let you transfer files directly to the storage selected by Avala without supplying your own storage credentials. The API admits each upload against the owner’s allowance and returns the transfer contract.

How it works

  1. Request a grant from POST /datasets/manual-upload/file-upload-url/ with the dataset name, relative file path, and byte length. Protocol v2 requests also carry upload_protocol_version: 2 and a stable dataset_upload_uid. Keep the same owner and batch identity through finalization.
  2. Follow the returned method. A legacy POST requires the returned form fields. A managed PUT requires its URL and headers. MULTIPART requires part grants, uploads using the returned geometry, and completion with the uploaded part evidence. Do not treat every response as an S3 POST form.
  3. Complete managed objects before finalizing the dataset through POST /datasets/manual-upload/. File transfer, dataset creation, and indexing are separate steps.
The current Python SDK and CLI handle this negotiation and recovery. For a custom client, use the interactive API reference for request and response schemas. The server selects the available storage route; a new client does not itself enable an unavailable route or increase an allowance.

Example: Upload with the CLI

Add --organization-uid "$AVALA_ORGANIZATION_UID" for an organization-owned dataset. Resume is enabled by default. Rerun the same command after an interruption with the original source files and saved upload state. See the CLI flags and quota behavior or use client.datasets.create_from_local().

Cloud storage integration

Bring your own bucket (BYOB) when source data should remain in your S3 or GCS bucket and region. Avala indexes the existing objects in place instead of uploading another copy into managed storage. Your bucket permissions, provider limits, and dataset indexing requirements still apply.

Setup

  1. Configure access to your bucket using the Cloud Storage guide.
  2. Save and verify the storage configuration under the organization that will own the dataset.
  3. Create a dataset from that configuration and, optionally, a narrower prefix within it.

Example: Import an existing bucket

For this S3 example, set AVALA_STORAGE_CONFIG_UID to your verified storage configuration, AVALA_ORGANIZATION_UID to its owning organization, and AVALA_S3_ROLE_ARN to the IAM role configured for bucket access. The API key’s user must be a member of that organization. Saved configurations supply bucket settings, but do not return credentials or the role ARN; pass the role separately for this BYOB import.
For local managed uploads, use avala datasets upload without --storage-config or --aws-profile. Those options do not select a destination for the managed-upload command.

MCAP Import

MCAP files contain synchronized multi-sensor data (cameras, LiDAR, IMU). Avala parses MCAP files to extract and align sensor streams for annotation.

Supported Message Types

Import Workflow

  1. Upload MCAP files via the SDK or presigned URLs
  2. Avala processes the file, extracting camera frames and point cloud scans
  3. Sensor streams are synchronized by timestamp
  4. Camera images and projected LiDAR data appear together in the annotation editor
For detailed MCAP setup, see the MCAP / ROS integration guide.

Building Import Pipelines

For production workflows, automate data ingestion so new data flows into Avala as it is collected.

Pipeline Architecture

Example: Automated Ingestion with Webhooks

Combine the CLI upload with webhooks to build a fully automated pipeline:
Schedule this script with cron, Airflow, or any task scheduler to periodically ingest new data.

Example: Watch Directory and Upload

Choosing an Import Method

Use this decision tree to select the right approach:

Next Steps

Cloud Storage

Detailed S3 and GCS configuration for bring-your-own-storage.

MCAP / ROS

Import multi-sensor recordings with camera, LiDAR, and IMU data.

Python SDK

Install the Python SDK and start uploading data programmatically.

Webhooks

Set up event notifications to trigger downstream pipelines.