Product / sandbox API

One lifecycle for persistent sandboxes.

Wildflower Computer is a provider-neutral sandbox API for 12 supported backends: AWS AgentCore, Blaxel, ASCII Box, Cloudflare Sandbox, E2B, Novita Agent Sandbox, Daytona, Modal, Runloop, Smol, Fly.io Sprites, and Vercel Sandbox.

What the sandbox API normalizes

Applications call the same four operations for every supported provider. Provider selection is explicit when a sandbox is created, and the returned routeable ID sends later calls back to that same provider-native resource.

Create

POST /v1/sandboxes creates a persistent sandbox.

Get

GET /v1/sandboxes/{id} reads normalized state.

Execute

POST /v1/sandboxes/{id}/exec runs a command in place.

Delete

DELETE /v1/sandboxes/{id} removes the selected sandbox.

Discover provider capabilities

GET /v1/providers returns the stable ID, display name, normalized published price, image mode, timeout mode, output-stream behavior, and supported lifecycle capabilities for each configured provider. It requires the Wildflower Computer API key but no provider credential.

Retry creates safely

Send a caller-generated Idempotency-Key with create requests. A completed request replayed with the same body and non-secret provider connection context returns the original sandbox; conflicting input, a concurrent attempt, or an uncertain earlier outcome fails closed instead of dispatching another provider create.

A language-independent lifecycle

The generated SDKs call this JSON-over-HTTP contract. The same API remains available directly from any language that can make HTTP requests.

terminal
export WILDFLOWER_URL="http://localhost:8080"export WILDFLOWER_API_KEY="<your-wildflower-api-key>"export PROVIDER_API_KEY="$E2B_API_KEY"sandbox_id=$(  curl -fsS "$WILDFLOWER_URL/v1/sandboxes" \    -H "Authorization: Bearer $WILDFLOWER_API_KEY" \    -H "Content-Type: application/json" \    -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \    -H "Idempotency-Key: logical-create-42" \    --data '{"provider":"e2b","image":"base","timeout":300}' |  jq -r '.id')curl -fsS "$WILDFLOWER_URL/v1/sandboxes/$sandbox_id/exec" \  -H "Authorization: Bearer $WILDFLOWER_API_KEY" \  -H "Content-Type: application/json" \  -H "X-Provider-Api-Key: $PROVIDER_API_KEY" \  --data '{"command":"echo hello > /tmp/hello && cat /tmp/hello"}'curl -fsS -X DELETE "$WILDFLOWER_URL/v1/sandboxes/$sandbox_id" \  -H "Authorization: Bearer $WILDFLOWER_API_KEY" \  -H "X-Provider-Api-Key: $PROVIDER_API_KEY"

Two authentication boundaries

Authorization: Bearer <key> authenticates the application to Wildflower Computer. X-Provider-Api-Key carries the customer-owned credential for the selected provider. Blaxel also requires non-secret workspace routing context in X-Provider-Workspace.

Provider profiles can be connected once per project. PostgreSQL mode encrypts their credentials at rest; static local mode retains them only in process memory. Inline credentials remain available as ephemeral per-request overrides.

What stays provider-specific

Wildflower Computer does not flatten differences that affect behavior. Image meanings, timeout semantics, command-output handling, and sleep states remain documented in the provider compatibility matrix.

Current limitations

  • No automatic failover or migration between providers.
  • No hosted secret manager beyond project-scoped provider profiles.
  • No provider resale, billing layer, or marketplace.
  • No AI model execution or completed agent runtime.

Continue with the contract