Python SDK
Copy
Ask AI
pip install buildai-sdk
Copy
Ask AI
from buildai import Client
client = Client() # reads BUILDAI_API_KEY from env
# or: client = Client(api_key="build_live_...")
Factories
Copy
Ask AI
factories = client.factories.list(page_size=50)
factory = client.factories.get("factory-id")
workers = client.factories.workers("factory-id", page_size=50)
Workers
Copy
Ask AI
workers = client.workers.list(page_size=50)
worker = client.workers.get("worker-id")
Clips
Copy
Ask AI
# List and filter
clips = client.clips.list(factory_id="...", page_size=25)
clips = client.clips.list(worker_id="...", page_size=25)
# Detail
clip = client.clips.get("clip-id")
print(clip.clip_id, clip.duration_seconds, clip.recorded_at)
# Frames
frames = client.clips.frames("clip-id", page_size=50)
for frame in frames.items:
print(frame.frame_index, frame.timestamp_seconds, f"{frame.width_pixels}x{frame.height_pixels}")
# Descriptions
desc = client.clips.description("clip-id")
# Signed media URLs (video, audio, IMU)
video = client.clips.video("clip-id")
audio = client.clips.audio("clip-id")
imu = client.clips.imu("clip-id")
print(video.signed_url) # temporary HTTPS URL
Search
Copy
Ask AI
# Text search
results = client.search("someone welding")
for match in results.items:
print(match.clip_id, match.similarity_score, match.match_summary)
# With filters
results = client.search.query(
query_text="assembly line",
factory_ids=["..."],
worker_ids=["..."],
created_after="2025-01-01",
created_before="2025-06-01",
collection_id="...",
page_size=20,
)
# Image search
results = client.search.query(query_image_base64="BASE64_STRING")
# Find similar to a clip or frame
similar = client.search.similar(reference_clip_id="...")
similar = client.search.similar(reference_frame_id="...")
similar = client.search.similar(reference_image_base64="...")
Embeddings
Copy
Ask AI
# Single clip vector
embedding = client.embeddings.get_clip_embedding("clip-id")
print(embedding.vector_dimensions, len(embedding.vector))
# Batch fetch
batch = client.embeddings.batch(
entity_ids=["id1", "id2", "id3"],
entity_type="clip",
include_vector=True,
)
# Query by text
results = client.embeddings.query(query_text="soldering")
# Find similar
similar = client.embeddings.similar(entity_id="...", entity_type="clip")
Datasets
Copy
Ask AI
# List released datasets
datasets = client.datasets.list()
for ds in datasets.items:
print(ds.name, ds.clip_count)
# Get detail
dataset = client.datasets.get("egocentric-100k")
# WebDataset shard URLs (for training pipelines)
urls = client.datasets.webdataset_urls("egocentric-100k")
print(f"{len(urls)} shards")
# List individual shard artifacts
shards = client.datasets.list_webdataset_artifacts("egocentric-100k", page_size=10)
for shard in shards.items:
print(shard.shard_path, shard.clip_count, shard.size_bytes)
Analyze
Copy
Ask AI
# Novelty — how novel is an image vs existing data
report = client.analyze.novelty(image_url="https://...")
print(report.aggregate_score)
# Diversity metrics
diversity = client.analyze.diversity()
# Service health
status = client.analyze.status()
print(status.service, status.status)
Pagination
All list methods return aPage with cursor-based pagination:
Copy
Ask AI
page = client.clips.list(page_size=50)
for clip in page.items:
print(clip.clip_id)
# Next page
if page.pagination.has_more:
next_page = client.clips.list(page_size=50, cursor=page.pagination.cursor)
Authentication
The client readsBUILDAI_API_KEY from the environment by default. You can also pass it directly:
Copy
Ask AI
client = Client(api_key="build_live_...")
X-API-Key header and Authorization: Bearer are supported by the API. The SDK uses Bearer.