SDKs
Python (pip install flightbox — ships with the CLI)
from flightbox import Flightbox # AsyncFlightbox for asyncio
fb = Flightbox("https://app.flightbox.co", api_key="fb_…")
suite = fb.create_suite("checkout", open("checkout.yaml").read())
batch = fb.run(suite["id"], base_url="https://preview-42.vercel.app")
result = fb.wait(batch["batch_id"])
for run in result["runs"]:
print(run["run_id"], run["success"], run["failure_class"])
fb.pdf(batch["batch_id"])
JavaScript / TypeScript (npm install @flightbox/sdk — zero dependencies)
import { Flightbox } from "@flightbox/sdk";
const fb = new Flightbox({ baseUrl: "https://app.flightbox.co", apiKey: "fb_…" });
const suite = await fb.createSuite("checkout", yamlSpec);
const { batch_id } = await fb.run(suite.id, { baseUrl: previewUrl });
const result = await fb.wait(batch_id);
Usage, budgets, monitoring (both SDKs)
fb.usage() # runs + net spend this month, by agent class
fb.set_budget(500.0) # your hard stop; None = uncapped
fb.monitor(suite_id, cadence="daily", webhook_url=slack) # Monitored Journey
fb.schedules(); fb.unmonitor(schedule_id)
Both SDKs are thin, typed, 1:1 wrappers over the REST API — auth, errors
(FlightboxError with status + detail), and polling. No magic.