Skip to main content

BuildAI

The standard API for egocentric data. $1/hr.

Quickstart

pip install buildai-data
from buildai import BuildAI

client = BuildAI(api_key="build_data_xxxx")
client.download(hours=10, output_dir="./data")

That's it. Ten shards download to ./data/. Each shard is one hour of egocentric video with frame-synced IMU data.

What you get

Each shard is a tar file containing 20 three-minute clips:

shard-000001.tar
  ├── 000001.mp4       # H.265, 1080p, 30fps, no audio
  ├── 000001.imu.npy   # (5400, 6) float32, frame-synced
  ├── 000002.mp4
  ├── 000002.imu.npy
  └── ...              # 20 clips total

Video: H.265, 1080p, 30fps, no audio. Three minutes per clip.

IMU: NumPy array, shape (5400, 6), float32. Columns: [acc_x, acc_y, acc_z, gyro_x, gyro_y, gyro_z]. Row N = frame N (30 fps x 180 seconds = 5400 frames). Units: accelerometer in m/s2, gyroscope in rad/s.

Shard size: ~2 GB per shard, ~1 hour of footage, 20 clips.

Shards are standard WebDataset format. If you already have a WebDataset pipeline, point it at the downloaded tars directly.

Download

from buildai import BuildAI

client = BuildAI(api_key="build_data_xxxx")

# Download 100 hours of data
client.download(hours=100, output_dir="/data/buildai/")

# Download more - you'll get new shards you haven't seen before
client.download(hours=1000, output_dir="/data/buildai/")

Every call gets new shards. You never receive the same shard twice. Shards are downloaded sequentially. Every researcher gets the same sequence.

For a named research grant, pass the dataset from your award onboarding email:

client.download(
    dataset="buildai-research-100k",
    grant="jhu-egocentric-2026",
    hours=100,
    output_dir="/data/buildai-research/",
)

Granted downloads are bounded by the award's expiry, hour cap, and frozen logical-hour inventory. Each hour is materialized as a directory containing 20 .mp4 / .imu.txt pairs. Opaque proxy URLs expire after one hour; Build AI bucket, factory/worker, and source-filename identities are never shared with the researcher. Granted hours are not billed to the researcher's account. The SDK checks both the byte size and MD5 of every video and IMU file before acknowledging the hour.

Download the source-free Parquet index independently when a dataframe is the more convenient starting point:

client.download_manifest(
    dataset="buildai-research-100k",
    grant="jhu-egocentric-2026",
    output_path="./buildai-research-100k.parquet",
)

Downloads resume on failure. If a shard already exists locally and the checksum matches, it's skipped. For a granted download, the SDK keeps the same server reservation until every allocated hour is acknowledged and raises an error on any incomplete page or failed acknowledgement, so batch jobs cannot silently treat a partial transfer as success. Re-run the same call with the same output directory to resume it.

Parameter Default Description
hours required Number of one-hour units to download
output_dir ./buildai-data Where to save shard tars or granted hour directories
dataset None Named dataset grant, when provided by Build AI
grant None Isolated research-grant tenant slug from onboarding
workers 8 Parallel download threads
verify_checksum True SHA-256 verification after download

Visualize

from buildai import BuildAI

BuildAI.visualize(source="/data/buildai/")

Opens a local web viewer in your browser. Shows a grid of all clips across your downloaded shards. Click any clip to watch the video with accelerometer and gyroscope data graphed below, time-synced.

No data is uploaded. Everything runs locally. Press Ctrl+C to stop.

No API key needed. visualize is a static method that works on any directory of shard tars.

Pricing

$1 per hour. Billed monthly. No minimum, no commitment.

API key

Get your API key at build.ai. You can also set it via environment variable:

export BUILDAI_API_KEY=build_data_xxxx
# Picks up BUILDAI_API_KEY automatically
client = BuildAI()

Account

info = client.account
print(info["total_hours"])
print(info["total_spent_usd"])
print(info["shards_remaining"])

Requirements

  • Python 3.10+
  • httpx (HTTP client)
  • numpy (IMU data)

Metadata

Release files for buildai-data 0.4.2

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for buildai-data 0.4.2
File Size Uploaded Provenance
buildai_data-0.4.2.tar.gz 173.2 kB Without provenance Details

Built distribution (wheel)

Table of built distributions (wheels) for buildai-data 0.4.2
File Interpreter ABI Platform
buildai_data-0.4.2-py3-none-any.whl Python 3 none any Details

Total release size: 196.1 kB

Release files / buildai_data-0.4.2.tar.gz

Download URL buildai_data-0.4.2.tar.gz
Size 173.2 kB
Tags Source
SHA-256 checksum
How to use checksums
34c18887eaa178084dbe3139ceb356326ecdec4fccae19c72d3e174df491086e
BLAKE2b-256 checksum
How to use checksums
32036569e21e78eaf615230adda3383e7d2d5bdafb41d1c76626ad9434e2f8fe
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Release files / buildai_data-0.4.2-py3-none-any.whl

Download URL buildai_data-0.4.2-py3-none-any.whl
Size 22.9 kB
Tags Python 3
SHA-256 checksum
How to use checksums
cb8002323e4ed4bb269c4060fb2742e119a45680b83cbd593d7492ce166abd0c
BLAKE2b-256 checksum
How to use checksums
cb92b2f58a66b7d2b88f321ce9757a95056c8249d5fbf54005e2cc40b2d5510d
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.1.0 CPython/3.13.14

Security for buildai-data 0.4.2

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

No provenance found

None of the files in this release were uploaded with provenance metadata.

A note on package security

PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.

To learn more about protecting yourself from malicious actors, visit our package security documentation.

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page